2018-09-03 09:19:27 +02:00
|
|
|
import random
|
2020-05-25 07:46:30 +00:00
|
|
|
|
2018-09-03 09:19:27 +02:00
|
|
|
from pycalver import lex_id
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_next_id_basic():
|
|
|
|
|
assert lex_id.next_id("01") == "02"
|
|
|
|
|
assert lex_id.next_id("09") == "110"
|
|
|
|
|
|
|
|
|
|
|
2018-09-03 22:23:51 +02:00
|
|
|
def test_next_id_overflow():
|
|
|
|
|
try:
|
|
|
|
|
prev_id = "9999"
|
|
|
|
|
next_id = lex_id.next_id(prev_id)
|
|
|
|
|
assert False, (prev_id, "->", next_id)
|
|
|
|
|
except OverflowError:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
2018-09-03 09:19:27 +02:00
|
|
|
def test_next_id_random():
|
|
|
|
|
for i in range(1000):
|
2018-12-09 14:55:13 +01:00
|
|
|
prev_id = str(random.randint(1, 100 * 1000))
|
2018-09-03 22:23:51 +02:00
|
|
|
try:
|
|
|
|
|
next_id = lex_id.next_id(prev_id)
|
|
|
|
|
assert prev_id < next_id
|
|
|
|
|
except OverflowError:
|
|
|
|
|
assert len(prev_id) == prev_id.count("9")
|
2018-09-03 09:19:27 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_ord_val():
|
2018-11-06 21:45:33 +01:00
|
|
|
assert lex_id.ord_val("1" ) == 1
|
|
|
|
|
assert lex_id.ord_val("01" ) == 1
|
|
|
|
|
assert lex_id.ord_val("02" ) == 2
|
|
|
|
|
assert lex_id.ord_val("09" ) == 9
|
2018-09-03 09:19:27 +02:00
|
|
|
assert lex_id.ord_val("110") == 10
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_main(capsys):
|
2018-11-15 22:16:16 +01:00
|
|
|
lex_id._main()
|
2018-09-03 09:19:27 +02:00
|
|
|
captured = capsys.readouterr()
|
|
|
|
|
assert len(captured.err) == 0
|
|
|
|
|
|
2018-11-06 21:45:33 +01:00
|
|
|
lines = iter(captured.out.splitlines())
|
2018-09-03 09:19:27 +02:00
|
|
|
header = next(lines)
|
|
|
|
|
|
|
|
|
|
assert "lexical" in header
|
|
|
|
|
assert "numerical" in header
|
|
|
|
|
|
2018-11-06 21:45:33 +01:00
|
|
|
ids = []
|
2018-09-03 09:19:27 +02:00
|
|
|
ord_vals = []
|
|
|
|
|
|
|
|
|
|
for line in lines:
|
|
|
|
|
if "..." in line:
|
|
|
|
|
continue
|
|
|
|
|
_id, _ord_val = line.split()
|
|
|
|
|
|
|
|
|
|
assert _id.endswith(_ord_val)
|
|
|
|
|
assert int(_ord_val) == int(_ord_val, 10)
|
|
|
|
|
|
|
|
|
|
ids.append(_id.strip())
|
|
|
|
|
ord_vals.append(int(_ord_val.strip()))
|
|
|
|
|
|
|
|
|
|
assert len(ids) > 0
|
2019-02-14 22:05:02 +01:00
|
|
|
assert sorted(ids) == ids
|
2018-09-03 09:19:27 +02:00
|
|
|
assert sorted(ord_vals) == ord_vals
|