1#include <deque>
2#include <vector>
3#include <algorithm>
4
5#include "cppunit/cppunit_proxy.h"
6
7#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
8using namespace std;
9#endif
10
11//
12// TestCase class
13//
14class InsertTest : public CPPUNIT_NS::TestCase
15{
16  CPPUNIT_TEST_SUITE(InsertTest);
17  CPPUNIT_TEST(insert1);
18  CPPUNIT_TEST(insert2);
19  CPPUNIT_TEST_SUITE_END();
20
21protected:
22  void insert1();
23  void insert2();
24};
25
26CPPUNIT_TEST_SUITE_REGISTRATION(InsertTest);
27
28//
29// tests implementation
30//
31void InsertTest::insert1()
32{
33  char const* array1 [] = { "laurie", "jennifer", "leisa" };
34  char const* array2 [] = { "amanda", "saskia", "carrie" };
35
36  deque<char const*> names(array1, array1 + 3);
37  deque<char const*>::iterator i = names.begin() + 2;
38
39  insert_iterator<deque <char const*> > itd(names, i);
40  itd = copy(array2, array2 + 3, insert_iterator<deque <char const*> >(names, i));
41
42  CPPUNIT_ASSERT( !strcmp(names[0], "laurie") );
43  CPPUNIT_ASSERT( !strcmp(names[1], "jennifer") );
44  CPPUNIT_ASSERT( !strcmp(names[2], "amanda") );
45  CPPUNIT_ASSERT( !strcmp(names[3], "saskia") );
46  CPPUNIT_ASSERT( !strcmp(names[4], "carrie") );
47  CPPUNIT_ASSERT( !strcmp(names[5], "leisa") );
48
49  copy(array1, array1 + 3, itd);
50  CPPUNIT_ASSERT( !strcmp(names[5], "laurie") );
51  CPPUNIT_ASSERT( !strcmp(names[6], "jennifer") );
52  CPPUNIT_ASSERT( !strcmp(names[7], "leisa") );
53  CPPUNIT_ASSERT( !strcmp(names[8], "leisa") );
54}
55void InsertTest::insert2()
56{
57  char const* array1 [] = { "laurie", "jennifer", "leisa" };
58  char const* array2 [] = { "amanda", "saskia", "carrie" };
59
60  deque<char const*> names(array1, array1 + 3);
61  deque<char const*>::iterator i = names.begin() + 2;
62  copy(array2, array2 + 3, inserter(names, i));
63
64  CPPUNIT_ASSERT( !strcmp(names[0], "laurie") );
65  CPPUNIT_ASSERT( !strcmp(names[1], "jennifer") );
66  CPPUNIT_ASSERT( !strcmp(names[2], "amanda") );
67  CPPUNIT_ASSERT( !strcmp(names[3], "saskia") );
68  CPPUNIT_ASSERT( !strcmp(names[4], "carrie") );
69  CPPUNIT_ASSERT( !strcmp(names[5], "leisa") );
70}
71