summaryrefslogtreecommitdiffstats
path: root/indexlib/tests/stringarray-test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indexlib/tests/stringarray-test.cpp')
-rw-r--r--indexlib/tests/stringarray-test.cpp104
1 files changed, 104 insertions, 0 deletions
diff --git a/indexlib/tests/stringarray-test.cpp b/indexlib/tests/stringarray-test.cpp
new file mode 100644
index 000000000..d0f5ecefa
--- /dev/null
+++ b/indexlib/tests/stringarray-test.cpp
@@ -0,0 +1,104 @@
+#include <boost/test/unit_test.hpp>
+using namespace ::boost::unit_test;
+
+#include <unistd.h>
+#include "stringarray.h"
+
+namespace stringarray_test {
+
+const char* fname = "test.stringarray-delete-me";
+void cleanup() {
+ stringarray::remove( fname );
+}
+
+void test_size() {
+ stringarray test( fname );
+ test.add( "one" );
+ test.add( "one" );
+ test.add( "one" );
+ test.add( "one" );
+ //BOOST_CHECK_EQUAL( test.size(), 4 );
+ cleanup();
+}
+
+void test_put_recover() {
+ stringarray test( fname );
+ BOOST_CHECK_EQUAL( test.add( "one" ), 0 );
+ BOOST_CHECK_EQUAL( test.add( "two" ), 1 );
+ BOOST_CHECK_EQUAL( test.add( "three" ), 2 );
+ BOOST_CHECK_EQUAL( test.add( "four" ), 3 );
+
+ BOOST_CHECK_EQUAL( test.get( 0 ), "one" );
+ BOOST_CHECK_EQUAL( test.get( 1 ), "two" );
+ BOOST_CHECK_EQUAL( test.get( 2 ), "three" );
+ BOOST_CHECK_EQUAL( test.get( 3 ), "four" );
+
+ cleanup();
+}
+
+void test_persistent() {
+ {
+ stringarray test( fname );
+ BOOST_CHECK_EQUAL( test.add( "one" ), 0 );
+ BOOST_CHECK_EQUAL( test.add( "two" ), 1 );
+ BOOST_CHECK_EQUAL( test.add( "three" ), 2 );
+ BOOST_CHECK_EQUAL( test.add( "four" ), 3 );
+ }
+ {
+ stringarray test( fname );
+
+ //BOOST_CHECK_EQUAL( test.size(), 4 );
+ BOOST_CHECK_EQUAL( test.get( 0 ), "one" );
+ BOOST_CHECK_EQUAL( test.get( 1 ), "two" );
+ BOOST_CHECK_EQUAL( test.get( 2 ), "three" );
+ BOOST_CHECK_EQUAL( test.get( 3 ), "four" );
+
+ }
+ cleanup();
+}
+
+void cstr() {
+ stringarray test( fname );
+
+ test.add( "one" );
+ test.add( "two" );
+ test.add( "three" );
+ test.add( "four" );
+
+ BOOST_CHECK( !strcmp( test.get_cstr( 0 ), "one" ) );
+ BOOST_CHECK( strcmp( test.get_cstr( 0 ), "not one" ) );
+ BOOST_CHECK( !strcmp( test.get_cstr( 1 ), "two" ) );
+ BOOST_CHECK( !strcmp( test.get_cstr( 2 ), "three" ) );
+ BOOST_CHECK( !strcmp( test.get_cstr( 3 ), "four" ) );
+
+ cleanup();
+}
+
+void erase() {
+ stringarray test( fname );
+
+ test.add( "one" );
+ test.add( "two" );
+ test.add( "three" );
+ test.add( "four" );
+
+ test.erase( 1 );
+ BOOST_CHECK_EQUAL( test.get( 0 ), "one" );
+ BOOST_CHECK_EQUAL( test.get( 1 ), "three" );
+ BOOST_CHECK_EQUAL( test.size(), 3u );
+ cleanup();
+}
+
+
+test_suite* get_suite() {
+ test_suite* test = BOOST_TEST_SUITE( "Memvector tests" );
+ test->add( BOOST_TEST_CASE( &test_size ) );
+ test->add( BOOST_TEST_CASE( &test_put_recover ) );
+ test->add( BOOST_TEST_CASE( &test_persistent ) );
+ test->add( BOOST_TEST_CASE( &cstr ) );
+ test->add( BOOST_TEST_CASE( &erase ) );
+ return test;
+
+}
+
+} //namespace