autoc 1.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES.md +3 -0
  3. data/README.md +149 -0
  4. data/cmake/AutoC.cmake +39 -0
  5. data/lib/autoc/allocators.rb +51 -0
  6. data/lib/autoc/association.rb +126 -0
  7. data/lib/autoc/box.rb +311 -0
  8. data/lib/autoc/cmake.rb +54 -0
  9. data/lib/autoc/collection.rb +83 -110
  10. data/lib/autoc/composite.rb +333 -0
  11. data/lib/autoc/cstring.rb +263 -0
  12. data/lib/autoc/function.rb +247 -0
  13. data/lib/autoc/hash_map.rb +328 -0
  14. data/lib/autoc/hash_set.rb +339 -0
  15. data/lib/autoc/hashers.rb +102 -0
  16. data/lib/autoc/list.rb +444 -0
  17. data/lib/autoc/module.rb +434 -0
  18. data/lib/autoc/openmp.rb +15 -0
  19. data/lib/autoc/primitive.rb +27 -0
  20. data/lib/autoc/ranges.rb +707 -0
  21. data/lib/autoc/record.rb +247 -0
  22. data/lib/autoc/scaffold/docs.rb +117 -0
  23. data/lib/autoc/scaffold/generic_value.rb +86 -0
  24. data/lib/autoc/scaffold/project.rb +75 -0
  25. data/lib/autoc/scaffold/test_cstring.rb +113 -0
  26. data/lib/autoc/scaffold/test_cstring_hash_set.rb +35 -0
  27. data/lib/autoc/scaffold/test_int_box.rb +22 -0
  28. data/lib/autoc/scaffold/test_int_hash_set.rb +448 -0
  29. data/lib/autoc/scaffold/test_int_list.rb +106 -0
  30. data/lib/autoc/scaffold/test_int_vector.rb +83 -0
  31. data/lib/autoc/scaffold/test_v2v_hash_map.rb +83 -0
  32. data/lib/autoc/scaffold/test_value_hash_set.rb +60 -0
  33. data/lib/autoc/scaffold/test_value_vector.rb +146 -0
  34. data/{test/test.rb → lib/autoc/scaffold/tests.rb} +179 -158
  35. data/lib/autoc/scaffold.rb +12 -0
  36. data/lib/autoc/sequential.rb +99 -0
  37. data/lib/autoc/set.rb +331 -0
  38. data/lib/autoc/std.rb +149 -0
  39. data/lib/autoc/type.rb +93 -531
  40. data/lib/autoc/vector.rb +290 -0
  41. data/lib/autoc.rb +4 -35
  42. metadata +55 -85
  43. data/.yardopts +0 -4
  44. data/CHANGES +0 -23
  45. data/README +0 -28
  46. data/doc/AutoC/Code.html +0 -523
  47. data/doc/AutoC/Collection.html +0 -1214
  48. data/doc/AutoC/HashMap.html +0 -1441
  49. data/doc/AutoC/HashSet.html +0 -916
  50. data/doc/AutoC/Iterators/Bidirectional.html +0 -204
  51. data/doc/AutoC/Iterators/Unidirectional.html +0 -200
  52. data/doc/AutoC/Iterators.html +0 -126
  53. data/doc/AutoC/List.html +0 -1039
  54. data/doc/AutoC/Maps.html +0 -290
  55. data/doc/AutoC/Module/File.html +0 -415
  56. data/doc/AutoC/Module/Header.html +0 -437
  57. data/doc/AutoC/Module/Source.html +0 -707
  58. data/doc/AutoC/Module.html +0 -948
  59. data/doc/AutoC/Priority.html +0 -138
  60. data/doc/AutoC/Queue.html +0 -1172
  61. data/doc/AutoC/Reference.html +0 -735
  62. data/doc/AutoC/Sets.html +0 -520
  63. data/doc/AutoC/String.html +0 -1394
  64. data/doc/AutoC/TreeMap.html +0 -1565
  65. data/doc/AutoC/TreeSet.html +0 -1447
  66. data/doc/AutoC/Type.html +0 -2148
  67. data/doc/AutoC/UserDefinedType.html +0 -1047
  68. data/doc/AutoC/Vector.html +0 -987
  69. data/doc/AutoC.html +0 -331
  70. data/doc/_index.html +0 -388
  71. data/doc/class_list.html +0 -51
  72. data/doc/css/common.css +0 -1
  73. data/doc/css/full_list.css +0 -58
  74. data/doc/css/style.css +0 -481
  75. data/doc/file.CHANGES.html +0 -117
  76. data/doc/file.README.html +0 -116
  77. data/doc/file_list.html +0 -61
  78. data/doc/frames.html +0 -17
  79. data/doc/index.html +0 -116
  80. data/doc/js/app.js +0 -243
  81. data/doc/js/full_list.js +0 -216
  82. data/doc/js/jquery.js +0 -4
  83. data/doc/method_list.html +0 -1307
  84. data/doc/top-level-namespace.html +0 -112
  85. data/lib/autoc/code.rb +0 -237
  86. data/lib/autoc/collection/hash_map.rb +0 -385
  87. data/lib/autoc/collection/hash_set.rb +0 -337
  88. data/lib/autoc/collection/iterator.rb +0 -39
  89. data/lib/autoc/collection/list.rb +0 -429
  90. data/lib/autoc/collection/map.rb +0 -41
  91. data/lib/autoc/collection/queue.rb +0 -517
  92. data/lib/autoc/collection/set.rb +0 -134
  93. data/lib/autoc/collection/tree_map.rb +0 -464
  94. data/lib/autoc/collection/tree_set.rb +0 -611
  95. data/lib/autoc/collection/vector.rb +0 -336
  96. data/lib/autoc/string.rb +0 -492
  97. data/test/test_auto.c +0 -7141
  98. data/test/test_auto.h +0 -753
  99. data/test/test_char_string.rb +0 -270
  100. data/test/test_int_list.rb +0 -35
  101. data/test/test_int_tree_set.rb +0 -111
  102. data/test/test_int_vector.rb +0 -34
  103. data/test/test_value_hash_map.rb +0 -162
  104. data/test/test_value_hash_set.rb +0 -173
  105. data/test/test_value_list.rb +0 -193
  106. data/test/test_value_queue.rb +0 -275
  107. data/test/test_value_tree_map.rb +0 -176
  108. data/test/test_value_tree_set.rb +0 -173
  109. data/test/test_value_vector.rb +0 -155
  110. data/test/value.rb +0 -80
@@ -1,173 +0,0 @@
1
- require "value"
2
-
3
- type_test(AutoC::HashSet, :ValueHashSet, Value) do
4
-
5
- def write_defs(stream)
6
- stream << %~
7
- #undef PUT
8
- #define PUT(t, v) {#{element.type} e; #{element.ctorEx}(e, v); #{put}(t, e); #{element.dtor}(e);}
9
- ~
10
- super
11
- end
12
-
13
- setup %~#{type} t;~
14
- cleanup %~#{dtor}(&t);~
15
-
16
- test :create, %~
17
- #{ctor}(&t);
18
- TEST_EQUAL( #{size}(&t), 0 );
19
- TEST_TRUE( #{empty}(&t) );
20
- ~
21
-
22
- test :purge, %~
23
- #{ctor}(&t);
24
- PUT(&t, 0);
25
- TEST_FALSE( #{empty}(&t) );
26
- #{purge}(&t);
27
- TEST_TRUE( #{empty}(&t) );
28
- ~
29
-
30
- setup %~
31
- /* a: [1,2,3], e: 0 */
32
- #{type} a;
33
- #{element.type} e;
34
- #{element.ctor(:e)};
35
- #{ctor}(&a);
36
- PUT(&a, 1); PUT(&a, 2); PUT(&a, 3);
37
- ~
38
- cleanup %~
39
- #{dtor}(&a);
40
- #{element.dtor(:e)};
41
- ~
42
-
43
- test :contains, %~
44
- TEST_FALSE( #{contains}(&a, e) );
45
- #{element.set}(e, 1);
46
- TEST_TRUE( #{contains}(&a, e) );
47
- ~
48
-
49
- test :get, %~
50
- #{element.type} e2;
51
- #{element.set}(e, -1);
52
- #{put}(&a, e);
53
- e2 = #{get}(&a, e);
54
- TEST_TRUE( #{element.equal}(e, e2) );
55
- #{element.dtor(:e2)};
56
- ~
57
-
58
- test :putNew, %~
59
- #{element.set}(e, -1);
60
- TEST_FALSE( #{contains}(&a, e) );
61
- TEST_TRUE( #{put}(&a, e) );
62
- TEST_TRUE( #{contains}(&a, e) );
63
- ~
64
-
65
- test :putExisting, %~
66
- #{element.set}(e, -1);
67
- TEST_FALSE( #{contains}(&a, e) );
68
- TEST_TRUE( #{put}(&a, e) );
69
- TEST_TRUE( #{contains}(&a, e) );
70
- TEST_FALSE( #{put}(&a, e) );
71
- ~
72
-
73
- test :replace, %~
74
- #{element.set}(e, 1);
75
- TEST_TRUE( #{contains}(&a, e) );
76
- TEST_TRUE( #{replace}(&a, e) );
77
- TEST_TRUE( #{contains}(&a, e) );
78
- ~
79
-
80
- test :replaceNone, %~
81
- #{element.set}(e, -1);
82
- TEST_FALSE( #{contains}(&a, e) );
83
- TEST_FALSE( #{replace}(&a, e) );
84
- TEST_FALSE( #{contains}(&a, e) );
85
- ~
86
-
87
- test :remove, %~
88
- #{element.set}(e, 1);
89
- TEST_TRUE( #{contains}(&a, e) );
90
- TEST_TRUE( #{remove}(&a, e) );
91
- TEST_FALSE( #{contains}(&a, e) );
92
- ~
93
-
94
- test :removeNone, %~
95
- #{element.set}(e, -1);
96
- TEST_FALSE( #{contains}(&a, e) );
97
- TEST_FALSE( #{remove}(&a, e) );
98
- ~
99
-
100
- test :iterate, %~
101
- #{it} it;
102
- size_t i = 0;
103
- #{itCtor}(&it, &a);
104
- while(#{itMove}(&it)) {
105
- #{element.type} e2 = #{itGet}(&it);
106
- #{element.dtor(:e2)};
107
- i++;
108
- }
109
- TEST_EQUAL( #{size}(&a), i );
110
- ~
111
-
112
- setup %~
113
- /* a: [1,2,3] */
114
- #{type} a, b;
115
- #{ctor}(&a);
116
- PUT(&a, 1); PUT(&a, 2); PUT(&a, 3);
117
- ~
118
- cleanup %~
119
- #{dtor}(&a);
120
- #{dtor}(&b);
121
- ~
122
-
123
- test :copy, %~
124
- #{copy}(&b, &a);
125
- TEST_TRUE( #{equal}(&a, &b) );
126
- ~
127
-
128
- test :empty, %~
129
- #{ctor}(&b);
130
- TEST_FALSE( #{empty}(&a) );
131
- TEST_TRUE( #{empty}(&b) );
132
- ~
133
-
134
- setup %~
135
- /* a: [1,2,3], b: [2,3,4] */
136
- #{type} a, b, c;
137
- #{ctor}(&a);
138
- #{ctor}(&b);
139
- #{ctor}(&c);
140
- PUT(&a, 1); PUT(&a, 2); PUT(&a, 3);
141
- PUT(&b, 4); PUT(&b, 2); PUT(&b, 3);
142
- ~
143
- cleanup %~
144
- #{dtor}(&a);
145
- #{dtor}(&b);
146
- #{dtor}(&c);
147
- ~
148
-
149
- test :exclude, %~
150
- PUT(&c, 1);
151
- #{exclude}(&a, &b);
152
- TEST_TRUE( #{equal}(&a, &c) );
153
- ~
154
-
155
- test :include, %~
156
- PUT(&c, 1); PUT(&c, 2); PUT(&c, 3); PUT(&c, 4);
157
- #{include}(&a, &b);
158
- TEST_TRUE( #{equal}(&a, &c) );
159
- ~
160
-
161
- test :invert, %~
162
- PUT(&c, 1); PUT(&c, 4);
163
- #{invert}(&a, &b);
164
- TEST_TRUE( #{equal}(&a, &c) );
165
- ~
166
-
167
- test :retain, %~
168
- PUT(&c, 2); PUT(&c, 3);
169
- #{retain}(&a, &b);
170
- TEST_TRUE( #{equal}(&a, &c) );
171
- ~
172
-
173
- end
@@ -1,193 +0,0 @@
1
- require "value"
2
-
3
- type_test(AutoC::List, :ValueList, Value) do
4
-
5
- setup %~#{type} t;~
6
- cleanup %~#{dtor}(&t);~
7
-
8
- test :create, %~
9
- #{ctor}(&t);
10
- TEST_EQUAL( #{size}(&t), 0 );
11
- TEST_TRUE( #{empty}(&t) );
12
- ~
13
-
14
- setup %~
15
- /* [0,1,2] */
16
- #{type} t;
17
- #{element.type} e;
18
- int i, c = 3;
19
- #{ctor}(&t);
20
- for(i = 0; i < c; ++i) {
21
- #{element.ctorEx}(e, i);
22
- #{push}(&t, e);
23
- #{element.dtor(:e)};
24
- }
25
- ~
26
- cleanup %~#{dtor}(&t);~
27
-
28
- test :copy, %~
29
- #{type} t2;
30
- #{copy}(&t2, &t);
31
- TEST_TRUE( #{equal}(&t2, &t) );
32
- {
33
- #{it} it;
34
- #{itCtor}(&it, &t);
35
- while(#{itMove}(&it)) {
36
- #{element.get}(e = #{itGet}(&it));
37
- #{element.dtor(:e)};
38
- }
39
- }
40
- #{dtor}(&t2);
41
- ~
42
-
43
- test :iterate, %~
44
- #{it} it;
45
- #{itCtor}(&it, &t);
46
- i = #{size}(&t)-1;
47
- while(#{itMove}(&it)) {
48
- e = #{itGet}(&it);
49
- TEST_EQUAL( #{element.get}(e), i-- );
50
- #{element.dtor(:e)};
51
- }
52
- ~
53
-
54
- test :purge, %~
55
- TEST_FALSE( #{empty}(&t) );
56
- #{purge}(&t);
57
- TEST_TRUE( #{empty}(&t) );
58
- ~
59
-
60
- test :peek, %~
61
- size_t s1 = #{size}(&t);
62
- e = #{peek}(&t);
63
- TEST_EQUAL( #{element.get}(e), 2 );
64
- #{element.dtor(:e)};
65
- size_t s2 = #{size}(&t);
66
- TEST_EQUAL( s1, s2 );
67
- ~
68
-
69
- test :pop, %~
70
- size_t s1 = #{size}(&t);
71
- e = #{pop}(&t);
72
- TEST_EQUAL( #{element.get}(e), 2 );
73
- #{element.dtor(:e)};
74
- size_t s2 = #{size}(&t);
75
- TEST_EQUAL( s1-1, s2 );
76
- ~
77
-
78
- test :push, %~
79
- size_t s1 = #{size}(&t);
80
- #{element.ctorEx}(e, -1);
81
- #{push}(&t, e);
82
- #{element.dtor(:e)};
83
- size_t s2 = #{size}(&t);
84
- TEST_EQUAL( s1+1, s2 );
85
- e = #{peek}(&t);
86
- TEST_EQUAL( #{element.get}(e), -1 );
87
- #{element.dtor(:e)};
88
- ~
89
-
90
- test :contains, %~
91
- #{element.ctorEx}(e, -1);
92
- TEST_FALSE( #{contains}(&t, e) );
93
- #{element.set}(e, 1);
94
- TEST_TRUE( #{contains}(&t, e) );
95
- #{element.dtor(:e)};
96
- ~
97
-
98
- test :find, %~
99
- #{element.type} e2;
100
- #{element.ctorEx}(e, 1);
101
- e2 = #{find}(&t, e);
102
- TEST_TRUE( #{element.equal}(e, e2) );
103
- #{element.dtor(:e)};
104
- #{element.dtor(:e2)};
105
- ~
106
-
107
- setup %~
108
- /* [0,1,2,0] */
109
- #{type} t1, t2;
110
- #{element.type} e;
111
- int i, c = 3;
112
- #{ctor}(&t1);
113
- #{ctor}(&t2);
114
- TEST_TRUE( #{equal}(&t1, &t2) );
115
- for(i = 0; i < c; ++i) {
116
- #{element.ctorEx}(e, i);
117
- #{push}(&t1, e);
118
- #{push}(&t2, e);
119
- #{element.dtor(:e)};
120
- }
121
- #{element.ctorEx}(e, 0);
122
- #{push}(&t1, e);
123
- #{push}(&t2, e);
124
- #{element.dtor(:e)};
125
- TEST_TRUE( #{equal}(&t1, &t2) );
126
- ~
127
- cleanup %~
128
- #{dtor}(&t1);
129
- #{dtor}(&t2);
130
- ~
131
-
132
- test :equal, %~
133
- TEST_TRUE( #{equal}(&t1, &t2) );
134
- #{element.ctorEx}(e, -1);
135
- #{push}(&t2, e);
136
- #{element.dtor(:e)};
137
- TEST_FALSE( #{equal}(&t1, &t2) );
138
- ~
139
-
140
- test :replaceNone, %~
141
- #{element.ctorEx}(e, -1);
142
- TEST_FALSE( #{replace}(&t2, e) );
143
- TEST_TRUE( #{equal}(&t1, &t2) );
144
- #{element.dtor(:e)};
145
- ~
146
-
147
- test :replaceOne, %~
148
- #{element.ctorEx}(e, 0);
149
- TEST_EQUAL( #{replace}(&t2, e), 1 );
150
- #{element.dtor(:e)};
151
- ~
152
-
153
- test :replaceExactOne, %~
154
- #{element.ctorEx}(e, 0);
155
- TEST_EQUAL( #{replaceEx}(&t2, e, 1), 1 );
156
- #{element.dtor(:e)};
157
- ~
158
-
159
- test :replaceAll, %~
160
- #{element.ctorEx}(e, 0);
161
- TEST_EQUAL( #{replaceAll}(&t2, e), 2 );
162
- #{element.dtor(:e)};
163
- ~
164
-
165
- test :removeNone, %~
166
- #{element.ctorEx}(e, -1);
167
- TEST_FALSE( #{remove}(&t2, e) );
168
- TEST_TRUE( #{equal}(&t1, &t2) );
169
- #{element.dtor(:e)};
170
- ~
171
-
172
- test :removeOne, %~
173
- #{element.ctorEx}(e, 0);
174
- TEST_EQUAL( #{remove}(&t2, e), 1 );
175
- TEST_EQUAL( #{size}(&t1)-1, #{size}(&t2) );
176
- #{element.dtor(:e)};
177
- ~
178
-
179
- test :removeExactOne, %~
180
- #{element.ctorEx}(e, 0);
181
- TEST_EQUAL( #{removeEx}(&t2, e, 1), 1 );
182
- TEST_EQUAL( #{size}(&t1)-1, #{size}(&t2) );
183
- #{element.dtor(:e)};
184
- ~
185
-
186
- test :removeAll, %~
187
- #{element.ctorEx}(e, 0);
188
- TEST_EQUAL( #{removeAll}(&t2, e), 2 );
189
- TEST_EQUAL( #{size}(&t1)-2, #{size}(&t2) );
190
- #{element.dtor(:e)};
191
- ~
192
-
193
- end
@@ -1,275 +0,0 @@
1
- require "value"
2
-
3
- type_test(AutoC::Queue, :ValueQueue, Value) do
4
-
5
- setup %~#{type} t;~
6
- cleanup %~#{dtor}(&t);~
7
-
8
- test :create, %~
9
- #{ctor}(&t);
10
- TEST_EQUAL( #{size}(&t), 0 );
11
- TEST_TRUE( #{empty}(&t) );
12
- ~
13
-
14
- setup %~
15
- /* [0,1,2] */
16
- #{type} t;
17
- #{element.type} e;
18
- int i, c = 3;
19
- #{ctor}(&t);
20
- for(i = 0; i < c; ++i) {
21
- #{element.ctorEx}(e, i);
22
- #{push}(&t, e);
23
- #{element.dtor(:e)};
24
- }
25
- ~
26
- cleanup %~#{dtor}(&t);~
27
-
28
- test :copy, %~
29
- #{type} t2;
30
- #{copy}(&t2, &t);
31
- TEST_TRUE( #{equal}(&t2, &t) );
32
- {
33
- #{it} it;
34
- #{itCtor}(&it, &t);
35
- while(#{itMove}(&it)) {
36
- #{element.get}(e = #{itGet}(&it));
37
- #{element.dtor(:e)};
38
- }
39
- }
40
- #{dtor}(&t2);
41
- ~
42
-
43
- test :iterateForward, %~
44
- #{it} it;
45
- #{itCtor}(&it, &t);
46
- i = 0;
47
- while(#{itMove}(&it)) {
48
- e = #{itGet}(&it);
49
- TEST_EQUAL( #{element.get}(e), i++ );
50
- #{element.dtor}(e);
51
- }
52
- ~
53
-
54
- test :iterateExactForward, %~
55
- #{it} it;
56
- #{itCtorEx}(&it, &t, 1);
57
- i = 0;
58
- while(#{itMove}(&it)) {
59
- e = #{itGet}(&it);
60
- TEST_EQUAL( #{element.get}(e), i++ );
61
- #{element.dtor}(e);
62
- }
63
- ~
64
-
65
- test :iterateBackward, %~
66
- #{it} it;
67
- #{itCtorEx}(&it, &t, 0);
68
- i = #{size}(&t)-1;
69
- while(#{itMove}(&it)) {
70
- e = #{itGet}(&it);
71
- TEST_EQUAL( #{element.get}(e), i-- );
72
- #{element.dtor(:e)};
73
- }
74
- ~
75
-
76
- test :purge, %~
77
- TEST_FALSE( #{empty}(&t) );
78
- #{purge}(&t);
79
- TEST_TRUE( #{empty}(&t) );
80
- ~
81
-
82
- test :peek, %~
83
- size_t s1 = #{size}(&t);
84
- e = #{peek}(&t);
85
- TEST_EQUAL( #{element.get}(e), 0 );
86
- #{element.dtor(:e)};
87
- size_t s2 = #{size}(&t);
88
- TEST_EQUAL( s1, s2 );
89
- ~
90
-
91
- test :peekHead, %~
92
- size_t s1 = #{size}(&t);
93
- e = #{peekHead}(&t);
94
- TEST_EQUAL( #{element.get}(e), 0 );
95
- #{element.dtor(:e)};
96
- size_t s2 = #{size}(&t);
97
- TEST_EQUAL( s1, s2 );
98
- ~
99
-
100
- test :peekTail, %~
101
- size_t s1 = #{size}(&t);
102
- e = #{peekTail}(&t);
103
- TEST_EQUAL( #{element.get}(e), 2 );
104
- #{element.dtor(:e)};
105
- size_t s2 = #{size}(&t);
106
- TEST_EQUAL( s1, s2 );
107
- ~
108
-
109
- test :pop, %~
110
- size_t s1 = #{size}(&t);
111
- e = #{pop}(&t);
112
- TEST_EQUAL( #{element.get}(e), 0 );
113
- #{element.dtor(:e)};
114
- size_t s2 = #{size}(&t);
115
- TEST_EQUAL( s1-1, s2 );
116
- ~
117
-
118
- test :popHead, %~
119
- size_t s1 = #{size}(&t);
120
- e = #{popHead}(&t);
121
- TEST_EQUAL( #{element.get}(e), 0 );
122
- #{element.dtor(:e)};
123
- size_t s2 = #{size}(&t);
124
- TEST_EQUAL( s1-1, s2 );
125
- ~
126
-
127
- test :popTail, %~
128
- size_t s1 = #{size}(&t);
129
- e = #{popTail}(&t);
130
- TEST_EQUAL( #{element.get}(e), 2 );
131
- #{element.dtor(:e)};
132
- size_t s2 = #{size}(&t);
133
- TEST_EQUAL( s1-1, s2 );
134
- ~
135
-
136
- test :push, %~
137
- size_t s1 = #{size}(&t);
138
- #{element.ctorEx}(e, -1);
139
- #{push}(&t, e);
140
- #{element.dtor(:e)};
141
- size_t s2 = #{size}(&t);
142
- TEST_EQUAL( s1+1, s2 );
143
- e = #{peekTail}(&t);
144
- TEST_EQUAL( #{element.get}(e), -1 );
145
- #{element.dtor(:e)};
146
- ~
147
-
148
- test :pushTail, %~
149
- size_t s1 = #{size}(&t);
150
- #{element.ctorEx}(e, -1);
151
- #{pushTail}(&t, e);
152
- #{element.dtor(:e)};
153
- size_t s2 = #{size}(&t);
154
- TEST_EQUAL( s1+1, s2 );
155
- e = #{peekTail}(&t);
156
- TEST_EQUAL( #{element.get}(e), -1 );
157
- #{element.dtor(:e)};
158
- ~
159
-
160
- test :pushHead, %~
161
- size_t s1 = #{size}(&t);
162
- #{element.ctorEx}(e, -1);
163
- #{pushHead}(&t, e);
164
- #{element.dtor(:e)};
165
- size_t s2 = #{size}(&t);
166
- TEST_EQUAL( s1+1, s2 );
167
- e = #{peekHead}(&t);
168
- TEST_EQUAL( #{element.get}(e), -1 );
169
- #{element.dtor(:e)};
170
- ~
171
-
172
- test :contains, %~
173
- #{element.ctorEx}(e, -1);
174
- TEST_FALSE( #{contains}(&t, e) );
175
- #{element.set}(e, 1);
176
- TEST_TRUE( #{contains}(&t, e) );
177
- #{element.dtor(:e)};
178
- ~
179
-
180
- test :find, %~
181
- #{element.type} e2;
182
- #{element.ctorEx}(e, 1);
183
- e2 = #{find}(&t, e);
184
- TEST_TRUE( #{element.equal}(e, e2) );
185
- #{element.dtor(:e)};
186
- #{element.dtor(:e2)};
187
- ~
188
-
189
- setup %~
190
- /* [0,1,2,0] */
191
- #{type} t1, t2;
192
- #{element.type} e;
193
- int i, c = 3;
194
- #{ctor}(&t1);
195
- #{ctor}(&t2);
196
- TEST_TRUE( #{equal}(&t1, &t2) );
197
- for(i = 0; i < c; ++i) {
198
- #{element.ctorEx}(e, i);
199
- #{push}(&t1, e);
200
- #{push}(&t2, e);
201
- #{element.dtor(:e)};
202
- }
203
- #{element.ctorEx}(e, 0);
204
- #{push}(&t1, e);
205
- #{push}(&t2, e);
206
- #{element.dtor(:e)};
207
- TEST_TRUE( #{equal}(&t1, &t2) );
208
- ~
209
- cleanup %~
210
- #{dtor}(&t1);
211
- #{dtor}(&t2);
212
- ~
213
-
214
- test :equal, %~
215
- TEST_TRUE( #{equal}(&t1, &t2) );
216
- #{element.ctorEx}(e, -1);
217
- #{push}(&t2, e);
218
- #{element.dtor(:e)};
219
- TEST_FALSE( #{equal}(&t1, &t2) );
220
- ~
221
-
222
- test :replaceNone, %~
223
- #{element.ctorEx}(e, -1);
224
- TEST_FALSE( #{replace}(&t2, e) );
225
- TEST_TRUE( #{equal}(&t1, &t2) );
226
- #{element.dtor(:e)};
227
- ~
228
-
229
- test :replaceOne, %~
230
- #{element.ctorEx}(e, 0);
231
- TEST_EQUAL( #{replace}(&t2, e), 1 );
232
- #{element.dtor(:e)};
233
- ~
234
-
235
- test :replaceExactOne, %~
236
- #{element.ctorEx}(e, 0);
237
- TEST_EQUAL( #{replaceEx}(&t2, e, 1), 1 );
238
- #{element.dtor(:e)};
239
- ~
240
-
241
- test :replaceAll, %~
242
- #{element.ctorEx}(e, 0);
243
- TEST_EQUAL( #{replaceAll}(&t2, e), 2 );
244
- #{element.dtor(:e)};
245
- ~
246
-
247
- test :removeNone, %~
248
- #{element.ctorEx}(e, -1);
249
- TEST_FALSE( #{remove}(&t2, e) );
250
- TEST_TRUE( #{equal}(&t1, &t2) );
251
- #{element.dtor(:e)};
252
- ~
253
-
254
- test :removeOne, %~
255
- #{element.ctorEx}(e, 0);
256
- TEST_EQUAL( #{remove}(&t2, e), 1 );
257
- TEST_EQUAL( #{size}(&t1)-1, #{size}(&t2) );
258
- #{element.dtor(:e)};
259
- ~
260
-
261
- test :removeExactOne, %~
262
- #{element.ctorEx}(e, 0);
263
- TEST_EQUAL( #{removeEx}(&t2, e, 1), 1 );
264
- TEST_EQUAL( #{size}(&t1)-1, #{size}(&t2) );
265
- #{element.dtor(:e)};
266
- ~
267
-
268
- test :removeAll, %~
269
- #{element.ctorEx}(e, 0);
270
- TEST_EQUAL( #{removeAll}(&t2, e), 2 );
271
- TEST_EQUAL( #{size}(&t1)-2, #{size}(&t2) );
272
- #{element.dtor(:e)};
273
- ~
274
-
275
- end