From f2976c2d08db3f940735d3b7727a18c10ef8b5c1 Mon Sep 17 00:00:00 2001 From: Rob Austein Date: Fri, 12 Apr 2024 14:58:54 -0400 Subject: split out test code --- rfc1982_serial_number.py | 22 ++++++++++++---------- test.py | 15 +++++++++++++++ 2 files changed, 27 insertions(+), 10 deletions(-) mode change 100644 => 100755 rfc1982_serial_number.py create mode 100755 test.py diff --git a/rfc1982_serial_number.py b/rfc1982_serial_number.py old mode 100644 new mode 100755 index 9cb1a09..39fc414 --- a/rfc1982_serial_number.py +++ b/rfc1982_serial_number.py @@ -47,16 +47,18 @@ def step(start, finish): assert start < midpoint and midpoint < finish return start, midpoint, finish -if __name__ == "__main__": - from random import randint +def show(steps): + print(" => ".join(str(s) for s in steps)) + +def main(): + from argparse import ArgumentParser - for test in range(10000): - i1 = Serial(randint(0, Serial.modulus - 1)) - i2 = Serial(randint(0, Serial.modulus - 1)) + ap = ArgumentParser() + ap.add_argument("start", type = Serial) + ap.add_argument("finish", type = Serial) + args = ap.parse_args() - assert i1 == i2 or \ - (i1 < i2 and not (i1 > i2)) or \ - (i1 > i2 and not (i1 < i2)) or \ - int(i1) & int(i2) == Serial.modulus >> 1 + show(step(args.start, args.finish)) - print(f"{i1} => {i2}: {', '.join(str(s) for s in step(i1, i2))}") +if __name__ == "__main__": + main() diff --git a/test.py b/test.py new file mode 100755 index 0000000..cd48e1c --- /dev/null +++ b/test.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 + +from rfc1982_serial_number import Serial, step, show +from random import randint + +for test in range(10000): + i1 = Serial(randint(0, Serial.modulus - 1)) + i2 = Serial(randint(0, Serial.modulus - 1)) + + assert i1 == i2 or \ + (i1 < i2 and not (i1 > i2)) or \ + (i1 > i2 and not (i1 < i2)) or \ + int(i1) & int(i2) == Serial.modulus >> 1 + + show(step(i1, i2)) -- cgit v1.2.3