From: <bl...@us...> - 2003-04-28 08:45:47
|
Update of /cvsroot/cpptool/rfta/src/rftaparser In directory sc8-pr-cvs1:/tmp/cvs-serv16435/src/rftaparser Modified Files: EnumeratorTest.cpp EnumeratorTest.h Log Message: * renamed enumStl to enumStlRange for iterator range access (ambiguous overloard if VC6 work-around is not enabled) * fixed enumMapKeys & enumMapValues * added test for enumMapKeys & enumMapValues Index: EnumeratorTest.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rftaparser/EnumeratorTest.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EnumeratorTest.cpp 27 Apr 2003 21:59:49 -0000 1.1 --- EnumeratorTest.cpp 28 Apr 2003 08:45:09 -0000 1.2 *************** *** 91,100 **** EnumeratorTest::testStlRangeEnumerator() { ! IntEnum e1a = Xtl::enumStl( deque1_.begin(), deque1_.begin()+2 ); ! IntEnum e1b = Xtl::enumStl( deque1_.begin()+1, deque1_.begin()+3 ); checkRangesContent( e1a, e1b ); ! IntEnum e2a = Xtl::enumStl( vector1_.begin(), vector1_.begin()+2 ); ! IntEnum e2b = Xtl::enumStl( vector1_.begin()+1, vector1_.begin()+3 ); checkRangesContent( e2a, e2b ); --- 91,100 ---- EnumeratorTest::testStlRangeEnumerator() { ! IntEnum e1a = Xtl::enumStlRange( deque1_.begin(), deque1_.begin()+2 ); ! IntEnum e1b = Xtl::enumStlRange( deque1_.begin()+1, deque1_.begin()+3 ); checkRangesContent( e1a, e1b ); ! IntEnum e2a = Xtl::enumStlRange( vector1_.begin(), vector1_.begin()+2 ); ! IntEnum e2b = Xtl::enumStlRange( vector1_.begin()+1, vector1_.begin()+3 ); checkRangesContent( e2a, e2b ); *************** *** 104,121 **** itStart++; ! IntEnum e3a = Xtl::enumStl( set1_.begin(), itEnd ); ! IntEnum e3b = Xtl::enumStl( itStart, set1_.end() ); checkRangesContent( e3a, e3b ); ! CharEnum e4a = Xtl::enumStl( deque1_.begin(), deque1_.begin()+2, Xtl::Type<char>() ); ! CharEnum e4b = Xtl::enumStl( deque1_.begin()+1, deque1_.begin()+3, Xtl::Type<char>() ); checkRangesContent( e4a, e4b ); ! CharEnum e5a = Xtl::enumStl( vector1_.begin(), vector1_.begin()+2, Xtl::Type<char>() ); ! CharEnum e5b = Xtl::enumStl( vector1_.begin()+1, vector1_.begin()+3, Xtl::Type<char>() ); checkRangesContent( e5a, e5b ); ! CharEnum e6a = Xtl::enumStl( set1_.begin(), itEnd, Xtl::Type<char>() ); ! CharEnum e6b = Xtl::enumStl( itStart, set1_.end(), Xtl::Type<char>() ); checkRangesContent( e6a, e6b ); } --- 104,121 ---- itStart++; ! IntEnum e3a = Xtl::enumStlRange( set1_.begin(), itEnd ); ! IntEnum e3b = Xtl::enumStlRange( itStart, set1_.end() ); checkRangesContent( e3a, e3b ); ! CharEnum e4a = Xtl::enumStlRange( deque1_.begin(), deque1_.begin()+2, Xtl::Type<char>() ); ! CharEnum e4b = Xtl::enumStlRange( deque1_.begin()+1, deque1_.begin()+3, Xtl::Type<char>() ); checkRangesContent( e4a, e4b ); ! CharEnum e5a = Xtl::enumStlRange( vector1_.begin(), vector1_.begin()+2, Xtl::Type<char>() ); ! CharEnum e5b = Xtl::enumStlRange( vector1_.begin()+1, vector1_.begin()+3, Xtl::Type<char>() ); checkRangesContent( e5a, e5b ); ! CharEnum e6a = Xtl::enumStlRange( set1_.begin(), itEnd, Xtl::Type<char>() ); ! CharEnum e6b = Xtl::enumStlRange( itStart, set1_.end(), Xtl::Type<char>() ); checkRangesContent( e6a, e6b ); } *************** *** 135,138 **** --- 135,198 ---- RFTA_ASSERT_EQUAL( 34, c.size() ); checkHasNoMoreElements( e ); + } + + + void + EnumeratorTest::testStlMapKeysEnumerator() + { + StringIntMap map; + map.insert( StringIntMap::value_type( "abc", 123 ) ); + map.insert( StringIntMap::value_type( "def", 234 ) ); + map.insert( StringIntMap::value_type( "ghi", 345 ) ); + + StringEnum e = Xtl::enumStlMapKeys( map ); + RFTA_ASSERT_EQUAL( "abc", e.getNext() ); + RFTA_ASSERT_EQUAL( "def", e.getNext() ); + RFTA_ASSERT_EQUAL( "ghi", e.getNext() ); + checkHasNoMoreElements( e ); + + StringIntMap::iterator itEnd = map.end(); + --itEnd; + StringEnum e2 = Xtl::enumStlMapKeysRange( map.begin(), itEnd, Xtl::Type<std::string>() ); + RFTA_ASSERT_EQUAL( "abc", e2.getNext() ); + RFTA_ASSERT_EQUAL( "def", e2.getNext() ); + checkHasNoMoreElements( e2 ); + + StringIntMap::iterator itStart = map.begin(); + ++itStart; + StringIntMapFirstEnum e3 = Xtl::enumStlMapKeysRange( itStart, map.end() ); + RFTA_ASSERT_EQUAL( "def", e3.getNext() ); + RFTA_ASSERT_EQUAL( "ghi", e3.getNext() ); + checkHasNoMoreElements( e3 ); + } + + + void + EnumeratorTest::testStlMapValuesEnumerator() + { + StringIntMap map; + map.insert( StringIntMap::value_type( "abc", 123 ) ); + map.insert( StringIntMap::value_type( "def", 234 ) ); + map.insert( StringIntMap::value_type( "ghi", 345 ) ); + + IntEnum e = Xtl::enumStlMapValues( map ); + RFTA_ASSERT_EQUAL( 123, e.getNext() ); + RFTA_ASSERT_EQUAL( 234, e.getNext() ); + RFTA_ASSERT_EQUAL( 345, e.getNext() ); + checkHasNoMoreElements( e ); + + StringIntMap::iterator itEnd = map.end(); + --itEnd; + IntEnum e2 = Xtl::enumStlMapValuesRange( map.begin(), itEnd, Xtl::Type<int>() ); + RFTA_ASSERT_EQUAL( 123, e2.getNext() ); + RFTA_ASSERT_EQUAL( 234, e2.getNext() ); + checkHasNoMoreElements( e2 ); + + StringIntMap::iterator itStart = map.begin(); + ++itStart; + StringIntMapSecondEnum e3 = Xtl::enumStlMapValuesRange( itStart, map.end() ); + RFTA_ASSERT_EQUAL( 234, e3.getNext() ); + RFTA_ASSERT_EQUAL( 345, e3.getNext() ); + checkHasNoMoreElements( e3 ); } Index: EnumeratorTest.h =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rftaparser/EnumeratorTest.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EnumeratorTest.h 27 Apr 2003 21:59:49 -0000 1.1 --- EnumeratorTest.h 28 Apr 2003 08:45:11 -0000 1.2 *************** *** 11,14 **** --- 11,15 ---- #include <xtl/StlEnumerator.h> #include <deque> + #include <map> #include <set> #include <vector> *************** *** 27,30 **** --- 28,33 ---- CPPUNIT_TEST( testStlRangeEnumerator ); CPPUNIT_TEST( testStlEnumConstructAdapator ); + CPPUNIT_TEST( testStlMapKeysEnumerator ); + CPPUNIT_TEST( testStlMapValuesEnumerator ); CPPUNIT_TEST_SUITE_END(); *************** *** 47,50 **** --- 50,56 ---- void testStlEnumConstructAdapator(); + void testStlMapKeysEnumerator(); + void testStlMapValuesEnumerator(); + private: typedef Xtl::Enumerator<int> IntEnum; *************** *** 89,92 **** --- 95,102 ---- typedef Xtl::Enumerator<IntDeque> IntDequeEnum; + typedef std::map<std::string,int> StringIntMap; + typedef Xtl::Enumerator<std::string> StringEnum; + typedef Xtl::Enumerator<StringIntMap::value_type::first_type> StringIntMapFirstEnum; + typedef Xtl::Enumerator<StringIntMap::value_type::second_type> StringIntMapSecondEnum; }; |