-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
source.spice
69 lines (61 loc) · 1.54 KB
/
source.spice
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import "std/data/linked-list";
import "std/data/pair";
f<int> main() {
// Create test vector to iterate over
LinkedList<long> lll = LinkedList<long>();
lll.pushBack(123l);
lll.pushBack(4321l);
lll.pushBack(9876l);
assert lll.getSize() == 3;
// Test base functionality
dyn it = lll.getIterator();
assert it.isValid();
assert it.get() == 123l;
assert it.get() == 123l;
it.next();
assert it.get() == 4321l;
assert it.isValid();
it.next();
dyn pair = it.getIdx();
assert pair.getFirst() == 2;
assert pair.getSecond() == 9876l;
it.next();
assert !it.isValid();
// Add new items to the vector
lll.pushBack(321l);
lll.pushBack(-99l);
assert it.isValid();
// Test overloaded operators
it -= 3;
assert it.get() == 123l;
assert it.isValid();
it++;
assert it.get() == 4321l;
it--;
assert it.get() == 123l;
it += 4;
assert it.get() == -99l;
it.next();
assert !it.isValid();
// Test foreach value
foreach long item : lll {
item++;
}
assert lll.get(0) == 123l;
assert lll.get(1) == 4321l;
assert lll.get(2) == 9876l;
// Test foreach ref
foreach long& item : lll.getIterator() {
item++;
}
assert lll.get(0) == 124l;
assert lll.get(1) == 4322l;
assert lll.get(2) == 9877l;
foreach long idx, long& item : lll {
item += idx;
}
assert lll.get(0) == 124l;
assert lll.get(1) == 4323l;
assert lll.get(2) == 9879l;
printf("All assertions passed!");
}