added for loop to test trivial cases and a comically slow python script to generate all potential test cases up to some number of ops
This commit is contained in:
parent
ae9d9cd27d
commit
d88ba5accc
3 changed files with 230 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,3 +3,4 @@ s
|
||||||
t
|
t
|
||||||
a.out
|
a.out
|
||||||
.clangd
|
.clangd
|
||||||
|
tests
|
||||||
|
|
37
gen_track_cases.py
Normal file
37
gen_track_cases.py
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
import itertools
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class Operation(Enum):
|
||||||
|
SUB = 0
|
||||||
|
ADD = 1
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
if self == Operation.SUB:
|
||||||
|
return "[]"
|
||||||
|
elif self == Operation.ADD:
|
||||||
|
return "()"
|
||||||
|
else:
|
||||||
|
raise Exception("unreachable")
|
||||||
|
|
||||||
|
def __radd__(self, num):
|
||||||
|
if self == Operation.SUB:
|
||||||
|
return num - 1
|
||||||
|
elif self == Operation.ADD:
|
||||||
|
return num + 1
|
||||||
|
else:
|
||||||
|
raise Exception("unreachable")
|
||||||
|
|
||||||
|
|
||||||
|
track = set()
|
||||||
|
|
||||||
|
for i in range(13):
|
||||||
|
ops_iter = itertools.combinations([Operation.ADD] * i + [Operation.SUB] * i, i)
|
||||||
|
for ops in ops_iter:
|
||||||
|
correct = sum(ops)
|
||||||
|
track.add(f"""i = a{"".join(str(op) for op in ops)};
|
||||||
|
assert(i == {correct});""")
|
||||||
|
|
||||||
|
with open("tests", "w+") as out:
|
||||||
|
for test in sorted(track):
|
||||||
|
print(test, file=out)
|
192
track.cpp
192
track.cpp
|
@ -31,9 +31,201 @@ int main(void) {
|
||||||
assert(a[] == -1);
|
assert(a[] == -1);
|
||||||
assert(a[]() == 0);
|
assert(a[]() == 0);
|
||||||
assert(a[]()() == 1);
|
assert(a[]()() == 1);
|
||||||
|
for (long long j = 1; j < 100; j++) {
|
||||||
|
A a2;
|
||||||
|
A a3;
|
||||||
|
for (long long k = 0; k < j; k++) {
|
||||||
|
assert(a2 == k);
|
||||||
|
assert(a3 == -k);
|
||||||
|
a2 = a2();
|
||||||
|
a3 = a3[];
|
||||||
|
}
|
||||||
|
assert(a2 == j);
|
||||||
|
assert(a3 == -j);
|
||||||
|
}
|
||||||
int i = a;
|
int i = a;
|
||||||
assert(i == 0);
|
assert(i == 0);
|
||||||
|
i = a()()()()()()()()()()()();
|
||||||
|
assert(i == 12);
|
||||||
|
i = a()()()()()()()()()()();
|
||||||
|
assert(i == 11);
|
||||||
|
i = a()()()()()()()()()()()[];
|
||||||
|
assert(i == 10);
|
||||||
|
i = a()()()()()()()()()();
|
||||||
|
assert(i == 10);
|
||||||
|
i = a()()()()()()()()()()[];
|
||||||
|
assert(i == 9);
|
||||||
|
i = a()()()()()()()()()()[][];
|
||||||
|
assert(i == 8);
|
||||||
|
i = a()()()()()()()()();
|
||||||
|
assert(i == 9);
|
||||||
|
i = a()()()()()()()()()[];
|
||||||
|
assert(i == 8);
|
||||||
|
i = a()()()()()()()()()[][];
|
||||||
|
assert(i == 7);
|
||||||
|
i = a()()()()()()()()()[][][];
|
||||||
|
assert(i == 6);
|
||||||
|
i = a()()()()()()()();
|
||||||
|
assert(i == 8);
|
||||||
|
i = a()()()()()()()()[];
|
||||||
|
assert(i == 7);
|
||||||
|
i = a()()()()()()()()[][];
|
||||||
|
assert(i == 6);
|
||||||
|
i = a()()()()()()()()[][][];
|
||||||
|
assert(i == 5);
|
||||||
|
i = a()()()()()()()()[][][][];
|
||||||
|
assert(i == 4);
|
||||||
|
i = a()()()()()()();
|
||||||
|
assert(i == 7);
|
||||||
|
i = a()()()()()()()[];
|
||||||
|
assert(i == 6);
|
||||||
|
i = a()()()()()()()[][];
|
||||||
|
assert(i == 5);
|
||||||
|
i = a()()()()()()()[][][];
|
||||||
|
assert(i == 4);
|
||||||
|
i = a()()()()()()()[][][][];
|
||||||
|
assert(i == 3);
|
||||||
|
i = a()()()()()()()[][][][][];
|
||||||
|
assert(i == 2);
|
||||||
|
i = a()()()()()();
|
||||||
|
assert(i == 6);
|
||||||
|
i = a()()()()()()[];
|
||||||
|
assert(i == 5);
|
||||||
|
i = a()()()()()()[][];
|
||||||
|
assert(i == 4);
|
||||||
|
i = a()()()()()()[][][];
|
||||||
|
assert(i == 3);
|
||||||
|
i = a()()()()()()[][][][];
|
||||||
|
assert(i == 2);
|
||||||
|
i = a()()()()()()[][][][][];
|
||||||
|
assert(i == 1);
|
||||||
|
i = a()()()()()()[][][][][][];
|
||||||
|
assert(i == 0);
|
||||||
|
i = a()()()()();
|
||||||
|
assert(i == 5);
|
||||||
|
i = a()()()()()[];
|
||||||
|
assert(i == 4);
|
||||||
|
i = a()()()()()[][];
|
||||||
|
assert(i == 3);
|
||||||
|
i = a()()()()()[][][];
|
||||||
|
assert(i == 2);
|
||||||
|
i = a()()()()()[][][][];
|
||||||
|
assert(i == 1);
|
||||||
|
i = a()()()()()[][][][][];
|
||||||
|
assert(i == 0);
|
||||||
|
i = a()()()()()[][][][][][];
|
||||||
|
assert(i == -1);
|
||||||
|
i = a()()()()()[][][][][][][];
|
||||||
|
assert(i == -2);
|
||||||
|
i = a()()()();
|
||||||
|
assert(i == 4);
|
||||||
|
i = a()()()()[];
|
||||||
|
assert(i == 3);
|
||||||
|
i = a()()()()[][];
|
||||||
|
assert(i == 2);
|
||||||
|
i = a()()()()[][][];
|
||||||
|
assert(i == 1);
|
||||||
|
i = a()()()()[][][][];
|
||||||
|
assert(i == 0);
|
||||||
|
i = a()()()()[][][][][];
|
||||||
|
assert(i == -1);
|
||||||
|
i = a()()()()[][][][][][];
|
||||||
|
assert(i == -2);
|
||||||
|
i = a()()()()[][][][][][][];
|
||||||
|
assert(i == -3);
|
||||||
|
i = a()()()()[][][][][][][][];
|
||||||
|
assert(i == -4);
|
||||||
i = a()()();
|
i = a()()();
|
||||||
assert(i == 3);
|
assert(i == 3);
|
||||||
|
i = a()()()[];
|
||||||
|
assert(i == 2);
|
||||||
|
i = a()()()[][];
|
||||||
|
assert(i == 1);
|
||||||
|
i = a()()()[][][];
|
||||||
|
assert(i == 0);
|
||||||
|
i = a()()()[][][][];
|
||||||
|
assert(i == -1);
|
||||||
|
i = a()()()[][][][][];
|
||||||
|
assert(i == -2);
|
||||||
|
i = a()()()[][][][][][];
|
||||||
|
assert(i == -3);
|
||||||
|
i = a()()()[][][][][][][];
|
||||||
|
assert(i == -4);
|
||||||
|
i = a()()()[][][][][][][][];
|
||||||
|
assert(i == -5);
|
||||||
|
i = a()()()[][][][][][][][][];
|
||||||
|
assert(i == -6);
|
||||||
|
i = a()();
|
||||||
|
assert(i == 2);
|
||||||
|
i = a()()[];
|
||||||
|
assert(i == 1);
|
||||||
|
i = a()()[][];
|
||||||
|
assert(i == 0);
|
||||||
|
i = a()()[][][];
|
||||||
|
assert(i == -1);
|
||||||
|
i = a()()[][][][];
|
||||||
|
assert(i == -2);
|
||||||
|
i = a()()[][][][][];
|
||||||
|
assert(i == -3);
|
||||||
|
i = a()()[][][][][][];
|
||||||
|
assert(i == -4);
|
||||||
|
i = a()()[][][][][][][];
|
||||||
|
assert(i == -5);
|
||||||
|
i = a()()[][][][][][][][];
|
||||||
|
assert(i == -6);
|
||||||
|
i = a()()[][][][][][][][][];
|
||||||
|
assert(i == -7);
|
||||||
|
i = a()()[][][][][][][][][][];
|
||||||
|
assert(i == -8);
|
||||||
|
i = a();
|
||||||
|
assert(i == 1);
|
||||||
|
i = a()[];
|
||||||
|
assert(i == 0);
|
||||||
|
i = a()[][];
|
||||||
|
assert(i == -1);
|
||||||
|
i = a()[][][];
|
||||||
|
assert(i == -2);
|
||||||
|
i = a()[][][][];
|
||||||
|
assert(i == -3);
|
||||||
|
i = a()[][][][][];
|
||||||
|
assert(i == -4);
|
||||||
|
i = a()[][][][][][];
|
||||||
|
assert(i == -5);
|
||||||
|
i = a()[][][][][][][];
|
||||||
|
assert(i == -6);
|
||||||
|
i = a()[][][][][][][][];
|
||||||
|
assert(i == -7);
|
||||||
|
i = a()[][][][][][][][][];
|
||||||
|
assert(i == -8);
|
||||||
|
i = a()[][][][][][][][][][];
|
||||||
|
assert(i == -9);
|
||||||
|
i = a()[][][][][][][][][][][];
|
||||||
|
assert(i == -10);
|
||||||
|
i = a;
|
||||||
|
assert(i == 0);
|
||||||
|
i = a[];
|
||||||
|
assert(i == -1);
|
||||||
|
i = a[][];
|
||||||
|
assert(i == -2);
|
||||||
|
i = a[][][];
|
||||||
|
assert(i == -3);
|
||||||
|
i = a[][][][];
|
||||||
|
assert(i == -4);
|
||||||
|
i = a[][][][][];
|
||||||
|
assert(i == -5);
|
||||||
|
i = a[][][][][][];
|
||||||
|
assert(i == -6);
|
||||||
|
i = a[][][][][][][];
|
||||||
|
assert(i == -7);
|
||||||
|
i = a[][][][][][][][];
|
||||||
|
assert(i == -8);
|
||||||
|
i = a[][][][][][][][][];
|
||||||
|
assert(i == -9);
|
||||||
|
i = a[][][][][][][][][][];
|
||||||
|
assert(i == -10);
|
||||||
|
i = a[][][][][][][][][][][];
|
||||||
|
assert(i == -11);
|
||||||
|
i = a[][][][][][][][][][][][];
|
||||||
|
assert(i == -12);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue