// vim: syntax=cpp /* * Copyright (C) 2007-2019 Xagasoft, All rights reserved. * * This file is part of the libbu++ library and is released under the * terms of the license contained in the file LICENSE. */ #include "bu/hash.h" #include "bu/array.h" #include "bu/sio.h" using Bu::sio; suite Array { test general { Bu::Array ai; ai.append( 5 ); ai.append( 10 ); unitTest( ai.getSize() == 2 ); unitTest( ai.getCapacity() == 10 ); unitTest( ai[0] == 5 ); unitTest( ai[1] == 10 ); } test iterate1 { Bu::Array ai; for( int j = 0; j < 10; j++ ) ai.append( j ); int j = 0; for( Bu::Array::iterator i = ai.begin(); i != ai.end(); i++ ) unitTest( (*i) == j++ ); unitTest( j == 10 ); const Bu::Array &ci = ai; j = 0; for( Bu::Array::const_iterator i = ci.begin(); i; i++ ) unitTest( (*i) == j++ ); unitTest( j == 10 ); } test iterate2 { Bu::Array ai; for( Bu::Array::iterator i = ai.begin(); i != ai.end(); i++ ) unitFailed("Empty lists shouldn't be iterated through."); for( Bu::Array::iterator i = ai.begin(); i; i++ ) unitFailed("Empty lists shouldn't be iterated through."); } test copy { typedef Bu::Hash StrHash; typedef Bu::Array StrHashArray; StrHash h1; h1["Hi"] = "Yo"; h1["Bye"] = "Later"; StrHash h2; h2["Test"] = "Bloop"; h2["Foo"] = "ooF"; StrHashArray a1; a1.append( h1 ); a1.append( h2 ); StrHashArray a2(a1); unitTest( a2[0].get("Hi") == "Yo" ); unitTest( a2[0].get("Bye") == "Later" ); unitTest( a2[1].get("Test") == "Bloop" ); unitTest( a2[1].get("Foo") == "ooF" ); StrHashArray a3; a3 = a1; unitTest( a3[0].get("Hi") == "Yo" ); unitTest( a3[0].get("Bye") == "Later" ); unitTest( a3[1].get("Test") == "Bloop" ); unitTest( a3[1].get("Foo") == "ooF" ); } test insert { Bu::Array aInts; aInts.insert( aInts.end(), 4 ); aInts.insert( aInts.begin(), 1 ); aInts.insert( aInts.end(), 5 ); aInts.insert( aInts.begin()+1, 3 ); aInts.insert( aInts.begin()+1, 2 ); aInts.insert( aInts.begin(), 0 ); for( int j = 0; j < 6; j++ ) { unitTest( aInts[j] == j ); } } test setSize { Bu::Array aStr( 3 ); aStr.setSize( 3 ); aStr[1] = "Hello"; aStr[0] = aStr[1].clone(); } }