1 #include "library/perm.hpp"
2 #include "library/algorithms.hpp"
3 
main(void)4 int main(void)
5 {
6     Permutation p;
7     D_ASSERT(p[1] == 1);
8     D_ASSERT(p[100] == 100);
9 
10     vec1<int> v;
11     v.push_back(2);
12     v.push_back(1);
13     Permutation p2(v);
14     D_ASSERT(p2[1] == 2);
15     D_ASSERT(p2[2] == 1);
16     D_ASSERT(p2[3] == 3);
17     D_ASSERT(!(p == p2));
18 
19     vec1<Permutation> vp;
20     vp.push_back(p);
21     vp.push_back(p2);
22     D_ASSERT(p2 == mergePermutations(vp));
23 
24     vec1<Permutation> vp2;
25     vp2.push_back(p2);
26     vp2.push_back(p2);
27     D_ASSERT(p == mergePermutations(vp2));
28 
29     v.clear();
30     v.push_back(1);
31     v.push_back(3);
32     v.push_back(2);
33     Permutation p3(v);
34 
35     PermutationStack ps;
36     ps.addPerm(p2);
37     ps.addPerm(p3);
38     D_ASSERT(ps[1] == 3);
39     D_ASSERT(ps[2] == 1);
40     D_ASSERT(ps[3] == 2);
41     D_ASSERT(ps[4] == 4);
42 
43     vec1<Permutation> vp3;
44     vp3.push_back(p2);
45     vp3.push_back(p3);
46     D_ASSERT(ps.getPerm() == mergePermutations(vp3));
47 
48     p2 = p3;
49     p3 = p3;
50 
51     vec1<int> v2;
52 
53     Permutation p4(v2);
54     D_ASSERT(p4[1] == 1);
55     D_ASSERT(p4[2] == 2);
56     D_ASSERT(p4.size() == 0);
57 }