|
1 | 1 | from rmqrcode.segments import SegmentOptimizer, compute_length |
2 | | -from rmqrcode import encoder |
| 2 | +from rmqrcode import encoder, ErrorCorrectionLevel, DataTooLongError |
3 | 3 | import pytest |
4 | 4 |
|
5 | 5 |
|
6 | 6 | class TestSegments: |
7 | 7 | def test_can_optimize_segments_numeric_and_byte(self): |
8 | 8 | optimizer = SegmentOptimizer() |
9 | | - segments = optimizer.compute("123Abc", "R7x43") |
| 9 | + segments = optimizer.compute("123Abc", "R7x43", ErrorCorrectionLevel.M) |
10 | 10 | assert segments == [ |
11 | 11 | {"data": "123", "encoder_class": encoder.NumericEncoder}, |
12 | 12 | {"data": "Abc", "encoder_class": encoder.ByteEncoder}, |
13 | 13 | ] |
14 | 14 |
|
15 | 15 | def test_can_optimize_segments_alphanumeric_and_kanji(self): |
16 | 16 | optimizer = SegmentOptimizer() |
17 | | - segments = optimizer.compute("17:30集合", "R7x59") |
| 17 | + segments = optimizer.compute("17:30集合", "R7x59", ErrorCorrectionLevel.M) |
18 | 18 | assert segments == [ |
19 | 19 | {"data": "17:30", "encoder_class": encoder.AlphanumericEncoder}, |
20 | 20 | {"data": "集合", "encoder_class": encoder.KanjiEncoder}, |
21 | 21 | ] |
22 | 22 |
|
23 | 23 | def test_can_optimize_segments_numeric_only(self): |
24 | 24 | optimizer = SegmentOptimizer() |
25 | | - segments = optimizer.compute("123456", "R7x59") |
| 25 | + segments = optimizer.compute("123456", "R7x59", ErrorCorrectionLevel.M) |
26 | 26 | assert segments == [ |
27 | 27 | {"data": "123456", "encoder_class": encoder.NumericEncoder}, |
28 | 28 | ] |
29 | 29 |
|
30 | 30 | def test_can_optimize_segments_alphanumeric_only(self): |
31 | 31 | optimizer = SegmentOptimizer() |
32 | | - segments = optimizer.compute("HTTPS://", "R7x59") |
| 32 | + segments = optimizer.compute("HTTPS://", "R7x59", ErrorCorrectionLevel.M) |
33 | 33 | assert segments == [ |
34 | 34 | {"data": "HTTPS://", "encoder_class": encoder.AlphanumericEncoder}, |
35 | 35 | ] |
36 | 36 |
|
37 | 37 | def test_can_optimize_segments_byte_only(self): |
38 | 38 | optimizer = SegmentOptimizer() |
39 | | - segments = optimizer.compute("1+zY!a:K", "R7x59") |
| 39 | + segments = optimizer.compute("1+zY!a:K", "R7x59", ErrorCorrectionLevel.M) |
40 | 40 | assert segments == [ |
41 | 41 | {"data": "1+zY!a:K", "encoder_class": encoder.ByteEncoder}, |
42 | 42 | ] |
43 | 43 |
|
44 | 44 | def test_can_optimize_segments_kanji_only(self): |
45 | 45 | optimizer = SegmentOptimizer() |
46 | | - segments = optimizer.compute("漢字", "R7x59") |
| 46 | + segments = optimizer.compute("漢字", "R7x59", ErrorCorrectionLevel.M) |
47 | 47 | assert segments == [ |
48 | 48 | {"data": "漢字", "encoder_class": encoder.KanjiEncoder}, |
49 | 49 | ] |
50 | 50 |
|
| 51 | + def test_optimize_segments_raises_data_too_long_error(self): |
| 52 | + optimizer = SegmentOptimizer() |
| 53 | + with pytest.raises(DataTooLongError) as e: |
| 54 | + segments = optimizer.compute("a" * 12, "R7x59", ErrorCorrectionLevel.M) |
| 55 | + |
51 | 56 | def test_compute_length(self): |
52 | 57 | optimizer = SegmentOptimizer() |
53 | | - segments = optimizer.compute("123Abc", "R7x43") |
| 58 | + segments = optimizer.compute("123Abc", "R7x43", ErrorCorrectionLevel.M) |
54 | 59 | assert compute_length(segments, "R7x43") is 47 |
0 commit comments