bumpver/test/test_lex_id.py

65 lines
1.5 KiB
Python
Raw Normal View History

2018-09-03 09:19:27 +02:00
import random
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
2018-11-06 21:45:33 +01:00
assert sorted(ids ) == ids
2018-09-03 09:19:27 +02:00
assert sorted(ord_vals) == ord_vals