pnm 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # test_parser.rb: Unit tests for the PNM library.
2
4
  #
3
- # Copyright (C) 2013-2016 Marcus Stollsteimer
5
+ # Copyright (C) 2013-2019 Marcus Stollsteimer
4
6
 
5
- require 'minitest/autorun'
6
- require 'pnm/parser'
7
+ require "minitest/autorun"
8
+ require "pnm/parser"
7
9
 
8
10
 
9
11
  describe PNM::Parser do
@@ -12,89 +14,89 @@ describe PNM::Parser do
12
14
  @parser = PNM::Parser
13
15
  end
14
16
 
15
- it 'can parse ASCII encoded PBM data' do
16
- content =<<-EOF.chomp.gsub(/^ */, '')
17
+ it "can parse ASCII encoded PBM data" do
18
+ content = <<-PBM.chomp.gsub(/^ */, "")
17
19
  P1 6 2
18
20
  0 1 0 0 1 1
19
21
  0 0 0 1 1 1
20
- EOF
22
+ PBM
21
23
  expected = {
22
- :magic_number => 'P1',
23
- :width => 6,
24
- :height => 2,
25
- :data => "0 1 0 0 1 1\n0 0 0 1 1 1"
24
+ magic_number: "P1",
25
+ width: 6,
26
+ height: 2,
27
+ data: "0 1 0 0 1 1\n0 0 0 1 1 1"
26
28
  }
27
29
 
28
30
  @parser.parse(content).must_equal expected
29
31
  end
30
32
 
31
- it 'can parse ASCII encoded PGM data' do
32
- content =<<-EOF.chomp.gsub(/^ */, '')
33
+ it "can parse ASCII encoded PGM data" do
34
+ content = <<-PGM.chomp.gsub(/^ */, "")
33
35
  P2 4 2 100
34
36
  10 20 30 40
35
37
  50 60 70 80
36
- EOF
38
+ PGM
37
39
  expected = {
38
- :magic_number => 'P2',
39
- :width => 4,
40
- :height => 2,
41
- :maxgray => 100,
42
- :data => "10 20 30 40\n50 60 70 80"
40
+ magic_number: "P2",
41
+ width: 4,
42
+ height: 2,
43
+ maxgray: 100,
44
+ data: "10 20 30 40\n50 60 70 80"
43
45
  }
44
46
 
45
47
  @parser.parse(content).must_equal expected
46
48
  end
47
49
 
48
- it 'can parse binary encoded data' do
49
- content = 'P4 8 2 ' << ['05AF'].pack('H*')
50
+ it "can parse binary encoded data" do
51
+ content = "P4 8 2 ".dup << ["05AF"].pack("H*")
50
52
  expected = {
51
- :magic_number => 'P4',
52
- :width => 8,
53
- :height => 2,
54
- :data => ['05AF'].pack('H*')
53
+ magic_number: "P4",
54
+ width: 8,
55
+ height: 2,
56
+ data: ["05AF"].pack("H*")
55
57
  }
56
58
 
57
59
  @parser.parse(content).must_equal expected
58
60
  end
59
61
 
60
- it 'does not change the passed data' do
61
- content = 'P1 3 2 0 1 0 0 1 1'
62
+ it "does not change the passed data" do
63
+ content = "P1 3 2 0 1 0 0 1 1"
62
64
  original_content = content.dup
63
65
  @parser.parse(content)
64
66
 
65
67
  content.must_equal original_content
66
68
  end
67
69
 
68
- it 'does accept multiple whitespace as delimiter' do
70
+ it "does accept multiple whitespace as delimiter" do
69
71
  content = "P1 \n\t 3 \r \n2 0 1 0 0 1 1"
70
72
  expected = {
71
- :magic_number => 'P1',
72
- :width => 3,
73
- :height => 2,
74
- :data => '0 1 0 0 1 1'
73
+ magic_number: "P1",
74
+ width: 3,
75
+ height: 2,
76
+ data: "0 1 0 0 1 1"
75
77
  }
76
78
 
77
79
  @parser.parse(content).must_equal expected
78
80
  end
79
81
 
80
- it 'can parse binary encoded data including whitespace' do
82
+ it "can parse binary encoded data including whitespace" do
81
83
  @parser.parse("P4 16 4 A\nB\rC D\t")[:data].must_equal "A\nB\rC D\t"
82
84
  end
83
85
 
84
- it 'can parse binary encoded data starting with whitespace' do
86
+ it "can parse binary encoded data starting with whitespace" do
85
87
  @parser.parse("P4 8 2 \nA")[:data].must_equal "\nA"
86
88
  end
87
89
 
88
- it 'can parse binary encoded data starting with comment character' do
90
+ it "can parse binary encoded data starting with comment character" do
89
91
  @parser.parse("P4 8 2 #A")[:data].must_equal "#A"
90
92
  end
91
93
 
92
- it 'does not chomp newlines from parsed binary encoded data' do
94
+ it "does not chomp newlines from parsed binary encoded data" do
93
95
  @parser.parse("P4 8 2 AB\n")[:data].must_equal "AB\n"
94
96
  end
95
97
 
96
- it 'can parse comments' do
97
- content =<<-EOF.chomp.gsub(/^ */, '')
98
+ it "can parse comments" do
99
+ content = <<-PBM.chomp.gsub(/^ */, "")
98
100
  # Comment 1
99
101
  P1 # Comment 2
100
102
  6# Comment 3
@@ -104,13 +106,13 @@ describe PNM::Parser do
104
106
  2
105
107
  0 1 0 0 1 1
106
108
  0 0 0 1 1 1
107
- EOF
109
+ PBM
108
110
  expected = {
109
- :magic_number => 'P1',
110
- :width => 6,
111
- :height => 2,
112
- :comments => ['Comment 1', 'Comment 2', 'Comment 3', 'Comment 4', '', 'Comment 6'],
113
- :data => "0 1 0 0 1 1\n0 0 0 1 1 1"
111
+ magic_number: "P1",
112
+ width: 6,
113
+ height: 2,
114
+ comments: ["Comment 1", "Comment 2", "Comment 3", "Comment 4", "", "Comment 6"],
115
+ data: "0 1 0 0 1 1\n0 0 0 1 1 1"
114
116
  }
115
117
 
116
118
  @parser.parse(content).must_equal expected
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # test_pnm.rb: Unit tests for the PNM library.
2
4
  #
3
- # Copyright (C) 2013-2016 Marcus Stollsteimer
5
+ # Copyright (C) 2013-2019 Marcus Stollsteimer
4
6
 
5
- require 'minitest/autorun'
6
- require 'pnm'
7
+ require "minitest/autorun"
8
+ require "pnm"
7
9
 
8
10
 
9
11
  describe PNM do
@@ -12,93 +14,93 @@ describe PNM do
12
14
  @srcpath = File.dirname(__FILE__)
13
15
  end
14
16
 
15
- it 'can read an ASCII encoded PBM file' do
17
+ it "can read an ASCII encoded PBM file" do
16
18
  file = File.expand_path("#{@srcpath}/bilevel_ascii.pbm")
17
19
  image = PNM.read(file)
18
20
 
19
21
  image.info.must_match %r{^PBM 5x6 Bilevel}
20
22
  image.maxgray.must_equal 1
21
- image.comment.must_equal 'Bilevel'
22
- image.pixels.must_equal [[0,0,0,0,0],
23
- [0,1,1,1,0],
24
- [0,0,1,0,0],
25
- [0,0,1,0,0],
26
- [0,0,1,0,0],
27
- [0,0,0,0,0,]]
23
+ image.comment.must_equal "Bilevel"
24
+ image.pixels.must_equal [[0, 0, 0, 0, 0],
25
+ [0, 1, 1, 1, 0],
26
+ [0, 0, 1, 0, 0],
27
+ [0, 0, 1, 0, 0],
28
+ [0, 0, 1, 0, 0],
29
+ [0, 0, 0, 0, 0]]
28
30
  end
29
31
 
30
- it 'can read an ASCII encoded PGM file' do
32
+ it "can read an ASCII encoded PGM file" do
31
33
  file = File.expand_path("#{@srcpath}/grayscale_ascii.pgm")
32
34
  image = PNM.read(file)
33
35
 
34
36
  image.info.must_match %r{^PGM 4x3 Grayscale}
35
37
  image.maxgray.must_equal 250
36
38
  image.comment.must_equal "Grayscale\n(with multiline comment)"
37
- image.pixels.must_equal [[ 0, 50,100,150],
38
- [ 50,100,150,200],
39
- [100,150,200,250]]
39
+ image.pixels.must_equal [[ 0, 50, 100, 150],
40
+ [ 50, 100, 150, 200],
41
+ [100, 150, 200, 250]]
40
42
  end
41
43
 
42
- it 'can read an ASCII encoded PPM file' do
44
+ it "can read an ASCII encoded PPM file" do
43
45
  file = File.expand_path("#{@srcpath}/color_ascii.ppm")
44
46
  image = PNM.read(file)
45
47
 
46
48
  image.info.must_match %r{^PPM 5x3 Color}
47
49
  image.maxgray.must_equal 6
48
- image.pixels.must_equal [[[0,6,0], [1,5,1], [2,4,2], [3,3,4], [4,2,6]],
49
- [[1,5,2], [2,4,2], [3,3,2], [4,2,2], [5,1,2]],
50
- [[2,4,6], [3,3,4], [4,2,2], [5,1,1], [6,0,0]]]
50
+ image.pixels.must_equal [[[0, 6, 0], [1, 5, 1], [2, 4, 2], [3, 3, 4], [4, 2, 6]],
51
+ [[1, 5, 2], [2, 4, 2], [3, 3, 2], [4, 2, 2], [5, 1, 2]],
52
+ [[2, 4, 6], [3, 3, 4], [4, 2, 2], [5, 1, 1], [6, 0, 0]]]
51
53
  end
52
54
 
53
- it 'can read a binary encoded PBM file' do
55
+ it "can read a binary encoded PBM file" do
54
56
  file = File.expand_path("#{@srcpath}/bilevel_binary.pbm")
55
57
  image = PNM.read(file)
56
58
 
57
59
  image.info.must_match %r{^PBM 5x6 Bilevel}
58
60
  image.maxgray.must_equal 1
59
- image.comment.must_equal 'Bilevel'
60
- image.pixels.must_equal [[0,0,0,0,0],
61
- [0,1,1,1,0],
62
- [0,0,1,0,0],
63
- [0,0,1,0,0],
64
- [0,0,1,0,0],
65
- [0,0,0,0,0,]]
61
+ image.comment.must_equal "Bilevel"
62
+ image.pixels.must_equal [[0, 0, 0, 0, 0],
63
+ [0, 1, 1, 1, 0],
64
+ [0, 0, 1, 0, 0],
65
+ [0, 0, 1, 0, 0],
66
+ [0, 0, 1, 0, 0],
67
+ [0, 0, 0, 0, 0]]
66
68
  end
67
69
 
68
- it 'can read a binary encoded PGM file' do
70
+ it "can read a binary encoded PGM file" do
69
71
  file = File.expand_path("#{@srcpath}/grayscale_binary.pgm")
70
72
  image = PNM.read(file)
71
73
 
72
74
  image.info.must_match %r{^PGM 4x3 Grayscale}
73
75
  image.maxgray.must_equal 250
74
76
  image.comment.must_equal "Grayscale\n(with multiline comment)"
75
- image.pixels.must_equal [[ 0, 50,100,150],
76
- [ 50,100,150,200],
77
- [100,150,200,250]]
77
+ image.pixels.must_equal [[ 0, 50, 100, 150],
78
+ [ 50, 100, 150, 200],
79
+ [100, 150, 200, 250]]
78
80
  end
79
81
 
80
- it 'can read a binary encoded PPM file' do
82
+ it "can read a binary encoded PPM file" do
81
83
  file = File.expand_path("#{@srcpath}/color_binary.ppm")
82
84
  image = PNM.read(file)
83
85
 
84
86
  image.info.must_match %r{^PPM 5x3 Color}
85
87
  image.maxgray.must_equal 6
86
- image.pixels.must_equal [[[0,6,0], [1,5,1], [2,4,2], [3,3,4], [4,2,6]],
87
- [[1,5,2], [2,4,2], [3,3,2], [4,2,2], [5,1,2]],
88
- [[2,4,6], [3,3,4], [4,2,2], [5,1,1], [6,0,0]]]
88
+ image.pixels.must_equal [[[0, 6, 0], [1, 5, 1], [2, 4, 2], [3, 3, 4], [4, 2, 6]],
89
+ [[1, 5, 2], [2, 4, 2], [3, 3, 2], [4, 2, 2], [5, 1, 2]],
90
+ [[2, 4, 6], [3, 3, 4], [4, 2, 2], [5, 1, 1], [6, 0, 0]]]
89
91
  end
90
92
 
91
- it 'can read binary data containing CRLF' do
93
+ it "can read binary data containing CRLF" do
92
94
  file = File.expand_path("#{@srcpath}/grayscale_binary_crlf.pgm")
93
95
 
94
96
  image = PNM.read(file)
95
- image.pixels.must_equal [[65,66], [13,10], [65,66]]
97
+ image.pixels.must_equal [[65, 66], [13, 10], [65, 66]]
96
98
  end
97
99
 
98
- it 'can read binary data containing CRLF from an I/O stream' do
100
+ it "can read binary data containing CRLF from an I/O stream" do
99
101
  file = File.expand_path("#{@srcpath}/grayscale_binary_crlf.pgm")
100
102
 
101
- image = File.open(file, 'r') {|f| PNM.read(f) }
102
- image.pixels.must_equal [[65,66], [13,10], [65,66]]
103
+ image = File.open(file, "r") {|f| PNM.read(f) }
104
+ image.pixels.must_equal [[65, 66], [13, 10], [65, 66]]
103
105
  end
104
106
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pnm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcus Stollsteimer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-26 00:00:00.000000000 Z
11
+ date: 2019-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rake
14
+ name: minitest
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '10.0'
19
+ version: '5.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '10.0'
26
+ version: '5.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: minitest
28
+ name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '5.0'
33
+ version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '5.0'
40
+ version: '10.0'
41
41
  description: 'PNM is a pure Ruby library for creating, reading, and writing of PNM
42
42
  image files (Portable Anymap): PBM (Portable Bitmap), PGM (Portable Graymap), and
43
43
  PPM (Portable Pixmap).'
@@ -95,14 +95,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  requirements: []
98
- rubyforge_project:
99
- rubygems_version: 2.5.2
98
+ rubygems_version: 3.0.1
100
99
  signing_key:
101
100
  specification_version: 4
102
101
  summary: PNM - create/read/write PNM image files (PBM, PGM, PPM)
103
102
  test_files:
104
- - test/test_image.rb
105
103
  - test/test_exceptions.rb
106
- - test/test_parser.rb
104
+ - test/test_image.rb
107
105
  - test/test_converter.rb
108
106
  - test/test_pnm.rb
107
+ - test/test_parser.rb