pnm 0.5.2 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,123 +2,125 @@
2
2
 
3
3
  # test_exceptions.rb: Unit tests for the PNM library.
4
4
  #
5
- # Copyright (C) 2013-2019 Marcus Stollsteimer
5
+ # Copyright (C) 2013-2022 Marcus Stollsteimer
6
6
 
7
7
  require "minitest/autorun"
8
8
  require "stringio"
9
9
  require "pnm"
10
10
 
11
+ require_relative "backports"
12
+
11
13
 
12
14
  describe "PNM.create" do
13
15
 
14
16
  it "raises an exception for invalid data type (String)" do
15
17
  data = "0"
16
- proc { PNM.create(data) }.must_raise PNM::ArgumentError
18
+ _ { PNM.create(data) }.must_raise PNM::ArgumentError
17
19
  end
18
20
 
19
21
  it "raises an exception for invalid type" do
20
22
  data = [[0, 0], [0, 0]]
21
- proc { PNM.create(data, type: :abc) }.must_raise PNM::ArgumentError
23
+ _ { PNM.create(data, type: :abc) }.must_raise PNM::ArgumentError
22
24
  end
23
25
 
24
26
  it "raises an exception for invalid maxgray (String)" do
25
27
  data = [[0, 0], [0, 0]]
26
- proc { PNM.create(data, maxgray: "255") }.must_raise PNM::ArgumentError
28
+ _ { PNM.create(data, maxgray: "255") }.must_raise PNM::ArgumentError
27
29
  end
28
30
 
29
31
  it "raises an exception for invalid maxgray (> 255)" do
30
32
  data = [[0, 0], [0, 0]]
31
- proc { PNM.create(data, maxgray: 256) }.must_raise PNM::ArgumentError
33
+ _ { PNM.create(data, maxgray: 256) }.must_raise PNM::ArgumentError
32
34
  end
33
35
 
34
36
  it "raises an exception for invalid maxgray (0)" do
35
37
  data = [[0, 0], [0, 0]]
36
- proc { PNM.create(data, maxgray: 0) }.must_raise PNM::ArgumentError
38
+ _ { PNM.create(data, maxgray: 0) }.must_raise PNM::ArgumentError
37
39
  end
38
40
 
39
41
  it "raises an exception for invalid comment (Integer)" do
40
42
  data = [[0, 0], [0, 0]]
41
- proc { PNM.create(data, comment: 1) }.must_raise PNM::ArgumentError
43
+ _ { PNM.create(data, comment: 1) }.must_raise PNM::ArgumentError
42
44
  end
43
45
 
44
46
  it "raises an exception for image type and data mismatch (PBM)" do
45
47
  data = [[[0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0]]]
46
- proc { PNM.create(data, type: :pbm) }.must_raise PNM::DataError
48
+ _ { PNM.create(data, type: :pbm) }.must_raise PNM::DataError
47
49
  end
48
50
 
49
51
  it "raises an exception for image type and data mismatch (PGM)" do
50
52
  data = [[[0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0]]]
51
- proc { PNM.create(data, type: :pgm) }.must_raise PNM::DataError
53
+ _ { PNM.create(data, type: :pgm) }.must_raise PNM::DataError
52
54
  end
53
55
 
54
56
  it "raises an exception for non-integer pixel value (String)" do
55
57
  data = [[0, 0], ["X", 0]]
56
- proc { PNM.create(data) }.must_raise PNM::DataError
58
+ _ { PNM.create(data) }.must_raise PNM::DataError
57
59
  end
58
60
 
59
61
  it "raises an exception for non-integer pixel value (Float)" do
60
62
  data = [[0, 0], [0.5, 0]]
61
- proc { PNM.create(data) }.must_raise PNM::DataError
63
+ _ { PNM.create(data) }.must_raise PNM::DataError
62
64
  end
63
65
 
64
66
  it "raises an exception for rows of different size" do
65
67
  data = [[0, 0], [0, 0, 0]]
66
- proc { PNM.create(data) }.must_raise PNM::DataError
68
+ _ { PNM.create(data) }.must_raise PNM::DataError
67
69
  end
68
70
 
69
71
  it "raises an exception for invalid array dimensions (#1)" do
70
72
  data = [0, 0, 0]
71
- proc { PNM.create(data) }.must_raise PNM::DataError
73
+ _ { PNM.create(data) }.must_raise PNM::DataError
72
74
  end
73
75
 
74
76
  it "raises an exception for invalid array dimensions (#2)" do
75
77
  data = [[0, 0], 0, 0]
76
- proc { PNM.create(data) }.must_raise PNM::DataError
78
+ _ { PNM.create(data) }.must_raise PNM::DataError
77
79
  end
78
80
 
79
81
  it "raises an exception for invalid array dimensions (#3)" do
80
82
  data = [[0, 0], [0, [0, 0]]]
81
- proc { PNM.create(data) }.must_raise PNM::DataError
83
+ _ { PNM.create(data) }.must_raise PNM::DataError
82
84
  end
83
85
 
84
86
  it "raises an exception for invalid array dimensions (#4)" do
85
87
  data = [[[0, 0], [0, 0]], [[0, 0], [0, 0]]]
86
- proc { PNM.create(data) }.must_raise PNM::DataError
88
+ _ { PNM.create(data) }.must_raise PNM::DataError
87
89
  end
88
90
 
89
91
  it "raises an exception for invalid array dimensions (#5)" do
90
92
  data = [[[0, 0, 0], [0, 0, 0]], [0, 0]]
91
- proc { PNM.create(data) }.must_raise PNM::DataError
93
+ _ { PNM.create(data) }.must_raise PNM::DataError
92
94
  end
93
95
 
94
96
  it "raises an exception for invalid array dimensions (#6)" do
95
97
  data = [[[0, 0, 0], 0], [0, 0]]
96
- proc { PNM.create(data) }.must_raise PNM::DataError
98
+ _ { PNM.create(data) }.must_raise PNM::DataError
97
99
  end
98
100
 
99
101
  it "raises an exception for an empty array" do
100
102
  data = [[]]
101
- proc { PNM.create(data) }.must_raise PNM::DataError
103
+ _ { PNM.create(data) }.must_raise PNM::DataError
102
104
  end
103
105
 
104
106
  it "raises an exception for invalid PBM data (> 1)" do
105
107
  data = [[0, 0], [2, 0]]
106
- proc { PNM.create(data, type: :pbm) }.must_raise PNM::DataError
108
+ _ { PNM.create(data, type: :pbm) }.must_raise PNM::DataError
107
109
  end
108
110
 
109
111
  it "raises an exception for invalid PBM data (< 0)" do
110
112
  data = [[0, 0], [-1, 0]]
111
- proc { PNM.create(data, type: :pbm) }.must_raise PNM::DataError
113
+ _ { PNM.create(data, type: :pbm) }.must_raise PNM::DataError
112
114
  end
113
115
 
114
116
  it "raises an exception for invalid PGM data (> 255)" do
115
117
  data = [[0, 0], [1, 500]]
116
- proc { PNM.create(data, type: :pgm) }.must_raise PNM::DataError
118
+ _ { PNM.create(data, type: :pgm) }.must_raise PNM::DataError
117
119
  end
118
120
 
119
121
  it "raises an exception for invalid PGM data (> maxgray)" do
120
122
  data = [[0, 0], [1, 200]]
121
- proc { PNM.create(data, maxgray: 100) }.must_raise PNM::DataError
123
+ _ { PNM.create(data, maxgray: 100) }.must_raise PNM::DataError
122
124
  end
123
125
  end
124
126
 
@@ -126,111 +128,111 @@ end
126
128
  describe "PNM.read" do
127
129
 
128
130
  it "raises an exception for integer argument" do
129
- proc { PNM.read(123) }.must_raise PNM::ArgumentError
131
+ _ { PNM.read(123) }.must_raise PNM::ArgumentError
130
132
  end
131
133
 
132
134
  it "raises an exception for unknown magic number" do
133
135
  file = StringIO.new("P0 1 1 0")
134
- proc { PNM.read(file) }.must_raise PNM::ParserError
136
+ _ { PNM.read(file) }.must_raise PNM::ParserError
135
137
  end
136
138
 
137
139
  it "raises an exception for an empty file" do
138
140
  file = StringIO.new("")
139
- proc { PNM.read(file) }.must_raise PNM::ParserError
141
+ _ { PNM.read(file) }.must_raise PNM::ParserError
140
142
  end
141
143
 
142
144
  it "raises an exception for missing tokens (#1)" do
143
145
  file = StringIO.new("P1")
144
- proc { PNM.read(file) }.must_raise PNM::ParserError
146
+ _ { PNM.read(file) }.must_raise PNM::ParserError
145
147
  end
146
148
 
147
149
  it "raises an exception for missing tokens (#2)" do
148
150
  file = StringIO.new("P1 1")
149
- proc { PNM.read(file) }.must_raise PNM::ParserError
151
+ _ { PNM.read(file) }.must_raise PNM::ParserError
150
152
  end
151
153
 
152
154
  it "raises an exception for missing tokens (#3)" do
153
155
  file = StringIO.new("P1 1 ")
154
- proc { PNM.read(file) }.must_raise PNM::ParserError
156
+ _ { PNM.read(file) }.must_raise PNM::ParserError
155
157
  end
156
158
 
157
159
  it "raises an exception for missing tokens (#4)" do
158
160
  file = StringIO.new("P1 1 1")
159
- proc { PNM.read(file) }.must_raise PNM::ParserError
161
+ _ { PNM.read(file) }.must_raise PNM::ParserError
160
162
  end
161
163
 
162
164
  it "raises an exception for missing tokens (#5)" do
163
165
  file = StringIO.new("P1 1 # Test\n 1")
164
- proc { PNM.read(file) }.must_raise PNM::ParserError
166
+ _ { PNM.read(file) }.must_raise PNM::ParserError
165
167
  end
166
168
 
167
169
  it "raises an exception for missing tokens (#6)" do
168
170
  file = StringIO.new("P2 1 1 255")
169
- proc { PNM.read(file) }.must_raise PNM::ParserError
171
+ _ { PNM.read(file) }.must_raise PNM::ParserError
170
172
  end
171
173
 
172
174
  it "raises an exception for token of wrong type (#1)" do
173
175
  file = StringIO.new("P1 ? 1 0")
174
- proc { PNM.read(file) }.must_raise PNM::ParserError
176
+ _ { PNM.read(file) }.must_raise PNM::ParserError
175
177
  end
176
178
 
177
179
  it "raises an exception for token of wrong type (#2)" do
178
180
  file = StringIO.new("P1 1 X 0")
179
- proc { PNM.read(file) }.must_raise PNM::ParserError
181
+ _ { PNM.read(file) }.must_raise PNM::ParserError
180
182
  end
181
183
 
182
184
  it "raises an exception for token of wrong type (#3)" do
183
185
  file = StringIO.new("P2 1 1 foo 0")
184
- proc { PNM.read(file) }.must_raise PNM::ParserError
186
+ _ { PNM.read(file) }.must_raise PNM::ParserError
185
187
  end
186
188
 
187
189
  it "raises an exception for zero width" do
188
190
  file = StringIO.new("P2 0 1 255 0")
189
- proc { PNM.read(file) }.must_raise PNM::ParserError
191
+ _ { PNM.read(file) }.must_raise PNM::ParserError
190
192
  end
191
193
 
192
194
  it "raises an exception for zero height" do
193
195
  file = StringIO.new("P2 1 0 255 0")
194
- proc { PNM.read(file) }.must_raise PNM::ParserError
196
+ _ { PNM.read(file) }.must_raise PNM::ParserError
195
197
  end
196
198
 
197
199
  it "raises an exception for invalid maxgray (> 255)" do
198
200
  file = StringIO.new("P2 1 1 256 0")
199
- proc { PNM.read(file) }.must_raise PNM::ParserError
201
+ _ { PNM.read(file) }.must_raise PNM::ParserError
200
202
  end
201
203
 
202
204
  it "raises an exception for invalid maxgray (0)" do
203
205
  file = StringIO.new("P2 1 1 0 0")
204
- proc { PNM.read(file) }.must_raise PNM::ParserError
206
+ _ { PNM.read(file) }.must_raise PNM::ParserError
205
207
  end
206
208
 
207
209
  it "raises an exception for image dimension mismatch (#1)" do
208
210
  file = StringIO.new("P1 2 3 0 0 0 0 0")
209
- proc { PNM.read(file) }.must_raise PNM::DataSizeError
211
+ _ { PNM.read(file) }.must_raise PNM::DataSizeError
210
212
  end
211
213
 
212
214
  it "raises an exception for image dimension mismatch (#2)" do
213
215
  file = StringIO.new("P1 2 3 0 0 0 0 0 0 0")
214
- proc { PNM.read(file) }.must_raise PNM::DataSizeError
216
+ _ { PNM.read(file) }.must_raise PNM::DataSizeError
215
217
  end
216
218
 
217
219
  it "raises an exception for image dimension mismatch (#3)" do
218
220
  file = StringIO.new("P3 2 3 255 0 0 0 0 0 0")
219
- proc { PNM.read(file) }.must_raise PNM::DataSizeError
221
+ _ { PNM.read(file) }.must_raise PNM::DataSizeError
220
222
  end
221
223
 
222
224
  it "raises an exception for image dimension mismatch (#4)" do
223
225
  file = StringIO.new("P5 2 3 255 AAAAAAA")
224
- proc { PNM.read(file) }.must_raise PNM::DataSizeError
226
+ _ { PNM.read(file) }.must_raise PNM::DataSizeError
225
227
  end
226
228
 
227
229
  it "raises an exception for image dimension mismatch (#5)" do
228
230
  file = StringIO.new("P5 2 3 255 AAAAAAA")
229
- proc { PNM.read(file) }.must_raise PNM::DataSizeError
231
+ _ { PNM.read(file) }.must_raise PNM::DataSizeError
230
232
  end
231
233
 
232
234
  it "raises an exception for non-numeric image data" do
233
235
  file = StringIO.new("P1 2 3 0 X 0 0 0 0")
234
- proc { PNM.read(file) }.must_raise PNM::DataError
236
+ _ { PNM.read(file) }.must_raise PNM::DataError
235
237
  end
236
238
  end
data/test/test_image.rb CHANGED
@@ -2,11 +2,13 @@
2
2
 
3
3
  # test_image.rb: Unit tests for the PNM library.
4
4
  #
5
- # Copyright (C) 2013-2019 Marcus Stollsteimer
5
+ # Copyright (C) 2013-2022 Marcus Stollsteimer
6
6
 
7
7
  require "minitest/autorun"
8
8
  require "pnm"
9
9
 
10
+ require_relative "backports"
11
+
10
12
 
11
13
  describe PNM::Image do
12
14
 
@@ -47,229 +49,229 @@ describe PNM::Image do
47
49
  end
48
50
 
49
51
  it "freezes pixel data" do
50
- proc { @bilevel.pixels << [1, 1, 0, 1, 1] }.must_raise RuntimeError
52
+ _ { @bilevel.pixels << [1, 1, 0, 1, 1] }.must_raise RuntimeError
51
53
  end
52
54
 
53
55
  it "freezes comment string" do
54
- proc { @bilevel.comment << "string" }.must_raise RuntimeError
56
+ _ { @bilevel.comment << "string" }.must_raise RuntimeError
55
57
  end
56
58
 
57
59
  it "sets maxgray to 1 for bilevel images" do
58
60
  image = PNM.create([[0, 1, 0], [1, 0, 1]])
59
- image.type.must_equal :pbm
60
- image.maxgray.must_equal 1
61
+ _(image.type).must_equal :pbm
62
+ _(image.maxgray).must_equal 1
61
63
  end
62
64
 
63
65
  it "sets maxgray by default to 255 for grayscale images" do
64
66
  image = PNM.create([[0, 10, 20], [10, 20, 30]])
65
- image.type.must_equal :pgm
66
- image.maxgray.must_equal 255
67
+ _(image.type).must_equal :pgm
68
+ _(image.maxgray).must_equal 255
67
69
  end
68
70
 
69
71
  it "sets maxgray by default to 255 for color images" do
70
72
  image = PNM.create([[[0, 0, 0], [10, 10, 10]], [[10, 10, 10], [20, 20, 20]]])
71
- image.type.must_equal :ppm
72
- image.maxgray.must_equal 255
73
+ _(image.type).must_equal :ppm
74
+ _(image.maxgray).must_equal 255
73
75
  end
74
76
 
75
77
  it "accepts setting of maxgray to 1 for bilevel images" do
76
78
  image = PNM.create([[0, 1, 0], [1, 0, 1]], maxgray: 1)
77
- image.type.must_equal :pbm
78
- image.maxgray.must_equal 1
79
+ _(image.type).must_equal :pbm
80
+ _(image.maxgray).must_equal 1
79
81
  end
80
82
 
81
83
  it "ignores invalid maxgray for bilevel images and sets it to 1" do
82
84
  image = PNM.create([[0, 1, 0], [1, 0, 1]], type: :pbm, maxgray: 255)
83
- image.type.must_equal :pbm
84
- image.maxgray.must_equal 1
85
+ _(image.type).must_equal :pbm
86
+ _(image.maxgray).must_equal 1
85
87
  end
86
88
 
87
89
  it "can create a grayscale image from bilevel values (using type)" do
88
90
  image = PNM.create([[0, 1, 0], [1, 0, 1]], type: :pgm)
89
- image.type.must_equal :pgm
90
- image.pixels.must_equal [[0, 1, 0], [1, 0, 1]]
91
- image.maxgray.must_equal 255
91
+ _(image.type).must_equal :pgm
92
+ _(image.pixels).must_equal [[0, 1, 0], [1, 0, 1]]
93
+ _(image.maxgray).must_equal 255
92
94
  end
93
95
 
94
96
  it "also accepts types given as string instead of symbol" do
95
97
  image = PNM.create([[0, 1, 0], [1, 0, 1]], type: "pgm")
96
- image.type.must_equal :pgm
98
+ _(image.type).must_equal :pgm
97
99
  end
98
100
 
99
101
  it "can create a grayscale image from bilevel values (using maxgray)" do
100
102
  image = PNM.create([[0, 1, 0], [1, 0, 1]], maxgray: 2)
101
- image.type.must_equal :pgm
102
- image.pixels.must_equal [[0, 1, 0], [1, 0, 1]]
103
- image.maxgray.must_equal 2
103
+ _(image.type).must_equal :pgm
104
+ _(image.pixels).must_equal [[0, 1, 0], [1, 0, 1]]
105
+ _(image.maxgray).must_equal 2
104
106
  end
105
107
 
106
108
  it "can create a color image from bilevel values" do
107
109
  image = PNM.create([[0, 1, 0], [1, 0, 1]], type: :ppm)
108
- image.info.must_match %r{^PPM 3x2 Color}
109
- image.pixels.must_equal [[[0, 0, 0], [1, 1, 1], [0, 0, 0]], [[1, 1, 1], [0, 0, 0], [1, 1, 1]]]
110
- image.maxgray.must_equal 255
110
+ _(image.info).must_equal "PPM 3x2 Color"
111
+ _(image.pixels).must_equal [[[0, 0, 0], [1, 1, 1], [0, 0, 0]], [[1, 1, 1], [0, 0, 0], [1, 1, 1]]]
112
+ _(image.maxgray).must_equal 255
111
113
  end
112
114
 
113
115
  it "can create a color image from bilevel values with a given maxgray" do
114
116
  image = PNM.create([[0, 1, 0], [1, 0, 1]], type: :ppm, maxgray: 2)
115
- image.info.must_match %r{^PPM 3x2 Color}
116
- image.pixels.must_equal [[[0, 0, 0], [1, 1, 1], [0, 0, 0]], [[1, 1, 1], [0, 0, 0], [1, 1, 1]]]
117
- image.maxgray.must_equal 2
117
+ _(image.info).must_equal "PPM 3x2 Color"
118
+ _(image.pixels).must_equal [[[0, 0, 0], [1, 1, 1], [0, 0, 0]], [[1, 1, 1], [0, 0, 0], [1, 1, 1]]]
119
+ _(image.maxgray).must_equal 2
118
120
  end
119
121
 
120
122
  it "can create a color image from gray values" do
121
123
  image = PNM.create([[0, 3, 6], [3, 6, 9]], type: :ppm)
122
- image.info.must_match %r{^PPM 3x2 Color}
123
- image.pixels.must_equal [[[0, 0, 0], [3, 3, 3], [6, 6, 6]], [[3, 3, 3], [6, 6, 6], [9, 9, 9]]]
124
+ _(image.info).must_equal "PPM 3x2 Color"
125
+ _(image.pixels).must_equal [[[0, 0, 0], [3, 3, 3], [6, 6, 6]], [[3, 3, 3], [6, 6, 6], [9, 9, 9]]]
124
126
  end
125
127
 
126
128
  it "does not modify the input data for color images created from gray values" do
127
129
  data = [[0, 3, 6], [3, 6, 9]]
128
130
  PNM.create(data, type: :ppm)
129
- data.must_equal [[0, 3, 6], [3, 6, 9]]
131
+ _(data).must_equal [[0, 3, 6], [3, 6, 9]]
130
132
  end
131
133
 
132
134
  it "can write a bilevel image to an ASCII encoded file" do
133
- @bilevel.write(@temp_path, :ascii)
134
- File.binread(@temp_path).must_equal File.binread("#{@srcpath}/bilevel_ascii.pbm")
135
+ @bilevel.write(@temp_path, encoding: :ascii)
136
+ _(File.binread(@temp_path)).must_equal File.binread("#{@srcpath}/bilevel_ascii.pbm")
135
137
  File.delete(@temp_path)
136
138
  end
137
139
 
138
140
  it "can write a bilevel image (width 5) to a binary encoded file" do
139
- @bilevel.write(@temp_path, :binary)
140
- File.binread(@temp_path).must_equal File.binread("#{@srcpath}/bilevel_binary.pbm")
141
+ @bilevel.write(@temp_path, encoding: :binary)
142
+ _(File.binread(@temp_path)).must_equal File.binread("#{@srcpath}/bilevel_binary.pbm")
141
143
  File.delete(@temp_path)
142
144
  end
143
145
 
144
146
  it "can write a bilevel image (width 16) to a binary encoded file" do
145
- @bilevel2.write(@temp_path, :binary)
146
- File.binread(@temp_path).must_equal File.binread("#{@srcpath}/bilevel_2_binary.pbm")
147
+ @bilevel2.write(@temp_path, encoding: :binary)
148
+ _(File.binread(@temp_path)).must_equal File.binread("#{@srcpath}/bilevel_2_binary.pbm")
147
149
  File.delete(@temp_path)
148
150
  end
149
151
 
150
152
  it "can write a grayscale image to an ASCII encoded file" do
151
- @grayscale.write(@temp_path, :ascii)
152
- File.binread(@temp_path).must_equal File.binread("#{@srcpath}/grayscale_ascii.pgm")
153
+ @grayscale.write(@temp_path, encoding: :ascii)
154
+ _(File.binread(@temp_path)).must_equal File.binread("#{@srcpath}/grayscale_ascii.pgm")
153
155
  File.delete(@temp_path)
154
156
  end
155
157
 
156
158
  it "can write a grayscale image to a binary encoded file" do
157
- @grayscale.write(@temp_path, :binary)
158
- File.binread(@temp_path).must_equal File.binread("#{@srcpath}/grayscale_binary.pgm")
159
+ @grayscale.write(@temp_path, encoding: :binary)
160
+ _(File.binread(@temp_path)).must_equal File.binread("#{@srcpath}/grayscale_binary.pgm")
159
161
  File.delete(@temp_path)
160
162
  end
161
163
 
162
164
  it "can write a color image to an ASCII encoded file" do
163
- @color.write(@temp_path, :ascii)
164
- File.binread(@temp_path).must_equal File.binread("#{@srcpath}/color_ascii.ppm")
165
+ @color.write(@temp_path, encoding: :ascii)
166
+ _(File.binread(@temp_path)).must_equal File.binread("#{@srcpath}/color_ascii.ppm")
165
167
  File.delete(@temp_path)
166
168
  end
167
169
 
168
170
  it "can write a color image to a binary encoded file" do
169
- @color.write(@temp_path, :binary)
170
- File.binread(@temp_path).must_equal File.binread("#{@srcpath}/color_binary.ppm")
171
+ @color.write(@temp_path, encoding: :binary)
172
+ _(File.binread(@temp_path)).must_equal File.binread("#{@srcpath}/color_binary.ppm")
171
173
  File.delete(@temp_path)
172
174
  end
173
175
 
174
176
  it "can write a bilevel image to a file, adding the extension" do
175
- @bilevel.write_with_extension(@temp_path)
176
- File.binread("#{@temp_path}.pbm").must_equal File.binread("#{@srcpath}/bilevel_binary.pbm")
177
+ @bilevel.write(@temp_path, add_extension: true)
178
+ _(File.binread("#{@temp_path}.pbm")).must_equal File.binread("#{@srcpath}/bilevel_binary.pbm")
177
179
  File.delete("#{@temp_path}.pbm")
178
180
  end
179
181
 
180
182
  it "can write a grayscale image to a file, adding the extension" do
181
- @grayscale.write_with_extension(@temp_path, :ascii)
182
- File.binread("#{@temp_path}.pgm").must_equal File.binread("#{@srcpath}/grayscale_ascii.pgm")
183
+ @grayscale.write(@temp_path, add_extension: true, encoding: :ascii)
184
+ _(File.binread("#{@temp_path}.pgm")).must_equal File.binread("#{@srcpath}/grayscale_ascii.pgm")
183
185
  File.delete("#{@temp_path}.pgm")
184
186
  end
185
187
 
186
188
  it "can write a color image to a file, adding the extension" do
187
- @color.write_with_extension(@temp_path, :binary)
188
- File.binread("#{@temp_path}.ppm").must_equal File.binread("#{@srcpath}/color_binary.ppm")
189
+ @color.write(@temp_path, add_extension: true, encoding: :binary)
190
+ _(File.binread("#{@temp_path}.ppm")).must_equal File.binread("#{@srcpath}/color_binary.ppm")
189
191
  File.delete("#{@temp_path}.ppm")
190
192
  end
191
193
 
192
194
  it "can return image information" do
193
- @bilevel.info.must_equal "PBM 5x6 Bilevel"
194
- @grayscale.info.must_equal "PGM 4x3 Grayscale"
195
- @color.info.must_equal "PPM 5x3 Color"
195
+ _(@bilevel.info).must_equal "PBM 5x6 Bilevel"
196
+ _(@grayscale.info).must_equal "PGM 4x3 Grayscale"
197
+ _(@color.info).must_equal "PPM 5x3 Color"
196
198
  end
197
199
 
198
200
  it "can return meaningful debugging information" do
199
- @bilevel.inspect.must_match %r{^#<PNM::\w+Image:0x\h+ PBM 5x6 Bilevel>$}
200
- @grayscale.inspect.must_match %r{^#<PNM::\w+Image:0x\h+ PGM 4x3 Grayscale, maxgray=250>$}
201
- @color.inspect.must_match %r{^#<PNM::\w+Image:0x\h+ PPM 5x3 Color, maxgray=6>$}
201
+ _(@bilevel.inspect).must_match %r{\A#<PNM::PBMImage:0x\h+ PBM 5x6 Bilevel>\z}
202
+ _(@grayscale.inspect).must_match %r{\A#<PNM::PGMImage:0x\h+ PGM 4x3 Grayscale, maxgray=250>\z}
203
+ _(@color.inspect).must_match %r{\A#<PNM::PPMImage:0x\h+ PPM 5x3 Color, maxgray=6>\z}
202
204
  end
203
205
 
204
206
  it "can write binary data containing CRLF" do
205
- @grayscale_crlf.write(@temp_path, :binary)
206
- File.binread(@temp_path).must_equal File.binread("#{@srcpath}/grayscale_binary_crlf.pgm")
207
+ @grayscale_crlf.write(@temp_path, encoding: :binary)
208
+ _(File.binread(@temp_path)).must_equal File.binread("#{@srcpath}/grayscale_binary_crlf.pgm")
207
209
  File.delete(@temp_path)
208
210
  end
209
211
 
210
212
  it "can write binary data containing CRLF to an I/O stream" do
211
- File.open(@temp_path, "w") {|f| @grayscale_crlf.write(f, :binary) }
212
- File.binread(@temp_path).must_equal File.binread("#{@srcpath}/grayscale_binary_crlf.pgm")
213
+ File.open(@temp_path, "w") {|f| @grayscale_crlf.write(f, encoding: :binary) }
214
+ _(File.binread(@temp_path)).must_equal File.binread("#{@srcpath}/grayscale_binary_crlf.pgm")
213
215
  File.delete(@temp_path)
214
216
  end
215
217
 
216
218
  it "can write zero-length comments" do
217
219
  comment = ""
218
- PNM.create([[0, 0]], comment: comment).write(@temp_path, :ascii)
219
- File.binread(@temp_path).must_equal "P1\n#\n2 1\n0 0\n"
220
+ PNM.create([[0, 0]], comment: comment).write(@temp_path, encoding: :ascii)
221
+ _(File.binread(@temp_path)).must_equal "P1\n#\n2 1\n0 0\n"
220
222
  File.delete(@temp_path)
221
223
  end
222
224
 
223
225
  it "can write comments with trailing zero-length line" do
224
226
  comment = "An empty line:\n"
225
- PNM.create([[0, 0]], comment: comment).write(@temp_path, :ascii)
226
- File.binread(@temp_path).must_equal "P1\n# An empty line:\n#\n2 1\n0 0\n"
227
+ PNM.create([[0, 0]], comment: comment).write(@temp_path, encoding: :ascii)
228
+ _(File.binread(@temp_path)).must_equal "P1\n# An empty line:\n#\n2 1\n0 0\n"
227
229
  File.delete(@temp_path)
228
230
  end
229
231
 
230
232
  it "can check equality of images (1)" do
231
233
  pixels = [[0, 1, 0], [1, 0, 1]]
232
- bilevel = PNM.create(pixels, comment: "image")
234
+ bilevel1 = PNM.create(pixels, comment: "image")
233
235
  bilevel2 = PNM.create(pixels, comment: "image")
234
236
 
235
- (bilevel2 == bilevel).must_equal true
237
+ _(bilevel2 == bilevel1).must_equal true
236
238
  end
237
239
 
238
240
  it "can check equality of images (2)" do
239
241
  pixels = [[0, 1, 0], [1, 0, 1]]
240
- bilevel = PNM.create(pixels, comment: "image")
242
+ bilevel1 = PNM.create(pixels, comment: "image")
241
243
  bilevel2 = PNM.create(pixels, comment: "other image")
242
244
 
243
- (bilevel2 == bilevel).must_equal false
245
+ _(bilevel2 == bilevel1).must_equal false
244
246
  end
245
247
 
246
248
  it "can check equality of images (3)" do
247
249
  pixels = [[0, 1, 0], [1, 0, 1]]
248
- bilevel = PNM.create(pixels)
250
+ bilevel1 = PNM.create(pixels)
249
251
  bilevel2 = PNM.create(pixels.reverse)
250
252
 
251
- (bilevel2 == bilevel).must_equal false
253
+ _(bilevel2 == bilevel1).must_equal false
252
254
  end
253
255
 
254
256
  it "can check equality of images (4)" do
255
257
  pixels = [[0, 1, 0], [1, 0, 1]]
256
- bilevel = PNM.create(pixels, type: :pbm)
258
+ bilevel = PNM.create(pixels, type: :pbm)
257
259
  graylevel = PNM.create(pixels, type: :pgm)
258
260
 
259
- (graylevel == bilevel).must_equal false
261
+ _(graylevel == bilevel).must_equal false
260
262
  end
261
263
 
262
264
  it "can check equality of images (5)" do
263
265
  pixels = [[0, 1, 2], [3, 4, 5]]
264
- graylevel = PNM.create(pixels, maxgray: 10)
266
+ graylevel1 = PNM.create(pixels, maxgray: 10)
265
267
  graylevel2 = PNM.create(pixels, maxgray: 255)
266
268
 
267
- (graylevel2 == graylevel).must_equal false
269
+ _(graylevel2 == graylevel1).must_equal false
268
270
  end
269
271
 
270
272
  it "can check equality of images (6)" do
271
273
  image = PNM.create([[0, 1, 2], [3, 4, 5]])
272
274
 
273
- (image == "a string").must_equal false
275
+ _(image == "a string").must_equal false
274
276
  end
275
277
  end