• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Special tests for erase_begin, erase_end and clear methods.
2 
3 // Copyright (c) 2009 Jan Gaspar
4 
5 // Use, modification, and distribution is subject to the Boost Software
6 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8 
9 #include "test.hpp"
10 
11 int MyInteger::ms_exception_trigger = 0;
12 int InstanceCounter::ms_count = 0;
13 
erase_begin_test()14 void erase_begin_test() {
15 
16     circular_buffer<int> cb1(5);
17     cb1.push_back(1);
18     cb1.push_back(2);
19     cb1.push_back(3);
20     cb1.push_back(4);
21     cb1.push_back(5);
22     cb1.push_back(6);
23 
24     circular_buffer<int>::pointer p = &cb1[0];
25 
26     cb1.erase_begin(2);
27 
28     BOOST_TEST(cb1.size() == 3);
29     BOOST_TEST(cb1[0] == 4);
30     BOOST_TEST(cb1[1] == 5);
31     BOOST_TEST(cb1[2] == 6);
32 
33     cb1.erase_begin(3);
34     BOOST_TEST(cb1.empty());
35     BOOST_TEST(*p == 2);
36     BOOST_TEST(*(p + 1) == 3);
37     BOOST_TEST(*(p + 2) == 4);
38 
39     cb1.push_back(10);
40     cb1.push_back(11);
41     cb1.push_back(12);
42 
43     BOOST_TEST(cb1.size() == 3);
44     BOOST_TEST(cb1[0] == 10);
45     BOOST_TEST(cb1[1] == 11);
46     BOOST_TEST(cb1[2] == 12);
47 
48     circular_buffer<InstanceCounter> cb2(5, InstanceCounter());
49 
50     BOOST_TEST(cb2.size() == 5);
51     BOOST_TEST(InstanceCounter::count() == 5);
52 
53     cb2.erase_begin(2);
54 
55     BOOST_TEST(cb2.size() == 3);
56     BOOST_TEST(InstanceCounter::count() == 3);
57 
58     circular_buffer<MyInteger> cb3(5);
59     cb3.push_back(1);
60     cb3.push_back(2);
61     cb3.push_back(3);
62     cb3.push_back(4);
63     cb3.push_back(5);
64     cb3.push_back(6);
65     cb3.erase_begin(2);
66 
67     BOOST_TEST(cb3.size() == 3);
68     BOOST_TEST(cb3[0] == 4);
69     BOOST_TEST(cb3[1] == 5);
70     BOOST_TEST(cb3[2] == 6);
71 }
72 
erase_end_test()73 void erase_end_test() {
74 
75     circular_buffer<int> cb1(5);
76     cb1.push_back(1);
77     cb1.push_back(2);
78     cb1.push_back(3);
79     cb1.push_back(4);
80     cb1.push_back(5);
81     cb1.push_back(6);
82 
83     circular_buffer<int>::pointer p = &cb1[3];
84 
85     cb1.erase_end(2);
86 
87     BOOST_TEST(cb1.size() == 3);
88     BOOST_TEST(cb1[0] == 2);
89     BOOST_TEST(cb1[1] == 3);
90     BOOST_TEST(cb1[2] ==4);
91 
92     cb1.erase_end(3);
93     BOOST_TEST(cb1.empty());
94     BOOST_TEST(*p == 5);
95     BOOST_TEST(*(p - 1) == 4);
96     BOOST_TEST(*(p - 2) == 3);
97 
98     cb1.push_back(10);
99     cb1.push_back(11);
100     cb1.push_back(12);
101 
102     BOOST_TEST(cb1.size() == 3);
103     BOOST_TEST(cb1[0] == 10);
104     BOOST_TEST(cb1[1] == 11);
105     BOOST_TEST(cb1[2] == 12);
106 
107     circular_buffer<InstanceCounter> cb2(5, InstanceCounter());
108 
109     BOOST_TEST(cb2.size() == 5);
110     BOOST_TEST(InstanceCounter::count() == 5);
111 
112     cb2.erase_end(2);
113 
114     BOOST_TEST(cb2.size() == 3);
115     BOOST_TEST(InstanceCounter::count() == 3);
116 
117     circular_buffer<MyInteger> cb3(5);
118     cb3.push_back(1);
119     cb3.push_back(2);
120     cb3.push_back(3);
121     cb3.push_back(4);
122     cb3.push_back(5);
123     cb3.push_back(6);
124     cb3.erase_end(2);
125 
126     BOOST_TEST(cb3.size() == 3);
127     BOOST_TEST(cb3[0] == 2);
128     BOOST_TEST(cb3[1] == 3);
129     BOOST_TEST(cb3[2] == 4);
130 }
131 
clear_test()132 void clear_test() {
133 
134     circular_buffer<int> cb1(5);
135     cb1.push_back(1);
136     cb1.push_back(2);
137     cb1.push_back(3);
138     cb1.push_back(4);
139     cb1.push_back(5);
140     cb1.push_back(6);
141 
142     circular_buffer<int>::pointer p = &cb1[0];
143 
144     cb1.clear();
145 
146     BOOST_TEST(cb1.empty());
147     BOOST_TEST(*p == 2);
148     BOOST_TEST(*(p + 1) == 3);
149     BOOST_TEST(*(p + 2) == 4);
150     BOOST_TEST(*(p + 3) == 5);
151     BOOST_TEST(*(p - 1) == 6);
152 
153     circular_buffer<InstanceCounter> cb2(5, InstanceCounter());
154 
155     BOOST_TEST(cb2.size() == 5);
156     BOOST_TEST(InstanceCounter::count() == 5);
157 
158     cb2.clear();
159 
160     BOOST_TEST(cb2.empty());
161     BOOST_TEST(InstanceCounter::count() == 0);
162 
163     circular_buffer<MyInteger> cb3(5);
164     cb3.push_back(1);
165     cb3.push_back(2);
166     cb3.push_back(3);
167     cb3.push_back(4);
168     cb3.push_back(5);
169     cb3.push_back(6);
170     cb3.clear();
171 
172     BOOST_TEST(cb3.empty());
173 }
174 
175 // test main
main()176 int main()
177 {
178     erase_begin_test();
179     erase_end_test();
180     clear_test();
181     return boost::report_errors();
182 }
183