|
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