set_test.cpp revision a9225dc81bae267b3454f3676a9108ecb4c9264f
1a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner//Has to be first for StackAllocator swap overload to be taken 2a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner//into account (at least using GCC 4.0.1) 3a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include "stack_allocator.h" 4a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 5a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <set> 6a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <algorithm> 7a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 8a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include "cppunit/cppunit_proxy.h" 9a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 10a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 11a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerusing namespace std; 12a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 13a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 14a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// 15a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// TestCase class 16a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// 17a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerclass SetTest : public CPPUNIT_NS::TestCase 18a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 19a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST_SUITE(SetTest); 20a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(set1); 21a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(set2); 22a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(erase); 23a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(insert); 24a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(find); 25a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(bounds); 26a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(specialized_less); 27a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(implementation_check); 28a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(allocator_with_state); 29a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(reverse_iterator_test); 30a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if !defined (STLPORT) || !defined (_STLP_USE_CONTAINERS_EXTENSION) 31a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_IGNORE; 32a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 33a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(template_methods); 34a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST_SUITE_END(); 35a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 36a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerprotected: 37a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void set1(); 38a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void set2(); 39a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void erase(); 40a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void insert(); 41a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void find(); 42a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void bounds(); 43a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void specialized_less(); 44a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void implementation_check(); 45a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void allocator_with_state(); 46a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void reverse_iterator_test(); 47a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void template_methods(); 48a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner}; 49a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 50a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' TurnerCPPUNIT_TEST_SUITE_REGISTRATION(SetTest); 51a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 52a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 53a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// 54a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// tests implementation 55a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// 56a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid SetTest::set1() 57a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 58a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int, less<int> > s; 59a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (s.count(42) == 0); 60a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s.insert(42); 61a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (s.count(42) == 1); 62a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s.insert(42); 63a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (s.count(42) == 1); 64a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner size_t count = s.erase(42); 65a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (count == 1); 66a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 67a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 68a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid SetTest::set2() 69a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 70a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef set<int, less<int> > int_set; 71a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int_set s; 72a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner pair<int_set::iterator, bool> p = s.insert(42); 73a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (p.second == true); 74a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner p = s.insert(42); 75a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (p.second == false); 76a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 77a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int array1 [] = { 1, 3, 6, 7 }; 78a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s.insert(array1, array1 + 4); 79a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (distance(s.begin(), s.end()) == 5); 80a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 81a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int_set s2; 82a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s2.swap(s); 83a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (distance(s2.begin(), s2.end()) == 5); 84a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (distance(s.begin(), s.end()) == 0); 85a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 86a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int_set s3; 87a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s3.swap(s); 88a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s3.swap(s2); 89a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (distance(s.begin(), s.end()) == 0); 90a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (distance(s2.begin(), s2.end()) == 0); 91a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT (distance(s3.begin(), s3.end()) == 5); 92a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 93a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 94a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid SetTest::erase() 95a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 96a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int, less<int> > s; 97a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s.insert(1); 98a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s.erase(s.begin()); 99a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( s.empty() ); 100a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 101a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner size_t nb = s.erase(1); 102a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(nb == 0); 103a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 104a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 105a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid SetTest::insert() 106a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 107a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int> s; 108a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int>::iterator i = s.insert( s.end(), 0 ); 109a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *i == 0 ); 110a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 111a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 112a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid SetTest::find() 113a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 114a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int> s; 115a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 116a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( s.find(0) == s.end() ); 117a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 118a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int> const& crs = s; 119a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 120a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( crs.find(0) == crs.end() ); 121a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 122a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 123a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid SetTest::bounds() 124a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 125a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int array1 [] = { 1, 3, 6, 7 }; 126a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int> s(array1, array1 + sizeof(array1) / sizeof(array1[0])); 127a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int> const& crs = s; 128a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 129a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int>::iterator sit; 130a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int>::const_iterator scit; 131a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner pair<set<int>::iterator, set<int>::iterator> pit; 132a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner pair<set<int>::const_iterator, set<int>::const_iterator> pcit; 133a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 134a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //Check iterator on mutable set 135a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner sit = s.lower_bound(2); 136a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sit != s.end() ); 137a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *sit == 3 ); 138a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 139a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner sit = s.upper_bound(5); 140a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sit != s.end() ); 141a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *sit == 6 ); 142a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 143a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner pit = s.equal_range(6); 144a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pit.first != pit.second ); 145a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pit.first != s.end() ); 146a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *pit.first == 6 ); 147a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pit.second != s.end() ); 148a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *pit.second == 7 ); 149a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 150a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner pit = s.equal_range(4); 151a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pit.first == pit.second ); 152a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pit.first != s.end() ); 153a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *pit.first == 6 ); 154a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pit.second != s.end() ); 155a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *pit.second == 6 ); 156a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 157a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //Check const_iterator on mutable set 158a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner scit = s.lower_bound(2); 159a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( scit != s.end() ); 160a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *scit == 3 ); 161a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 162a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner scit = s.upper_bound(5); 163a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( scit != s.end() ); 164a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *scit == 6 ); 165a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 166a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#ifdef _STLP_MEMBER_TEMPLATES 167a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner pcit = s.equal_range(6); 168a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pcit.first != pcit.second ); 169a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pcit.first != s.end() ); 170a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *pcit.first == 6 ); 171a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pcit.second != s.end() ); 172a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *pcit.second == 7 ); 173a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 174a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 175a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //Check const_iterator on const set 176a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner scit = crs.lower_bound(2); 177a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( scit != crs.end() ); 178a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *scit == 3 ); 179a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 180a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner scit = crs.upper_bound(5); 181a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( scit != crs.end() ); 182a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *scit == 6 ); 183a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 184a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner pcit = crs.equal_range(6); 185a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pcit.first != pcit.second ); 186a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pcit.first != crs.end() ); 187a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *pcit.first == 6 ); 188a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( pcit.second != crs.end() ); 189a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *pcit.second == 7 ); 190a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 191a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 192a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 193a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerclass SetTestClass { 194a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerpublic: 195a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetTestClass (int data) : _data(data) 196a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner {} 197a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 198a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int data() const { 199a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner return _data; 200a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 201a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 202a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerprivate: 203a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int _data; 204a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner}; 205a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 206a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if !defined (STLPORT) || defined (_STLP_USE_NAMESPACES) 207a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnernamespace std { 208a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 209a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if defined (STLPORT) 210a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner _STLP_TEMPLATE_NULL 211a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#else 212a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner template <> 213a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 214a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner struct less<SetTestClass> { 215a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool operator () (SetTestClass const& lhs, SetTestClass const& rhs) const { 216a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner return lhs.data() < rhs.data(); 217a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 218a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner }; 219a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if !defined (STLPORT) || defined (_STLP_USE_NAMESPACES) 220a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 221a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 222a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 223a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid SetTest::specialized_less() 224a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 225a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<SetTestClass> s; 226a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s.insert(SetTestClass(1)); 227a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s.insert(SetTestClass(3)); 228a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s.insert(SetTestClass(2)); 229a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner s.insert(SetTestClass(0)); 230a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 231a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<SetTestClass>::iterator sit(s.begin()), sitEnd(s.end()); 232a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int i = 0; 233a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner for (; sit != sitEnd; ++sit, ++i) { 234a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sit->data() == i ); 235a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 236a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 237a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 238a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid SetTest::implementation_check() 239a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 240a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int> tree; 241a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner tree.insert(1); 242a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int>::iterator it = tree.begin(); 243a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int const& int_ref = *it++; 244a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( int_ref == 1 ); 245a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 246a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( it == tree.end() ); 247a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( it != tree.begin() ); 248a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 249a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int>::const_iterator cit = tree.begin(); 250a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int const& int_cref = *cit++; 251a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( int_cref == 1 ); 252a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 253a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 254a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid SetTest::reverse_iterator_test() 255a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 256a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int> tree; 257a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner tree.insert(1); 258a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner tree.insert(2); 259a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 260a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 261a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int>::reverse_iterator rit(tree.rbegin()); 262a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *(rit++) == 2 ); 263a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *(rit++) == 1 ); 264a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( rit == tree.rend() ); 265a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 266a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 267a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 268a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int> const& ctree = tree; 269a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<int>::const_reverse_iterator rit(ctree.rbegin()); 270a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *(rit++) == 2 ); 271a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( *(rit++) == 1 ); 272a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( rit == ctree.rend() ); 273a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 274a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 275a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 276a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid SetTest::allocator_with_state() 277a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 278a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner char buf1[1024]; 279a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner StackAllocator<int> stack1(buf1, buf1 + sizeof(buf1)); 280a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 281a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner char buf2[1024]; 282a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner StackAllocator<int> stack2(buf2, buf2 + sizeof(buf2)); 283a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 284a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int i; 285a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef set<int, less<int>, StackAllocator<int> > SetInt; 286a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner less<int> intLess; 287a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 288a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 289a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint1(intLess, stack1); 290a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner for (i = 0; i < 5; ++i) 291a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner sint1.insert(i); 292a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint1Cpy(sint1); 293a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 294a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint2(intLess, stack2); 295a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner for (; i < 10; ++i) 296a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner sint2.insert(i); 297a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint2Cpy(sint2); 298a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 299a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner sint1.swap(sint2); 300a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 301a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint1.get_allocator().swaped() ); 302a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint2.get_allocator().swaped() ); 303a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 304a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint1 == sint2Cpy ); 305a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint2 == sint1Cpy ); 306a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint1.get_allocator() == stack2 ); 307a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint2.get_allocator() == stack1 ); 308a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 309a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( stack1.ok() ); 310a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( stack2.ok() ); 311a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner stack1.reset(); stack2.reset(); 312a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 313a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 314a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint1(intLess, stack1); 315a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint1Cpy(sint1); 316a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 317a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint2(intLess, stack2); 318a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner for (i = 0; i < 10; ++i) 319a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner sint2.insert(i); 320a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint2Cpy(sint2); 321a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 322a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner sint1.swap(sint2); 323a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 324a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint1.get_allocator().swaped() ); 325a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint2.get_allocator().swaped() ); 326a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 327a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint1 == sint2Cpy ); 328a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint2 == sint1Cpy ); 329a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint1.get_allocator() == stack2 ); 330a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint2.get_allocator() == stack1 ); 331a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 332a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( stack1.ok() ); 333a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( stack2.ok() ); 334a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner stack1.reset(); stack2.reset(); 335a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 336a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 337a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint1(intLess, stack1); 338a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner for (i = 0; i < 10; ++i) 339a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner sint1.insert(i); 340a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint1Cpy(sint1); 341a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 342a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint2(intLess, stack2); 343a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner SetInt sint2Cpy(sint2); 344a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 345a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner sint1.swap(sint2); 346a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 347a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint1.get_allocator().swaped() ); 348a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint2.get_allocator().swaped() ); 349a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 350a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint1 == sint2Cpy ); 351a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint2 == sint1Cpy ); 352a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint1.get_allocator() == stack2 ); 353a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( sint2.get_allocator() == stack1 ); 354a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 355a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( stack1.ok() ); 356a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( stack2.ok() ); 357a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner stack1.reset(); stack2.reset(); 358a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 359a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 360a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerstruct Key 361a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 362a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner Key() : m_data(0) {} 363a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner explicit Key(int data) : m_data(data) {} 364a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 365a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int m_data; 366a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner}; 367a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 368a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerstruct KeyCmp 369a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 370a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool operator () (Key lhs, Key rhs) const 371a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { return lhs.m_data < rhs.m_data; } 372a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 373a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool operator () (Key lhs, int rhs) const 374a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { return lhs.m_data < rhs; } 375a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 376a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool operator () (int lhs, Key rhs) const 377a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { return lhs < rhs.m_data; } 378a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner}; 379a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 380a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerstruct KeyCmpPtr 381a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 382a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool operator () (Key const volatile *lhs, Key const volatile *rhs) const 383a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { return (*lhs).m_data < (*rhs).m_data; } 384a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 385a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool operator () (Key const volatile *lhs, int rhs) const 386a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { return (*lhs).m_data < rhs; } 387a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 388a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool operator () (int lhs, Key const volatile *rhs) const 389a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { return lhs < (*rhs).m_data; } 390a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner}; 391a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 392a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid SetTest::template_methods() 393a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 394a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if defined (STLPORT) && defined (_STLP_USE_CONTAINERS_EXTENSION) 395a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 396a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef set<Key, KeyCmp> KeySet; 397a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner KeySet keySet; 398a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(Key(1)); 399a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(Key(2)); 400a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(Key(3)); 401a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(Key(4)); 402a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 403a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.count(Key(1)) == 1 ); 404a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.count(1) == 1 ); 405a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.count(5) == 0 ); 406a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 407a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.find(2) != keySet.end() ); 408a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.lower_bound(2) != keySet.end() ); 409a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.upper_bound(2) != keySet.end() ); 410a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.equal_range(2) != make_pair(keySet.begin(), keySet.end()) ); 411a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 412a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner KeySet const& ckeySet = keySet; 413a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.find(2) != ckeySet.end() ); 414a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.lower_bound(2) != ckeySet.end() ); 415a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.upper_bound(2) != ckeySet.end() ); 416a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.equal_range(2) != make_pair(ckeySet.begin(), ckeySet.end()) ); 417a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 418a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 419a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 420a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef set<Key*, KeyCmpPtr> KeySet; 421a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner KeySet keySet; 422a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner Key key1(1), key2(2), key3(3), key4(4); 423a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(&key1); 424a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(&key2); 425a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(&key3); 426a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(&key4); 427a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 428a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.count(1) == 1 ); 429a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.count(5) == 0 ); 430a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 431a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.find(2) != keySet.end() ); 432a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.lower_bound(2) != keySet.end() ); 433a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.upper_bound(2) != keySet.end() ); 434a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.equal_range(2) != make_pair(keySet.begin(), keySet.end()) ); 435a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 436a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner KeySet const& ckeySet = keySet; 437a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.find(2) != ckeySet.end() ); 438a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.lower_bound(2) != ckeySet.end() ); 439a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.upper_bound(2) != ckeySet.end() ); 440a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.equal_range(2) != make_pair(ckeySet.begin(), ckeySet.end()) ); 441a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 442a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 443a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef multiset<Key, KeyCmp> KeySet; 444a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner KeySet keySet; 445a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(Key(1)); 446a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(Key(2)); 447a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(Key(3)); 448a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(Key(4)); 449a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 450a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.count(Key(1)) == 1 ); 451a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.count(1) == 1 ); 452a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.count(5) == 0 ); 453a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 454a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.find(2) != keySet.end() ); 455a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.lower_bound(2) != keySet.end() ); 456a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.upper_bound(2) != keySet.end() ); 457a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.equal_range(2) != make_pair(keySet.begin(), keySet.end()) ); 458a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 459a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner KeySet const& ckeySet = keySet; 460a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.find(2) != ckeySet.end() ); 461a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.lower_bound(2) != ckeySet.end() ); 462a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.upper_bound(2) != ckeySet.end() ); 463a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.equal_range(2) != make_pair(ckeySet.begin(), ckeySet.end()) ); 464a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 465a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 466a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 467a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef multiset<Key const volatile*, KeyCmpPtr> KeySet; 468a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner KeySet keySet; 469a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner Key key1(1), key2(2), key3(3), key4(4); 470a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(&key1); 471a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(&key2); 472a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(&key3); 473a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner keySet.insert(&key4); 474a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 475a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.count(1) == 1 ); 476a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.count(5) == 0 ); 477a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 478a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.find(2) != keySet.end() ); 479a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.lower_bound(2) != keySet.end() ); 480a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.upper_bound(2) != keySet.end() ); 481a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( keySet.equal_range(2) != make_pair(keySet.begin(), keySet.end()) ); 482a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 483a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner KeySet const& ckeySet = keySet; 484a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.find(2) != ckeySet.end() ); 485a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.lower_bound(2) != ckeySet.end() ); 486a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.upper_bound(2) != ckeySet.end() ); 487a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( ckeySet.equal_range(2) != make_pair(ckeySet.begin(), ckeySet.end()) ); 488a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 489a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 490a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 491a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 492a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if !defined (STLPORT) || \ 493a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner !defined (_STLP_USE_PTR_SPECIALIZATIONS) || defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 494a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if !defined (__DMC__) 495a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner/* Simple compilation test: Check that nested types like iterator 496a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner * can be access even if type used to instanciate container is not 497a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner * yet completely defined. 498a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner */ 499a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerclass IncompleteClass 500a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 501a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner set<IncompleteClass> instances; 502a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef set<IncompleteClass>::iterator it; 503a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner multiset<IncompleteClass> minstances; 504a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef multiset<IncompleteClass>::iterator mit; 505a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner}; 506a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 507a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 508