aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorNavid Samanghoon <nsama24@student.sdu.dk>2025-10-27 10:41:27 +0100
committermithe24 <mithe24@student.sdu.dk>2025-10-29 13:49:57 +0100
commit23706d7d9d79e3b7e6bc2079307a2574123d1d4f (patch)
tree7faf939a7eae70b0cc56d995f6180bf2f667b460 /test
parent4f17cf1441ebbe13137bdd2acf4a7ba3228b80b5 (diff)
downloadsorter-23706d7d9d79e3b7e6bc2079307a2574123d1d4f.tar.gz
sorter-23706d7d9d79e3b7e6bc2079307a2574123d1d4f.zip
Check.py
Diffstat (limited to '')
-rw-r--r--test/check.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/test/check.py b/test/check.py
new file mode 100644
index 0000000..e667323
--- /dev/null
+++ b/test/check.py
@@ -0,0 +1,63 @@
+import sys
+
+if len(sys.argv) < 3:
+ print("Filename(s) missing.", file=sys.stderr)
+ print("Usage: check.py <unsortedInputFile> <sortedFileToCheck>",
+ file=sys.stderr)
+ sys.exit(1)
+
+
+with open(sys.argv[2]) as f:
+ candLines = list(f)
+
+for lineNum in range(len(candLines)):
+ l = candLines[lineNum]
+ fields = l.split()
+ if len(fields) != 2:
+ print("Line %d does not have 2 fields but %d. The line is\n%s"
+ % (lineNum + 1, len(fields), l), end="", file=sys.stderr)
+ sys.exit(2)
+ try:
+ data = [int(f) for f in fields]
+ except ValueError as e:
+ print("Error in conversion to integers in line %d. The line is\n%s"
+ % (lineNum + 1, l), end="", file=sys.stderr)
+ sys.exit(3)
+ if lineNum == 0:
+ prev = data
+ continue
+ if prev[1] > data[1]:
+ print("Disorder between line %d and %d. Lines are\n%s%s"
+ % (lineNum, lineNum + 1,
+ candLines[lineNum - 1], l), end="", file=sys.stderr)
+ sys.exit(4)
+ prev = data
+
+with open(sys.argv[1]) as f:
+ unsortedLines = list(f)
+
+candLines.sort()
+unsortedLines.sort()
+
+for (l, lCand) in zip(unsortedLines, candLines):
+ if l == lCand:
+ continue
+ print("Mismatch between sorted data and original unsorted data.", file=sys.stderr)
+ print("Unsorted line:", file=sys.stderr)
+ print(l, end="", file=sys.stderr)
+ print("Sorted line:", file=sys.stderr)
+ print(lCand, end="", file=sys.stderr)
+ sys.exit(5)
+
+if len(unsortedLines) < len(candLines):
+ print("There are too many lines in the sorted data %d, but should have been %d." % (len(candLines), len(unsortedLines)), file=sys.stderr)
+ print("Extra lines:", file=sys.stderr)
+ for l in candLines[len(unsortedLines):]:
+ print(l, end="", file=sys.stderr)
+ sys.exit(6)
+elif len(unsortedLines) > len(candLines):
+ print("There are too few lines in the sorted data %d, but should have been %d." % (len(candLines), len(unsortedLines)), file=sys.stderr)
+ print("Missing lines:", file=sys.stderr)
+ for l in unsortedLines[len(candLines):]:
+ print(l, end="", file=sys.stderr)
+ sys.exit(7)