CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
Counter_test.cpp
Go to the documentation of this file.
1 #define BOOST_TEST_DYN_LINK
2 #include <boost/test/unit_test.hpp>
3 
6 
9 
11 #include<vector>
12 
13 using namespace CASM;
14 
15 BOOST_AUTO_TEST_SUITE(CounterTest)
16 
17 BOOST_AUTO_TEST_CASE(ArrayIntCounter) {
18  {
19  int size = 3;
20  int count = 0;
21  Array<int> initial(size, 0);
22  Array<int> final(size, 1);
23  Array<int> increment(size, 1);
24  Counter<Array<int> > counter(initial, final, increment);
25 
26  BOOST_CHECK_EQUAL(counter.size(), size);
27 
28  do {
29  count++;
30  }
31  while(++counter);
32 
33  BOOST_CHECK_EQUAL(count, 8);
34  }
35 
36  {
37  int size = 3;
38  int count = 0;
39  Array<int> initial(size, 0);
40  Array<int> final(size, -2);
41  Array<int> increment(size, -1);
42  Counter<Array<int> > counter(initial, final, increment);
43 
44  do {
45  count++;
46  }
47  while(++counter);
48 
49  BOOST_CHECK_EQUAL(count, 27);
50  }
51 
52  {
53  int size = 3;
54  int count = 0;
55  Array<int> initial(size, 0);
56  Array<int> final(size, 2);
57  Array<int> increment(size, 1);
58 
59  final[1] = -2;
60  increment[1] = -1;
61 
62  Counter<Array<int> > counter(initial, final, increment);
63 
64  do {
65  count++;
66  }
67  while(++counter);
68 
69  BOOST_CHECK_EQUAL(count, 27);
70  }
71 }
72 
73 BOOST_AUTO_TEST_CASE(stdVectorDoubleCounter) {
74  {
75  int size = 3;
76  int count = 0;
77  Array<double> initial(size, 0.0);
78  Array<double> final(size, 1.0);
79  Array<double> increment(size, 0.4);
80  Counter<Array<double> > counter(initial, final, increment);
81 
82  BOOST_CHECK_EQUAL(counter.size(), size);
83 
84  do {
85  count++;
86  }
87  while(++counter);
88 
89  BOOST_CHECK_EQUAL(count, 27);
90  }
91 
92  {
93  int size = 3;
94  int count = 0;
95  Array<double> initial(size, 0.0);
96  Array<double> final(size, -1.0);
97  Array<double> increment(size, -0.4);
98  Counter<Array<double> > counter(initial, final, increment);
99 
100  do {
101  count++;
102  }
103  while(++counter);
104 
105  BOOST_CHECK_EQUAL(count, 27);
106  }
107 
108  {
109  int size = 3;
110  int count = 0;
111  Array<double> initial(size, 0.0);
112  Array<double> final(size, 1.0);
113  Array<double> increment(size, 0.4);
114 
115  final[1] = -1.0;
116  increment[1] = -0.4;
117 
118  Counter<Array<double> > counter(initial, final, increment);
119 
120  do {
121  count++;
122  }
123  while(++counter);
124 
125  BOOST_CHECK_EQUAL(count, 27);
126  }
127 }
128 
129 BOOST_AUTO_TEST_SUITE_END()
A Counter allows looping over many incrementing variables in one loop.
Definition: Counter.hh:71
Main CASM namespace.
Definition: complete.cpp:8
BOOST_AUTO_TEST_CASE(ArrayIntCounter)