barby 0.6.5 → 0.6.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/CHANGELOG +8 -0
  4. data/Gemfile +5 -0
  5. data/README.md +21 -20
  6. data/Rakefile +15 -0
  7. data/barby.gemspec +31 -0
  8. data/lib/barby/barcode/codabar.rb +82 -0
  9. data/lib/barby/barcode.rb +3 -3
  10. data/lib/barby/outputter/cairo_outputter.rb +11 -3
  11. data/lib/barby/outputter/png_outputter.rb +43 -11
  12. data/lib/barby/outputter/prawn_outputter.rb +12 -9
  13. data/lib/barby/outputter/rmagick_outputter.rb +38 -11
  14. data/lib/barby/outputter/svg_outputter.rb +11 -18
  15. data/lib/barby/outputter.rb +1 -1
  16. data/lib/barby/version.rb +2 -2
  17. data/test/barcodes.rb +20 -0
  18. data/test/bookland_test.rb +54 -0
  19. data/test/codabar_test.rb +58 -0
  20. data/test/code_128_test.rb +470 -0
  21. data/test/code_25_iata_test.rb +19 -0
  22. data/test/code_25_interleaved_test.rb +116 -0
  23. data/test/code_25_test.rb +110 -0
  24. data/test/code_39_test.rb +210 -0
  25. data/test/code_93_test.rb +144 -0
  26. data/test/data_matrix_test.rb +30 -0
  27. data/test/ean13_test.rb +169 -0
  28. data/test/ean8_test.rb +100 -0
  29. data/test/outputter/cairo_outputter_test.rb +129 -0
  30. data/test/outputter/html_outputter_test.rb +68 -0
  31. data/test/outputter/pdfwriter_outputter_test.rb +37 -0
  32. data/test/outputter/png_outputter_test.rb +49 -0
  33. data/test/outputter/prawn_outputter_test.rb +79 -0
  34. data/test/outputter/rmagick_outputter_test.rb +83 -0
  35. data/test/outputter/svg_outputter_test.rb +89 -0
  36. data/test/outputter_test.rb +134 -0
  37. data/test/pdf_417_test.rb +45 -0
  38. data/test/qr_code_test.rb +78 -0
  39. data/test/test_helper.rb +24 -0
  40. data/test/upc_supplemental_test.rb +109 -0
  41. metadata +157 -7
@@ -0,0 +1,116 @@
1
+ require 'test_helper'
2
+ require 'barby/barcode/code_25_interleaved'
3
+
4
+ class Code25InterleavedTest < Barby::TestCase
5
+
6
+ before do
7
+ @data = '12345670'
8
+ @code = Code25Interleaved.new(@data)
9
+ end
10
+
11
+ it "should have the expected digit_pairs" do
12
+ @code.digit_pairs.must_equal [[1,2],[3,4],[5,6],[7,0]]
13
+ end
14
+
15
+ it "should have the expected digit_encodings" do
16
+ @code.digit_encodings.must_equal %w(111010001010111000 111011101000101000 111010001110001010 101010001110001110)
17
+ end
18
+
19
+ it "should have the expected start_encoding" do
20
+ @code.start_encoding.must_equal '1010'
21
+ end
22
+
23
+ it "should have the expected stop_encoding" do
24
+ @code.stop_encoding.must_equal '11101'
25
+ end
26
+
27
+ it "should have the expected data_encoding" do
28
+ @code.data_encoding.must_equal "111010001010111000111011101000101000111010001110001010101010001110001110"
29
+ end
30
+
31
+ it "should have the expected encoding" do
32
+ @code.encoding.must_equal "101011101000101011100011101110100010100011101000111000101010101000111000111011101"
33
+ end
34
+
35
+ it "should be valid" do
36
+ assert @code.valid?
37
+ end
38
+
39
+ it "should return the expected encoding for parameters passed to encoding_for_interleaved" do
40
+ w, n = Code25Interleaved::WIDE, Code25Interleaved::NARROW
41
+ # 1 2 1 2 1 2 1 2 1 2 digits 1 and 2
42
+ # B S B S B S B S B S bars and spaces
43
+ @code.encoding_for_interleaved(w,n,n,w,n,n,n,n,w,w).must_equal '111010001010111000'
44
+ # 3 4 3 4 3 4 3 4 3 4 digits 3 and 4
45
+ # B S B S B S B S B S bars and spaces
46
+ @code.encoding_for_interleaved(w,n,w,n,n,w,n,n,n,w).must_equal '111011101000101000'
47
+ end
48
+
49
+ it "should return all characters in sequence for to_s" do
50
+ @code.to_s.must_equal @code.characters.join
51
+ end
52
+
53
+ describe "with checksum" do
54
+
55
+ before do
56
+ @data = '1234567'
57
+ @code = Code25Interleaved.new(@data)
58
+ @code.include_checksum = true
59
+ end
60
+
61
+ it "should have the expected digit_pairs_with_checksum" do
62
+ @code.digit_pairs_with_checksum.must_equal [[1,2],[3,4],[5,6],[7,0]]
63
+ end
64
+
65
+ it "should have the expected digit_encodings_with_checksum" do
66
+ @code.digit_encodings_with_checksum.must_equal %w(111010001010111000 111011101000101000 111010001110001010 101010001110001110)
67
+ end
68
+
69
+ it "should have the expected data_encoding_with_checksum" do
70
+ @code.data_encoding_with_checksum.must_equal "111010001010111000111011101000101000111010001110001010101010001110001110"
71
+ end
72
+
73
+ it "should have the expected encoding" do
74
+ @code.encoding.must_equal "101011101000101011100011101110100010100011101000111000101010101000111000111011101"
75
+ end
76
+
77
+ it "should be valid" do
78
+ assert @code.valid?
79
+ end
80
+
81
+ it "should return all characters including checksum in sequence on to_s" do
82
+ @code.to_s.must_equal @code.characters_with_checksum.join
83
+ end
84
+
85
+ end
86
+
87
+ describe "with invalid number of digits" do
88
+
89
+ before do
90
+ @data = '1234567'
91
+ @code = Code25Interleaved.new(@data)
92
+ end
93
+
94
+ it "should not be valid" do
95
+ refute @code.valid?
96
+ end
97
+
98
+ it "should raise ArgumentError on all encoding methods" do
99
+ lambda{ @code.encoding }.must_raise(ArgumentError)
100
+ lambda{ @code.data_encoding }.must_raise(ArgumentError)
101
+ lambda{ @code.digit_encodings }.must_raise(ArgumentError)
102
+ end
103
+
104
+ it "should not raise ArgumentError on encoding methods that include checksum" do
105
+ b = Code25Interleaved.new(@data)
106
+ b.include_checksum = true
107
+ b.encoding
108
+ @code.data_encoding_with_checksum
109
+ @code.digit_encodings_with_checksum
110
+ end
111
+
112
+ end
113
+
114
+ end
115
+
116
+
@@ -0,0 +1,110 @@
1
+ require 'test_helper'
2
+ require 'barby/barcode/code_25'
3
+
4
+ class Code25Test < Barby::TestCase
5
+
6
+ before do
7
+ @data = "1234567"
8
+ @code = Code25.new(@data)
9
+ end
10
+
11
+ it "should return the same data it was given" do
12
+ @code.data.must_equal @data
13
+ end
14
+
15
+ it "should have the expected characters" do
16
+ @code.characters.must_equal %w(1 2 3 4 5 6 7)
17
+ end
18
+
19
+ it "should have the expected characters_with_checksum" do
20
+ @code.characters_with_checksum.must_equal %w(1 2 3 4 5 6 7 0)
21
+ end
22
+
23
+ it "should have the expected digits" do
24
+ @code.digits.must_equal [1,2,3,4,5,6,7]
25
+ end
26
+
27
+ it "should have the expected digits_with_checksum" do
28
+ @code.digits_with_checksum.must_equal [1,2,3,4,5,6,7,0]
29
+ end
30
+
31
+ it "should have the expected even_and_odd_digits" do
32
+ @code.even_and_odd_digits.must_equal [[7,5,3,1], [6,4,2]]
33
+ end
34
+
35
+ it "should have the expected start_encoding" do
36
+ @code.start_encoding.must_equal '1110111010'
37
+ end
38
+
39
+ it "should have the expected stop_encoding" do
40
+ @code.stop_encoding.must_equal '111010111'
41
+ end
42
+
43
+ it "should have a default narrow_width of 1" do
44
+ @code.narrow_width.must_equal 1
45
+ end
46
+
47
+ it "should have a default wide_width equal to narrow_width * 3" do
48
+ @code.wide_width.must_equal @code.narrow_width * 3
49
+ @code.narrow_width = 2
50
+ @code.wide_width.must_equal 6
51
+ end
52
+
53
+ it "should have a default space_width equal to narrow_width" do
54
+ @code.space_width.must_equal @code.narrow_width
55
+ @code.narrow_width = 23
56
+ @code.space_width.must_equal 23
57
+ end
58
+
59
+ it "should have the expected digit_encodings" do
60
+ @code.digit_encodings.must_equal %w(11101010101110 10111010101110 11101110101010 10101110101110 11101011101010 10111011101010 10101011101110)
61
+ end
62
+
63
+ it "should have the expected digit_encodings_with_checksum" do
64
+ @code.digit_encodings_with_checksum.must_equal %w(11101010101110 10111010101110 11101110101010 10101110101110 11101011101010 10111011101010 10101011101110 10101110111010)
65
+ end
66
+
67
+ it "should have the expected data_encoding" do
68
+ @code.data_encoding.must_equal "11101010101110101110101011101110111010101010101110101110111010111010101011101110101010101011101110"
69
+ end
70
+
71
+ it "should have the expected checksum" do
72
+ @code.checksum.must_equal 0
73
+ end
74
+
75
+ it "should have the expected checksum_encoding" do
76
+ @code.checksum_encoding.must_equal '10101110111010'
77
+ end
78
+
79
+ it "should have the expected encoding" do
80
+ @code.encoding.must_equal "111011101011101010101110101110101011101110111010101010101110101110111010111010101011101110101010101011101110111010111"
81
+ end
82
+
83
+ it "should be valid" do
84
+ assert @code.valid?
85
+ end
86
+
87
+ it "should not be valid" do
88
+ @code.data = 'abc'
89
+ refute @code.valid?
90
+ end
91
+
92
+ it "should raise on encoding methods that include data encoding if not valid" do
93
+ @code.data = 'abc'
94
+ lambda{ @code.encoding }.must_raise ArgumentError
95
+ lambda{ @code.data_encoding }.must_raise ArgumentError
96
+ lambda{ @code.data_encoding_with_checksum }.must_raise ArgumentError
97
+ lambda{ @code.digit_encodings }.must_raise ArgumentError
98
+ lambda{ @code.digit_encodings_with_checksum }.must_raise ArgumentError
99
+ end
100
+
101
+ it "should return all characters in sequence on to_s" do
102
+ @code.to_s.must_equal @code.characters.join
103
+ end
104
+
105
+ it "should include checksum in to_s when include_checksum is true" do
106
+ @code.include_checksum = true
107
+ @code.to_s.must_equal @code.characters_with_checksum.join
108
+ end
109
+
110
+ end
@@ -0,0 +1,210 @@
1
+ #encoding: ASCII
2
+ require 'test_helper'
3
+ require 'barby/barcode/code_39'
4
+
5
+ class Code39Test < Barby::TestCase
6
+
7
+ before do
8
+ @data = 'TEST8052'
9
+ @code = Code39.new(@data)
10
+ @code.spacing = 3
11
+ end
12
+
13
+ it "should yield self on initialize" do
14
+ c1 = nil
15
+ c2 = Code39.new('TEST'){|c| c1 = c }
16
+ c1.must_equal c2
17
+ end
18
+
19
+ it "should have the expected data" do
20
+ @code.data.must_equal @data
21
+ end
22
+
23
+ it "should have the expected characters" do
24
+ @code.characters.must_equal @data.split(//)
25
+ end
26
+
27
+ it "should have the expected start_encoding" do
28
+ @code.start_encoding.must_equal '100101101101'
29
+ end
30
+
31
+ it "should have the expected stop_encoding" do
32
+ @code.stop_encoding.must_equal '100101101101'
33
+ end
34
+
35
+ it "should have the expected spacing_encoding" do
36
+ @code.spacing_encoding.must_equal '000'
37
+ end
38
+
39
+ it "should have the expected encoded characters" do
40
+ @code.encoded_characters.must_equal %w(101011011001 110101100101 101101011001 101011011001 110100101101 101001101101 110100110101 101100101011)
41
+ end
42
+
43
+ it "should have the expected data_encoding" do
44
+ @code.data_encoding.must_equal '101011011001000110101100101000101101011001000101011011001000110100101101000101001101101000110100110101000101100101011'
45
+ end
46
+
47
+ it "should have the expected encoding" do
48
+ @code.encoding.must_equal '100101101101000101011011001000110101100101000101101011001000101011011001000110100101101000101001101101000110100110101000101100101011000100101101101'
49
+ end
50
+
51
+ it "should be valid" do
52
+ assert @code.valid?
53
+ end
54
+
55
+ it "should not be valid" do
56
+ @code.data = "123\200456"
57
+ refute @code.valid?
58
+ end
59
+
60
+ it "should raise an exception when data is not valid on initialization" do
61
+ lambda{ Code39.new('abc') }.must_raise(ArgumentError)
62
+ end
63
+
64
+ it "should return all characters in sequence without checksum on to_s" do
65
+ @code.to_s.must_equal @data
66
+ end
67
+
68
+ describe "Checksumming" do
69
+
70
+ before do
71
+ @code = Code39.new('CODE39')
72
+ end
73
+
74
+ it "should have the expected checksum" do
75
+ @code.checksum.must_equal 32
76
+ end
77
+
78
+ it "should have the expected checksum_character" do
79
+ @code.checksum_character.must_equal 'W'
80
+ end
81
+
82
+ it "should have the expected checksum_encoding" do
83
+ @code.checksum_encoding.must_equal '110011010101'
84
+ end
85
+
86
+ it "should have the expected characters_with_checksum" do
87
+ @code.characters_with_checksum.must_equal %w(C O D E 3 9 W)
88
+ end
89
+
90
+ it "should have the expected encoded_characters_with_checksum" do
91
+ @code.encoded_characters_with_checksum.must_equal %w(110110100101 110101101001 101011001011 110101100101 110110010101 101100101101 110011010101)
92
+ end
93
+
94
+ it "should have the expected data_encoding_with_checksum" do
95
+ @code.data_encoding_with_checksum.must_equal "110110100101011010110100101010110010110110101100101011011001010101011001011010110011010101"
96
+ end
97
+
98
+ it "should have the expected encoding_with_checksum" do
99
+ @code.encoding_with_checksum.must_equal "10010110110101101101001010110101101001010101100101101101011001010110110010101010110010110101100110101010100101101101"
100
+ end
101
+
102
+ it "should return the encoding with checksum when include_checksum == true" do
103
+ @code.include_checksum = true
104
+ @code.encoding.must_equal "10010110110101101101001010110101101001010101100101101101011001010110110010101010110010110101100110101010100101101101"
105
+ end
106
+
107
+ end
108
+
109
+ describe "Normal encoding" do
110
+
111
+ before do
112
+ @data = 'ABC$%'
113
+ @code = Code39.new(@data)
114
+ end
115
+
116
+ it "should have the expected characters" do
117
+ @code.characters.must_equal %w(A B C $ %)
118
+ end
119
+
120
+ it "should have the expected encoded_characters" do
121
+ @code.encoded_characters.must_equal %w(110101001011 101101001011 110110100101 100100100101 101001001001)
122
+ end
123
+
124
+ it "should have the expected data_encoding" do
125
+ @code.data_encoding.must_equal '1101010010110101101001011011011010010101001001001010101001001001'
126
+ end
127
+
128
+ it "should not be valid" do
129
+ @code.data = 'abc'
130
+ refute @code.valid?
131
+ end
132
+
133
+ end
134
+
135
+ describe "Extended encoding" do
136
+
137
+ before do
138
+ @data = '<abc>'
139
+ @code = Code39.new(@data, true)
140
+ end
141
+
142
+ it "should return true on extended?" do
143
+ assert @code.extended?
144
+ end
145
+
146
+ it "should have the expected characters" do
147
+ @code.characters.must_equal %w(% G + A + B + C % I)
148
+ end
149
+
150
+ it "should have the expected encoded_characters" do
151
+ @code.encoded_characters.must_equal %w(101001001001 101010011011 100101001001 110101001011 100101001001 101101001011 100101001001 110110100101 101001001001 101101001101)
152
+ end
153
+
154
+ it "should have the expected data_encoding" do
155
+ @code.data_encoding.must_equal '101001001001010101001101101001010010010110101001011010010100100101011010010110100101001001011011010010101010010010010101101001101'
156
+ end
157
+
158
+ it "should have the expected encoding" do
159
+ @code.encoding.must_equal '10010110110101010010010010101010011011010010100100101101010010110100101001001'+
160
+ '010110100101101001010010010110110100101010100100100101011010011010100101101101'
161
+ end
162
+
163
+ it "should take a second parameter on initialize indicating it is extended" do
164
+ assert Code39.new('abc', true).extended?
165
+ refute Code39.new('ABC', false).extended?
166
+ refute Code39.new('ABC').extended?
167
+ end
168
+
169
+ it "should be valid" do
170
+ assert @code.valid?
171
+ end
172
+
173
+ it "should not be valid" do
174
+ @code.data = "abc\200123"
175
+ refute @code.valid?
176
+ end
177
+
178
+ it "should return all characters in sequence without checksum on to_s" do
179
+ @code.to_s.must_equal @data
180
+ end
181
+
182
+ end
183
+
184
+ describe "Variable widths" do
185
+
186
+ before do
187
+ @data = 'ABC$%'
188
+ @code = Code39.new(@data)
189
+ @code.narrow_width = 2
190
+ @code.wide_width = 5
191
+ end
192
+
193
+ it "should have the expected encoded_characters" do
194
+ @code.encoded_characters.must_equal %w(111110011001100000110011111 110011111001100000110011111 111110011111001100000110011 110000011000001100000110011 110011000001100000110000011)
195
+ end
196
+
197
+ it "should have the expected data_encoding" do
198
+ # A SB SC S$ S%
199
+ @code.data_encoding.must_equal '1111100110011000001100111110110011111001100000110011111011111001111100110000011001101100000110000011000001100110110011000001100000110000011'
200
+
201
+ @code.spacing = 3
202
+ # A S B S C S $ S %
203
+ @code.data_encoding.must_equal '111110011001100000110011111000110011111001100000110011111000111110011111001100000110011000110000011000001100000110011000110011000001100000110000011'
204
+ end
205
+
206
+ end
207
+
208
+ end
209
+
210
+
@@ -0,0 +1,144 @@
1
+ #encoding: ASCII
2
+ require 'test_helper'
3
+ require 'barby/barcode/code_93'
4
+
5
+ class Code93Test < Barby::TestCase
6
+
7
+ before do
8
+ @data = 'TEST93'
9
+ @code = Code93.new(@data)
10
+ end
11
+
12
+ it "should return the same data we put in" do
13
+ @code.data.must_equal @data
14
+ end
15
+
16
+ it "should have the expected characters" do
17
+ @code.characters.must_equal @data.split(//)
18
+ end
19
+
20
+ it "should have the expected start_encoding" do
21
+ @code.start_encoding.must_equal '101011110'
22
+ end
23
+
24
+ it "should have the expected stop_encoding" do
25
+ # STOP TERM
26
+ @code.stop_encoding.must_equal '1010111101'
27
+ end
28
+
29
+ it "should have the expected encoded characters" do
30
+ # T E S T 9 3
31
+ @code.encoded_characters.must_equal %w(110100110 110010010 110101100 110100110 100001010 101000010)
32
+ end
33
+
34
+ it "should have the expected data_encoding" do
35
+ # T E S T 9 3
36
+ @code.data_encoding.must_equal "110100110110010010110101100110100110100001010101000010"
37
+ end
38
+
39
+ it "should have the expected data_encoding_with_checksums" do
40
+ # T E S T 9 3 + (C) 6 (K)
41
+ @code.data_encoding_with_checksums.must_equal "110100110110010010110101100110100110100001010101000010101110110100100010"
42
+ end
43
+
44
+ it "should have the expected encoding" do
45
+ # START T E S T 9 3 + (C) 6 (K) STOP TERM
46
+ @code.encoding.must_equal "1010111101101001101100100101101011001101001101000010101010000101011101101001000101010111101"
47
+ end
48
+
49
+ it "should have the expected checksum_values" do
50
+ @code.checksum_values.must_equal [29, 14, 28, 29, 9, 3].reverse #!
51
+ end
52
+
53
+ it "should have the expected c_checksum" do
54
+ @code.c_checksum.must_equal 41 #calculate this first!
55
+ end
56
+
57
+ it "should have the expected c_checksum_character" do
58
+ @code.c_checksum_character.must_equal '+'
59
+ end
60
+
61
+ it "should have the expected c_checksum_encoding" do
62
+ @code.c_checksum_encoding.must_equal '101110110'
63
+ end
64
+
65
+ it "should have the expected checksum_values_with_c_checksum" do
66
+ @code.checksum_values_with_c_checksum.must_equal [29, 14, 28, 29, 9, 3, 41].reverse #!
67
+ end
68
+
69
+ it "should have the expected k_checksum" do
70
+ @code.k_checksum.must_equal 6 #calculate this first!
71
+ end
72
+
73
+ it "should have the expected k_checksum_character" do
74
+ @code.k_checksum_character.must_equal '6'
75
+ end
76
+
77
+ it "should have the expected k_checksum_encoding" do
78
+ @code.k_checksum_encoding.must_equal '100100010'
79
+ end
80
+
81
+ it "should have the expected checksums" do
82
+ @code.checksums.must_equal [41, 6]
83
+ end
84
+
85
+ it "should have the expected checksum_characters" do
86
+ @code.checksum_characters.must_equal ['+', '6']
87
+ end
88
+
89
+ it "should have the expected checksum_encodings" do
90
+ @code.checksum_encodings.must_equal %w(101110110 100100010)
91
+ end
92
+
93
+ it "should have the expected checksum_encoding" do
94
+ @code.checksum_encoding.must_equal '101110110100100010'
95
+ end
96
+
97
+ it "should be valid" do
98
+ assert @code.valid?
99
+ end
100
+
101
+ it "should not be valid when not in extended mode" do
102
+ @code.data = 'not extended'
103
+ end
104
+
105
+ it "should return data with no checksums on to_s" do
106
+ @code.to_s.must_equal 'TEST93'
107
+ end
108
+
109
+ describe "Extended mode" do
110
+
111
+ before do
112
+ @data = "Extended!"
113
+ @code = Code93.new(@data)
114
+ end
115
+
116
+ it "should be extended" do
117
+ assert @code.extended?
118
+ end
119
+
120
+ it "should convert extended characters to special shift characters" do
121
+ @code.characters.must_equal ["E", "\304", "X", "\304", "T", "\304", "E", "\304", "N", "\304", "D", "\304", "E", "\304", "D", "\303", "A"]
122
+ end
123
+
124
+ it "should have the expected data_encoding" do
125
+ @code.data_encoding.must_equal '110010010100110010101100110100110010110100110100110010110010010'+
126
+ '100110010101000110100110010110010100100110010110010010100110010110010100111010110110101000'
127
+ end
128
+
129
+ it "should have the expected c_checksum" do
130
+ @code.c_checksum.must_equal 9
131
+ end
132
+
133
+ it "should have the expected k_checksum" do
134
+ @code.k_checksum.must_equal 46
135
+ end
136
+
137
+ it "should return the original data on to_s with no checksums" do
138
+ @code.to_s.must_equal 'Extended!'
139
+ end
140
+
141
+ end
142
+
143
+ end
144
+
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+ require 'barby/barcode/data_matrix'
3
+
4
+ class DataMatrixTest < Barby::TestCase
5
+
6
+ before do
7
+ @data = "humbaba"
8
+ @code = Barby::DataMatrix.new(@data)
9
+ end
10
+
11
+ it "should have the expected encoding" do
12
+ @code.encoding.must_equal ["1010101010101010", "1011111000011111", "1110111000010100",
13
+ "1110100100000111", "1101111010101000", "1101111011110011",
14
+ "1111111100000100", "1100101111110001", "1001000010001010",
15
+ "1101010110111011", "1000000100011110", "1001010010000011",
16
+ "1101100111011110", "1110111010000101", "1110010110001010",
17
+ "1111111111111111"]
18
+ end
19
+
20
+ it "should return data on to_s" do
21
+ @code.to_s.must_equal @data
22
+ end
23
+
24
+ it "should be able to change its data" do
25
+ prev_encoding = @code.encoding
26
+ @code.data = "after eight"
27
+ @code.encoding.wont_equal prev_encoding
28
+ end
29
+
30
+ end