axon 0.1.1 → 0.2.0

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.
@@ -16,10 +16,12 @@ module Axon
16
16
  end
17
17
 
18
18
  def test_in_color_model
19
+ skip unless @reader.respond_to?(:in_color_model)
19
20
  assert_equal :YCbCr, @reader.in_color_model
20
21
  end
21
22
 
22
23
  def test_set_in_color_model
24
+ skip unless @reader.respond_to?(:in_color_model=)
23
25
  @reader.in_color_model = :RGB
24
26
  assert_equal :RGB, @reader.in_color_model
25
27
 
@@ -27,6 +29,7 @@ module Axon
27
29
  end
28
30
 
29
31
  def test_set_out_color_model
32
+ skip unless @reader.respond_to?(:color_model=)
30
33
  @reader.color_model = :YCbCr
31
34
  assert_equal :YCbCr, @reader.color_model
32
35
 
@@ -34,74 +37,94 @@ module Axon
34
37
  end
35
38
 
36
39
  def test_scale_num
40
+ skip unless @reader.respond_to?(:scale_num)
37
41
  assert @reader.scale_num > 0
38
42
  end
39
43
 
40
44
  def test_set_scale_num
45
+ skip unless @reader.respond_to?(:scale_num=)
41
46
  @reader.scale_num = 5
42
47
  assert_equal 5, @reader.scale_num
43
48
  end
44
49
 
45
- unless LIB_TURBO
46
- def test_scale_denom
47
- assert @reader.scale_denom > 0
48
- end
49
-
50
- def test_set_scale_denom
51
- @reader.scale_denom = 8
52
- assert_equal 8, @reader.scale_denom
53
- end
54
-
55
- def test_scale_denom_affects_image_size
56
- pre_width = @reader.width
57
- pre_height = @reader.height
50
+ def test_scale_denom
51
+ skip unless @reader.respond_to?(:scale_denom)
52
+ assert @reader.scale_denom > 0
53
+ end
58
54
 
59
- @reader.scale_denom = 2
55
+ def test_set_scale_denom
56
+ skip unless @reader.respond_to?(:scale_denom=)
57
+ @reader.scale_denom = 8
58
+ assert_equal 8, @reader.scale_denom
59
+ end
60
60
 
61
- assert @reader.width < pre_width
62
- assert @reader.height < pre_height
61
+ def test_scale_denom_affects_image_size
62
+ skip unless @reader.respond_to?(:scale_denom=)
63
+ pre_width = @reader.width
64
+ pre_height = @reader.height
65
+
66
+ @reader.scale_denom = 2
67
+
68
+ if JPEG::LIB_VERSION >= 70
69
+ # I can't really explain why this doubles our dimensions. The
70
+ # jpeg decompressor reports 8 / 2 for scale_num / scale_denom.
71
+ assert_equal pre_width * 2, @reader.width
72
+ assert_equal pre_height * 2, @reader.height
73
+ else
74
+ assert_equal pre_width / 2, @reader.width
75
+ assert_equal pre_height / 2, @reader.height
63
76
  end
77
+ end
64
78
 
65
- def test_scale_denom_affects_written_image
66
- pre_width = @reader.width
67
- pre_height = @reader.height
79
+ def test_scale_denom_affects_written_image
80
+ skip unless @reader.respond_to?(:scale_denom=)
81
+ pre_width = @reader.width
82
+ pre_height = @reader.height
68
83
 
69
- @reader.scale_denom = 2
84
+ @reader.scale_denom = 2
70
85
 
71
- io_out = StringIO.new
72
- JPEG.write(@reader, io_out)
73
- io_out.rewind
86
+ io_out = StringIO.new
87
+ JPEG.write(@reader, io_out)
88
+ io_out.rewind
74
89
 
75
- new_velvet_reader = Reader.new(io_out)
90
+ new_velvet_reader = Reader.new(io_out)
76
91
 
77
- assert new_velvet_reader.width < pre_width
78
- assert new_velvet_reader.height < pre_height
92
+ if JPEG::LIB_VERSION >= 70
93
+ assert_image_dimensions(new_velvet_reader, pre_width * 2, pre_height * 2)
94
+ else
95
+ assert_image_dimensions(new_velvet_reader, pre_width / 2, pre_height / 2)
79
96
  end
80
97
  end
81
98
 
82
99
  def test_dct_method
100
+ skip unless @reader.respond_to?(:dct_method)
83
101
  assert_equal Reader::DEFAULT_DCT, @reader.dct_method
84
102
  end
85
103
 
86
104
  def test_set_dct_method
105
+ skip unless @reader.respond_to?(:dct_method=)
87
106
  @reader.dct_method = :IFAST
88
107
  assert_equal :IFAST, @reader.dct_method
89
108
  end
90
109
 
91
110
  def test_markers_read_by_default
111
+ skip "JRuby ImageIO does not give access to headers" if(RUBY_PLATFORM =~ /java/)
92
112
  refute_empty @reader[:APP0]
93
113
  end
94
114
 
95
115
  def test_empty_marker_prevents_reads
116
+ skip "JRuby ImageIO does not give access to headers" if(RUBY_PLATFORM =~ /java/)
96
117
  r = Reader.new StringIO.new(@data), []
97
118
  assert_empty r[:APP0]
98
119
  end
99
120
 
100
121
  def test_marker_content
122
+ skip "JRuby ImageIO does not give access to headers" if(RUBY_PLATFORM =~ /java/)
101
123
  assert_match(/^JFIF/, @reader[:APP0].first)
102
124
  end
103
125
 
104
126
  def test_no_configuration_after_initiated
127
+ skip unless @reader.respond_to?(:dct_method)
105
128
  @reader.gets
106
129
  assert_raises(RuntimeError) { @reader.dct_method = :IFAST }
107
130
  assert_raises(RuntimeError) { @reader.scale_denom = 4 }
@@ -17,6 +17,7 @@ module Axon
17
17
  end
18
18
 
19
19
  def test_invalid_bufsize
20
+ skip "JRuby's JPEG writer doesn't accept a buffer size" if(RUBY_PLATFORM =~ /java/)
20
21
  assert_raises RuntimeError do
21
22
  JPEG.write(@image, @io_out, :bufsize => 0)
22
23
  end
@@ -27,6 +28,7 @@ module Axon
27
28
  end
28
29
 
29
30
  def test_symbol_bufsize
31
+ skip_symbol_fixnums
30
32
  assert_raises TypeError do
31
33
  JPEG.write(@image, @io_out, :bufsize => :foo)
32
34
  end
@@ -55,12 +57,14 @@ module Axon
55
57
  end
56
58
 
57
59
  def test_symbol_quality
60
+ skip_symbol_fixnums
58
61
  assert_raises TypeError do
59
62
  JPEG.write(@image, @io_out, :quality => :foo)
60
63
  end
61
64
  end
62
65
 
63
66
  def test_exif_roundtrip
67
+ skip unless JPEG::Reader.allocate.respond_to?(:exif)
64
68
  random_data = ""
65
69
  (100).times do
66
70
  random_data << [rand].pack('d') # 800 bytes random data
@@ -75,6 +79,9 @@ module Axon
75
79
  end
76
80
 
77
81
  def test_exif_with_icc_roundtrip
82
+ skip unless JPEG::Reader.allocate.respond_to?(:exif)
83
+ skip unless JPEG::Reader.allocate.respond_to?(:icc_profile)
84
+
78
85
  random_icc_data = ""
79
86
  (2**16).times do # a little larger than one jpeg segment
80
87
  random_icc_data << [rand].pack('d') # 8 bytes random data
@@ -97,6 +104,7 @@ module Axon
97
104
  end
98
105
 
99
106
  def test_large_icc_roundtrip
107
+ skip "JRuby ImageIO gives us a different icc profile than provided" if(RUBY_PLATFORM =~ /java/)
100
108
  random_data = ""
101
109
  (2**16).times do # a little larger than one jpeg segment
102
110
  random_data << [rand].pack('d') # 8 bytes random data
@@ -18,11 +18,16 @@ module Axon
18
18
  end
19
19
  end
20
20
 
21
- def test_invalid_height_type
22
- [nil, :foo].each do |h|
23
- assert_raises TypeError, "should throw a TypeError when given a #{h.class} for height." do
24
- @mod.write(CustomHeightImage.new(h), @io_out)
25
- end
21
+ def test_nil_height
22
+ assert_raises TypeError, "should throw a TypeError when given nil for height." do
23
+ @mod.write(CustomHeightImage.new(nil), @io_out)
24
+ end
25
+ end
26
+
27
+ def test_symbol_height
28
+ skip_symbol_fixnums
29
+ assert_raises TypeError, "should throw a TypeError when given a symbol for height." do
30
+ @mod.write(CustomHeightImage.new(:foo), @io_out)
26
31
  end
27
32
  end
28
33
 
@@ -41,35 +46,21 @@ module Axon
41
46
  end
42
47
  end
43
48
 
44
- def test_invalid_width_type
45
- [nil, :foo].each do |w|
46
- assert_raises TypeError, "should throw a TypeError when given a #{w.class} for width." do
47
- @mod.write(CustomWidthImage.new(w), @io_out)
48
- end
49
- end
50
- end
51
-
52
- def test_width_raises_exception
53
- im = CustomWidthImage.new(Proc.new{ raise CustomError })
54
- assert_raises CustomError do
55
- @mod.write(im, @io_out)
56
- end
57
- end
58
-
59
- def test_nil_image_color_model
60
- assert_raises TypeError do
61
- @mod.write(CustomColorModelImage.new(nil), @io_out)
49
+ def test_nil_width
50
+ assert_raises TypeError, "should throw a TypeError when given nil for width." do
51
+ @mod.write(CustomWidthImage.new(nil), @io_out)
62
52
  end
63
53
  end
64
54
 
65
- def test_invalid_color_model
66
- assert_raises RuntimeError do
67
- @mod.write(CustomColorModelImage.new(:foo), @io_out)
55
+ def test_symbol_width
56
+ skip_symbol_fixnums
57
+ assert_raises TypeError, "should throw a TypeError when given a symbol for width." do
58
+ @mod.write(CustomWidthImage.new(:foo), @io_out)
68
59
  end
69
60
  end
70
61
 
71
- def test_color_model_raises_exception
72
- im = CustomColorModelImage.new(Proc.new{ raise CustomError })
62
+ def test_width_raises_exception
63
+ im = CustomWidthImage.new(Proc.new{ raise CustomError })
73
64
  assert_raises CustomError do
74
65
  @mod.write(im, @io_out)
75
66
  end
@@ -83,19 +74,29 @@ module Axon
83
74
  end
84
75
  end
85
76
 
86
- def test_invalid_components_type
87
- [nil, :foo].each do |w|
88
- assert_raises TypeError do
89
- @mod.write(CustomComponentsImage.new(w), @io_out)
90
- end
77
+ def test_nil_components
78
+ assert_raises TypeError do
79
+ @mod.write(CustomComponentsImage.new(nil), @io_out)
91
80
  end
92
81
  end
93
82
 
94
- def test_invalid_components_type
95
- [nil, :foo].each do |w|
96
- assert_raises TypeError, "should throw a TypeError when given a #{w.class} for components." do
97
- @mod.write(CustomComponentsImage.new(w), @io_out)
98
- end
83
+ def test_symbol_components
84
+ skip_symbol_fixnums
85
+ assert_raises TypeError do
86
+ @mod.write(CustomComponentsImage.new(:foo), @io_out)
87
+ end
88
+ end
89
+
90
+ def test_nil_components
91
+ assert_raises TypeError, "should throw a TypeError when given nil for components." do
92
+ @mod.write(CustomComponentsImage.new(nil), @io_out)
93
+ end
94
+ end
95
+
96
+ def test_symbol_components
97
+ skip_symbol_fixnums
98
+ assert_raises TypeError, "should throw a TypeError when given a symbol for components." do
99
+ @mod.write(CustomComponentsImage.new(:foo), @io_out)
99
100
  end
100
101
  end
101
102
 
@@ -110,7 +111,7 @@ module Axon
110
111
  [-1, nil, :foo].each do |l|
111
112
  # we don't know if the writer will care but test anyways to detect
112
113
  # interpreter crashes and mem leaks.
113
- @mod.write(CustomLinenoImage.new(l), @io_out)
114
+ @mod.write(CustomLinenoImage.new(l), @io_out) rescue nil
114
115
  end
115
116
  end
116
117
 
@@ -178,7 +179,8 @@ module Axon
178
179
  end
179
180
 
180
181
  def test_io_returns_invalid_type
181
- [nil, :foo, "bar"].each do |r|
182
+ skip "JRuby doesn't mind odd io returns" if(RUBY_PLATFORM =~ /java/)
183
+ [nil, "bar"].each do |r|
182
184
  im = Solid.new(200, 100)
183
185
  assert_raises TypeError, "should get a TypeError when IO#write returns a #{r.class}." do
184
186
  @mod.write(im, CustomIO.new(r))
@@ -186,7 +188,16 @@ module Axon
186
188
  end
187
189
  end
188
190
 
191
+ def test_io_returns_symbol
192
+ skip_symbol_fixnums
193
+ im = Solid.new(200, 100)
194
+ assert_raises TypeError, "should get a TypeError when IO#write returns a symbol." do
195
+ @mod.write(im, CustomIO.new(:foo))
196
+ end
197
+ end
198
+
189
199
  def test_io_returns_invalid_length
200
+ skip "JRuby doesn't mind odd io returns" if(RUBY_PLATFORM =~ /java/)
190
201
  [0, -1, -100, 2000, 1].each do |r|
191
202
  assert_raises RuntimeError do
192
203
  @mod.write(@image, CustomIO.new(r))
metadata CHANGED
@@ -1,108 +1,117 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: axon
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
5
+ version: 0.2.0
6
6
  platform: ruby
7
- authors:
8
- - Timothy Elliott
7
+ authors:
8
+ - Timothy Elliott
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-06 00:00:00.000000000Z
13
- dependencies: []
14
- description: ! 'axon reads, manipulates, and writes images.
15
-
16
-
17
- axon depends only on libjpeg and libpng.
18
12
 
13
+ date: 2012-01-24 00:00:00 Z
14
+ dependencies: []
19
15
 
20
- axon never stores an entire image in memory. All images and operations are
21
-
22
- streamed. This keeps memory requirements and latency low.
16
+ description: |
17
+ Read, manipulate, and write images with an emphasis on speed and a low memory
18
+ profile.
23
19
 
24
- '
25
20
  email: tle@holymonkey.com
26
21
  executables: []
27
- extensions:
28
- - ext/axon/extconf.rb
29
- extra_rdoc_files:
30
- - README.rdoc
31
- - CHANGELOG.rdoc
32
- - TODO.rdoc
33
- files:
34
- - Rakefile
35
- - README.rdoc
36
- - TODO.rdoc
37
- - CHANGELOG.rdoc
38
- - lib/axon.rb
39
- - lib/axon/fit.rb
40
- - lib/axon/scalers.rb
41
- - lib/axon/cropper.rb
42
- - lib/axon/generators.rb
43
- - ext/axon/axon.c
44
- - ext/axon/iccjpeg.c
45
- - ext/axon/interpolation.c
46
- - ext/axon/png.c
47
- - ext/axon/jpeg.c
48
- - ext/axon/iccjpeg.h
49
- - ext/axon/extconf.rb
50
- - test/test_nearest_neighbor_scaler.rb
51
- - test/scaler_tests.rb
52
- - test/stress_helper.rb
53
- - test/test_cropper.rb
54
- - test/test_bilinear_scaler.rb
55
- - test/test_png_writer.rb
56
- - test/test_generators.rb
57
- - test/stress_tests.rb
58
- - test/helper.rb
59
- - test/test_png_reader.rb
60
- - test/test_jpeg_reader.rb
61
- - test/test_jpeg_writer.rb
62
- - test/test_fit.rb
63
- - test/writer_tests.rb
64
- - test/reader_tests.rb
65
- - test/test_image.rb
66
- - .gemtest
22
+
23
+ extensions:
24
+ - ext/axon/extconf.rb
25
+ extra_rdoc_files:
26
+ - README.rdoc
27
+ - CHANGELOG.rdoc
28
+ - TODO.rdoc
29
+ files:
30
+ - Rakefile
31
+ - README.rdoc
32
+ - CHANGELOG.rdoc
33
+ - TODO.rdoc
34
+ - lib/axon.rb
35
+ - lib/axon/fit.rb
36
+ - lib/axon/cropper.rb
37
+ - lib/axon/scalers.rb
38
+ - lib/axon/alpha_stripper.rb
39
+ - lib/axon/generators.rb
40
+ - lib/axon/axon.jar
41
+ - ext/axon/interpolation.c
42
+ - ext/axon/png.c
43
+ - ext/axon/jpeg.c
44
+ - ext/axon/axon.c
45
+ - ext/axon/iccjpeg.c
46
+ - ext/axon/iccjpeg.h
47
+ - ext/axon/extconf.rb
48
+ - ext/java/axon/JPEG.java
49
+ - ext/java/axon/RubyImage.java
50
+ - ext/java/axon/PNG.java
51
+ - ext/java/axon/Interpolation.java
52
+ - ext/java/axon/AxonService.java
53
+ - ext/java/axon/JPEGReader.java
54
+ - ext/java/axon/PNGReader.java
55
+ - test/stress_helper.rb
56
+ - test/test_image.rb
57
+ - test/test_png_writer.rb
58
+ - test/test_fit.rb
59
+ - test/test_generators.rb
60
+ - test/test_bilinear_scaler.rb
61
+ - test/test_nearest_neighbor_scaler.rb
62
+ - test/test_jpeg_writer.rb
63
+ - test/stress_tests.rb
64
+ - test/test_cropper.rb
65
+ - test/test_jpeg_reader.rb
66
+ - test/test_png_reader.rb
67
+ - test/helper.rb
68
+ - test/writer_tests.rb
69
+ - test/test_alpha_stripper.rb
70
+ - test/reader_tests.rb
71
+ - test/scaler_tests.rb
72
+ - .gemtest
67
73
  homepage: http://github.com/ender672/axon
68
74
  licenses: []
75
+
69
76
  post_install_message:
70
77
  rdoc_options: []
71
- require_paths:
72
- - lib
73
- - ext
74
- required_ruby_version: !ruby/object:Gem::Requirement
78
+
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
75
82
  none: false
76
- requirements:
77
- - - ! '>='
78
- - !ruby/object:Gem::Version
79
- version: '0'
80
- required_rubygems_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: "0"
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
88
  none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: "0"
86
93
  requirements: []
94
+
87
95
  rubyforge_project:
88
- rubygems_version: 1.8.13
96
+ rubygems_version: 1.8.15
89
97
  signing_key:
90
98
  specification_version: 3
91
- summary: Axon reads, manipulates, and writes images.
92
- test_files:
93
- - test/test_nearest_neighbor_scaler.rb
94
- - test/scaler_tests.rb
95
- - test/stress_helper.rb
96
- - test/test_cropper.rb
97
- - test/test_bilinear_scaler.rb
98
- - test/test_png_writer.rb
99
- - test/test_generators.rb
100
- - test/stress_tests.rb
101
- - test/helper.rb
102
- - test/test_png_reader.rb
103
- - test/test_jpeg_reader.rb
104
- - test/test_jpeg_writer.rb
105
- - test/test_fit.rb
106
- - test/writer_tests.rb
107
- - test/reader_tests.rb
108
- - test/test_image.rb
99
+ summary: Read, write and resize images.
100
+ test_files:
101
+ - test/stress_helper.rb
102
+ - test/test_image.rb
103
+ - test/test_png_writer.rb
104
+ - test/test_fit.rb
105
+ - test/test_generators.rb
106
+ - test/test_bilinear_scaler.rb
107
+ - test/test_nearest_neighbor_scaler.rb
108
+ - test/test_jpeg_writer.rb
109
+ - test/stress_tests.rb
110
+ - test/test_cropper.rb
111
+ - test/test_jpeg_reader.rb
112
+ - test/test_png_reader.rb
113
+ - test/helper.rb
114
+ - test/writer_tests.rb
115
+ - test/test_alpha_stripper.rb
116
+ - test/reader_tests.rb
117
+ - test/scaler_tests.rb