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
|
||||
a.out
|
||||
.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[]() == 0);
|
||||
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;
|
||||
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()()();
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue