1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//Has to be first for StackAllocator swap overload to be taken 2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//into account (at least using GCC 4.0.1) 3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "stack_allocator.h" 4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <map> 6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <algorithm> 7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "cppunit/cppunit_proxy.h" 9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottusing namespace std; 12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// TestCase class 16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass MapTest : public CPPUNIT_NS::TestCase 18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST_SUITE(MapTest); 20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(map1); 21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(mmap1); 22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(mmap2); 23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(iterators); 24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(equal_range); 25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(allocator_with_state); 26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (STLPORT) || !defined (_STLP_USE_CONTAINERS_EXTENSION) 27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_IGNORE; 28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(template_methods); 30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST_SUITE_END(); 31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottprotected: 33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void map1(); 34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void mmap1(); 35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void mmap2(); 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void iterators(); 37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void equal_range(); 38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void allocator_with_state(); 39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void template_methods(); 40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick ScottCPPUNIT_TEST_SUITE_REGISTRATION(MapTest); 43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// tests implementation 46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid MapTest::map1() 48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef map<char, int, less<char> > maptype; 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott maptype m; 51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // Store mappings between roman numerals and decimals. 52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m['l'] = 50; 53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m['x'] = 20; // Deliberate mistake. 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m['v'] = 5; 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m['i'] = 1; 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// cout << "m['x'] = " << m['x'] << endl; 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( m['x']== 20 ); 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m['x'] = 10; // Correct mistake. 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( m['x']== 10 ); 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( m['z']== 0 ); 61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //cout << "m['z'] = " << m['z'] << endl; // Note default value is added. 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( m.count('z') == 1 ); 63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //cout << "m.count('z') = " << m.count('z') << endl; 64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair<maptype::iterator, bool> p = m.insert(pair<const char, int>('c', 100)); 65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( p.second ); 66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( p.first != m.end() ); 67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*p.first).first == 'c' ); 68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*p.first).second == 100 ); 69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p = m.insert(pair<const char, int>('c', 100)); 71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( !p.second ); // already existing pair 72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( p.first != m.end() ); 73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*p.first).first == 'c' ); 74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*p.first).second == 100 ); 75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid MapTest::mmap1() 78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef multimap<char, int, less<char> > mmap; 80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap m; 81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(m.count('X')==0); 82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m.insert(pair<const char, int>('X', 10)); // Standard way. 84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(m.count('X')==1); 85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m.insert(pair<const char, int>('X', 20)); // jbuck: standard way 87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(m.count('X')==2); 88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m.insert(pair<const char, int>('Y', 32)); // jbuck: standard way 90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap::iterator i = m.find('X'); // Find first match. 91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_CONST 92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define _STLP_CONST const 93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair<_STLP_CONST char, int> p('X', 10); 95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(*i == p); 96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((*i).first == 'X'); 97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((*i).second == 10); 98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott i++; 99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((*i).first == 'X'); 100e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((*i).second == 20); 101e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott i++; 102e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((*i).first == 'Y'); 103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((*i).second == 32); 104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott i++; 105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(i == m.end()); 106e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t count = m.erase('X'); 108e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(count==2); 109e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid MapTest::mmap2() 111e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef pair<const int, char> pair_type; 113e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p1(3, 'c'); 115e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p2(6, 'f'); 116e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p3(1, 'a'); 117e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p4(2, 'b'); 118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p5(3, 'x'); 119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p6(6, 'f'); 120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef multimap<int, char, less<int> > mmap; 122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 123e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type array [] = { 124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p1, 125e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p2, 126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p3, 127e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p4, 128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p5, 129e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p6 130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott }; 131e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap m(array + 0, array + 6); 133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap::iterator i; 134e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott i = m.lower_bound(3); 135e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((*i).first==3); 136e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((*i).second=='c'); 137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott i = m.upper_bound(3); 139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((*i).first==6); 140e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((*i).second=='f'); 141e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 142e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 143e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid MapTest::iterators() 145e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 146e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef map<int, char, less<int> > int_map; 147e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int_map imap; 148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 149e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int_map::iterator ite(imap.begin()); 150e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int_map::const_iterator cite(imap.begin()); 151e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ite == cite ); 152e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( !(ite != cite) ); 153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cite == ite ); 154e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( !(cite != ite) ); 155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef multimap<int, char, less<int> > mmap; 158e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef mmap::value_type pair_type; 159e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 160e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p1(3, 'c'); 161e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p2(6, 'f'); 162e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p3(1, 'a'); 163e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p4(2, 'b'); 164e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p5(3, 'x'); 165e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type p6(6, 'f'); 166e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 167e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair_type array [] = { 168e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p1, 169e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p2, 170e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p3, 171e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p4, 172e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p5, 173e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott p6 174e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott }; 175e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 176e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap m(array+0, array + 6); 177e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 178e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 179e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap::iterator ite(m.begin()); 180e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap::const_iterator cite(m.begin()); 181e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //test compare between const_iterator and iterator 182e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ite == cite ); 183e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( !(ite != cite) ); 184e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cite == ite ); 185e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( !(cite != ite) ); 186e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 187e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 188e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if 0 189e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott /* 190e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * A check that map and multimap iterators are NOT comparable 191e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * the following code should generate a compile time error 192e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 193e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 194e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int_map::iterator mite(imap.begin()); 195e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int_map::const_iterator mcite(imap.begin()); 196e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap::iterator mmite(m.begin()); 197e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap::const_iterator mmcite(m.begin()); 198e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( !(mite == mmite) ); 199e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( !(mcite == mmcite) ); 200e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( mite != mmite ); 201e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( mcite != mmcite ); 202e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( !(mite == mmcite) ); 203e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( !(mite == mmcite) ); 204e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( mite != mmcite ); 205e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( mite != mmcite ); 206e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 207e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 208e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 209e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 210e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap::reverse_iterator ri = m.rbegin(); 211e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ri != m.rend() ); 212e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ri == m.rbegin() ); 213e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*ri).first == 6 ); 214e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*ri++).second == 'f' ); 215e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*ri).first == 6 ); 216e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*ri).second == 'f' ); 217e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 218e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap const& cm = m; 219e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mmap::const_reverse_iterator rci = cm.rbegin(); 220e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( rci != cm.rend() ); 221e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*rci).first == 6 ); 222e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*rci++).second == 'f' ); 223e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*rci).first == 6 ); 224e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*rci).second == 'f' ); 225e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 226e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 227e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid MapTest::equal_range() 228e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 229e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef map<char, int, less<char> > maptype; 230e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 231e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott maptype m; 232e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m['x'] = 10; 233e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 234e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair<maptype::iterator, maptype::iterator> ret; 235e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ret = m.equal_range('x'); 236e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ret.first != ret.second ); 237e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*(ret.first)).first == 'x' ); 238e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( (*(ret.first)).second == 10 ); 239e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ++(ret.first) == ret.second ); 240e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 241e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 242e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 243e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott maptype m; 244e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 245e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott maptype::iterator i = m.lower_bound( 'x' ); 246e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( i == m.end() ); 247e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 248e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott i = m.upper_bound( 'x' ); 249e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( i == m.end() ); 250e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 251e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair<maptype::iterator, maptype::iterator> ret; 252e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ret = m.equal_range('x'); 253e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ret.first == ret.second ); 254e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ret.first == m.end() ); 255e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 256e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 257e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 258e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const maptype m; 259e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pair<maptype::const_iterator, maptype::const_iterator> ret; 260e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ret = m.equal_range('x'); 261e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ret.first == ret.second ); 262e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ret.first == m.end() ); 263e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 264e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 265e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 266e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 267e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid MapTest::allocator_with_state() 268e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 269e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char buf1[1024]; 270e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott StackAllocator<pair<const int, int> > stack1(buf1, buf1 + sizeof(buf1)); 271e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 272e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char buf2[1024]; 273e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott StackAllocator<pair<const int, int> > stack2(buf2, buf2 + sizeof(buf2)); 274e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 275e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 276e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef map<int, int, less<int>, StackAllocator<pair<const int, int> > > MapInt; 277e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott less<int> intLess; 278e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott MapInt mint1(intLess, stack1); 279e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int i; 280e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (i = 0; i < 5; ++i) 281e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mint1.insert(MapInt::value_type(i, i)); 282e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott MapInt mint1Cpy(mint1); 283e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 284e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott MapInt mint2(intLess, stack2); 285e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; i < 10; ++i) 286e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mint2.insert(MapInt::value_type(i, i)); 287e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott MapInt mint2Cpy(mint2); 288e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 289e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mint1.swap(mint2); 290e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 291e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( mint1.get_allocator().swaped() ); 292e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( mint2.get_allocator().swaped() ); 293e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 294e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( mint1 == mint2Cpy ); 295e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( mint2 == mint1Cpy ); 296e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( mint1.get_allocator() == stack2 ); 297e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( mint2.get_allocator() == stack1 ); 298e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 299e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( stack1.ok() ); 300e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( stack2.ok() ); 301e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 302e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 303e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct Key 304e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 305e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Key() : m_data(0) {} 306e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit Key(int data) : m_data(data) {} 307e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 308e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int m_data; 309e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 310e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 311e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct KeyCmp 312e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 313e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool operator () (Key lhs, Key rhs) const 314e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { return lhs.m_data < rhs.m_data; } 315e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 316e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool operator () (Key lhs, int rhs) const 317e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { return lhs.m_data < rhs; } 318e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 319e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool operator () (int lhs, Key rhs) const 320e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { return lhs < rhs.m_data; } 321e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 322e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 323e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct KeyCmpPtr 324e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 325e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool operator () (Key const volatile *lhs, Key const volatile *rhs) const 326e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { return (*lhs).m_data < (*rhs).m_data; } 327e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 328e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool operator () (Key const volatile *lhs, int rhs) const 329e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { return (*lhs).m_data < rhs; } 330e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 331e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool operator () (int lhs, Key const volatile *rhs) const 332e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { return lhs < (*rhs).m_data; } 333e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 334e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 335e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid MapTest::template_methods() 336e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 337e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && defined (_STLP_USE_CONTAINERS_EXTENSION) 338e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 339e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef map<Key, int, KeyCmp> Container; 340e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef Container::value_type value; 341e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Container cont; 342e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(Key(1), 1)); 343e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(Key(2), 2)); 344e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(Key(3), 3)); 345e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(Key(4), 4)); 346e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 347e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.count(Key(1)) == 1 ); 348e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.count(1) == 1 ); 349e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.count(5) == 0 ); 350e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 351e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.find(2) != cont.end() ); 352e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.lower_bound(2) != cont.end() ); 353e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.upper_bound(2) != cont.end() ); 354e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.equal_range(2) != make_pair(cont.begin(), cont.end()) ); 355e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 356e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Container const& ccont = cont; 357e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.find(2) != ccont.end() ); 358e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.lower_bound(2) != ccont.end() ); 359e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.upper_bound(2) != ccont.end() ); 360e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.equal_range(2) != make_pair(ccont.end(), ccont.end()) ); 361e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 362e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 363e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 364e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef map<Key*, int, KeyCmpPtr> Container; 365e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef Container::value_type value; 366e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Container cont; 367e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Key key1(1), key2(2), key3(3), key4(4); 368e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(&key1, 1)); 369e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(&key2, 2)); 370e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(&key3, 3)); 371e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(&key4, 4)); 372e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 373e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.count(1) == 1 ); 374e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.count(5) == 0 ); 375e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 376e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.find(2) != cont.end() ); 377e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.lower_bound(2) != cont.end() ); 378e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.upper_bound(2) != cont.end() ); 379e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.equal_range(2) != make_pair(cont.begin(), cont.end()) ); 380e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 381e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Container const& ccont = cont; 382e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.find(2) != ccont.end() ); 383e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.lower_bound(2) != ccont.end() ); 384e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.upper_bound(2) != ccont.end() ); 385e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.equal_range(2) != make_pair(ccont.begin(), ccont.end()) ); 386e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 387e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 388e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef multimap<Key, int, KeyCmp> Container; 389e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef Container::value_type value; 390e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Container cont; 391e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(Key(1), 1)); 392e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(Key(2), 2)); 393e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(Key(3), 3)); 394e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(Key(4), 4)); 395e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 396e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.count(Key(1)) == 1 ); 397e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.count(1) == 1 ); 398e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.count(5) == 0 ); 399e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 400e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.find(2) != cont.end() ); 401e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.lower_bound(2) != cont.end() ); 402e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.upper_bound(2) != cont.end() ); 403e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.equal_range(2) != make_pair(cont.begin(), cont.end()) ); 404e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 405e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Container const& ccont = cont; 406e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.find(2) != ccont.end() ); 407e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.lower_bound(2) != ccont.end() ); 408e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.upper_bound(2) != ccont.end() ); 409e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.equal_range(2) != make_pair(ccont.end(), ccont.end()) ); 410e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 411e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 412e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 413e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef multimap<Key const volatile*, int, KeyCmpPtr> Container; 414e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef Container::value_type value; 415e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Container cont; 416e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Key key1(1), key2(2), key3(3), key4(4); 417e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(&key1, 1)); 418e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(&key2, 2)); 419e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(&key3, 3)); 420e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cont.insert(value(&key4, 4)); 421e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 422e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.count(1) == 1 ); 423e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.count(5) == 0 ); 424e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 425e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.find(2) != cont.end() ); 426e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.lower_bound(2) != cont.end() ); 427e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.upper_bound(2) != cont.end() ); 428e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( cont.equal_range(2) != make_pair(cont.begin(), cont.end()) ); 429e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 430e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Container const& ccont = cont; 431e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.find(2) != ccont.end() ); 432e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.lower_bound(2) != ccont.end() ); 433e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.upper_bound(2) != ccont.end() ); 434e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( ccont.equal_range(2) != make_pair(ccont.begin(), ccont.end()) ); 435e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 436e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 437e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 438e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 439e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (STLPORT) || \ 440e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott !defined (_STLP_USE_PTR_SPECIALIZATIONS) || defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 441e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (__DMC__) 442e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Simple compilation test: Check that nested types like iterator 443e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * can be access even if type used to instanciate container is not 444e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * yet completely defined. 445e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 446e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass IncompleteClass 447e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 448e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott map<IncompleteClass, IncompleteClass> instances; 449e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef map<IncompleteClass, IncompleteClass>::iterator it; 450e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott multimap<IncompleteClass, IncompleteClass> minstances; 451e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef multimap<IncompleteClass, IncompleteClass>::iterator mit; 452e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 453e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 454e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 455