-
Notifications
You must be signed in to change notification settings - Fork 170
/
code_93_test.rb
144 lines (108 loc) · 4.28 KB
/
code_93_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#encoding: ASCII
require 'test_helper'
require 'barby/barcode/code_93'
class Code93Test < Barby::TestCase
before do
@data = 'TEST93'
@code = Code93.new(@data)
end
it "should return the same data we put in" do
@code.data.must_equal @data
end
it "should have the expected characters" do
@code.characters.must_equal @data.split(//)
end
it "should have the expected start_encoding" do
@code.start_encoding.must_equal '101011110'
end
it "should have the expected stop_encoding" do
# STOP TERM
@code.stop_encoding.must_equal '1010111101'
end
it "should have the expected encoded characters" do
# T E S T 9 3
@code.encoded_characters.must_equal %w(110100110 110010010 110101100 110100110 100001010 101000010)
end
it "should have the expected data_encoding" do
# T E S T 9 3
@code.data_encoding.must_equal "110100110110010010110101100110100110100001010101000010"
end
it "should have the expected data_encoding_with_checksums" do
# T E S T 9 3 + (C) 6 (K)
@code.data_encoding_with_checksums.must_equal "110100110110010010110101100110100110100001010101000010101110110100100010"
end
it "should have the expected encoding" do
# START T E S T 9 3 + (C) 6 (K) STOP TERM
@code.encoding.must_equal "1010111101101001101100100101101011001101001101000010101010000101011101101001000101010111101"
end
it "should have the expected checksum_values" do
@code.checksum_values.must_equal [29, 14, 28, 29, 9, 3].reverse #!
end
it "should have the expected c_checksum" do
@code.c_checksum.must_equal 41 #calculate this first!
end
it "should have the expected c_checksum_character" do
@code.c_checksum_character.must_equal '+'
end
it "should have the expected c_checksum_encoding" do
@code.c_checksum_encoding.must_equal '101110110'
end
it "should have the expected checksum_values_with_c_checksum" do
@code.checksum_values_with_c_checksum.must_equal [29, 14, 28, 29, 9, 3, 41].reverse #!
end
it "should have the expected k_checksum" do
@code.k_checksum.must_equal 6 #calculate this first!
end
it "should have the expected k_checksum_character" do
@code.k_checksum_character.must_equal '6'
end
it "should have the expected k_checksum_encoding" do
@code.k_checksum_encoding.must_equal '100100010'
end
it "should have the expected checksums" do
@code.checksums.must_equal [41, 6]
end
it "should have the expected checksum_characters" do
@code.checksum_characters.must_equal ['+', '6']
end
it "should have the expected checksum_encodings" do
@code.checksum_encodings.must_equal %w(101110110 100100010)
end
it "should have the expected checksum_encoding" do
@code.checksum_encoding.must_equal '101110110100100010'
end
it "should be valid" do
assert @code.valid?
end
it "should not be valid when not in extended mode" do
@code.data = 'not extended'
end
it "should return data with no checksums on to_s" do
@code.to_s.must_equal 'TEST93'
end
describe "Extended mode" do
before do
@data = "Extended!"
@code = Code93.new(@data)
end
it "should be extended" do
assert @code.extended?
end
it "should convert extended characters to special shift characters" do
@code.characters.must_equal ["E", "\304", "X", "\304", "T", "\304", "E", "\304", "N", "\304", "D", "\304", "E", "\304", "D", "\303", "A"]
end
it "should have the expected data_encoding" do
@code.data_encoding.must_equal '110010010100110010101100110100110010110100110100110010110010010'+
'100110010101000110100110010110010100100110010110010010100110010110010100111010110110101000'
end
it "should have the expected c_checksum" do
@code.c_checksum.must_equal 9
end
it "should have the expected k_checksum" do
@code.k_checksum.must_equal 46
end
it "should return the original data on to_s with no checksums" do
@code.to_s.must_equal 'Extended!'
end
end
end