From d88ba5accc205ea539f9eab8da4ce8545e94cbb2 Mon Sep 17 00:00:00 2001 From: Pagwin Date: Wed, 11 Dec 2024 15:04:16 -0500 Subject: [PATCH] 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 --- .gitignore | 1 + gen_track_cases.py | 37 +++++++++ track.cpp | 192 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 230 insertions(+) create mode 100644 gen_track_cases.py diff --git a/.gitignore b/.gitignore index 33c36d8..242cf5b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ s t a.out .clangd +tests diff --git a/gen_track_cases.py b/gen_track_cases.py new file mode 100644 index 0000000..7c5077e --- /dev/null +++ b/gen_track_cases.py @@ -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) diff --git a/track.cpp b/track.cpp index a3a2d95..94d43a6 100644 --- a/track.cpp +++ b/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; }