photile 0.1.9 → 0.1.10

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.
data/lib/photile.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class Photile
2
- VERSION = "0.1.9"
2
+ VERSION = "0.1.10"
3
3
  REQUIREMENTS = "photile requires the following libraries to be installed: imagemagick, imagemagick-common and libjpeg-turbo-progs"
4
4
  end
5
5
 
data/lib/photile/cli.rb CHANGED
@@ -23,6 +23,7 @@ class Photile::Cli
23
23
 
24
24
  opts.on('-t', '--tile WIDTHxHEIGHT', Regexp.new(/\d+x\d+/), 'Tile to the given dimensions') do |dimensions|
25
25
  dim = dimensions.split('x')
26
+ validate_2d_dimensions dim
26
27
  options << {:tile => {:width => dim.first.to_i, :height => dim.last.to_i}}
27
28
  end
28
29
 
@@ -68,6 +69,10 @@ class Photile::Cli
68
69
  raise "Invalid percentage: #{metric} #{value}%. Acceptable range: 0-100" if value < 0 || value > 100
69
70
  end
70
71
 
72
+ def self.validate_2d_dimensions(dims)
73
+ raise "Invalid dimensions: #{dims.first}x#{dims.last}. Acceptable dimensions are > 0" if dims.first <= 0 || dims.last <= 0
74
+ end
75
+
71
76
  def self.validate_file_exist(file)
72
77
  raise "File [#{file}] not found" if !FileTest.exists? file
73
78
  end
data/photile.gemspec CHANGED
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.license = 'MIT'
16
16
  s.homepage = 'https://github.com/nitindhar7/photile'
17
17
  s.add_development_dependency 'rake', ['>= 0.8.7']
18
+ s.add_development_dependency 'uuid', ['>= 2.3.6']
18
19
  s.required_ruby_version = '>= 1.8.7'
19
20
  s.requirements << 'imagemagick' << 'imagemagick-common' << 'libjpeg-turbo-progs'
20
21
  end
data/test/test_cli.rb ADDED
@@ -0,0 +1,66 @@
1
+ require 'test/unit'
2
+ require 'photile'
3
+ require 'uuid'
4
+
5
+ class CliTest < Test::Unit::TestCase
6
+
7
+ def test_validate_percent_value
8
+ # percentage too high
9
+ exception = assert_raise RuntimeError do
10
+ Photile::Cli.validate_percent_value('metricX', 800)
11
+ end
12
+ assert_equal 'Invalid percentage: metricX 800%. Acceptable range: 0-100', exception.message
13
+
14
+ # percentage too low
15
+ exception = assert_raise RuntimeError do
16
+ Photile::Cli.validate_percent_value('metricX', -100)
17
+ end
18
+ assert_equal 'Invalid percentage: metricX -100%. Acceptable range: 0-100', exception.message
19
+
20
+ # percentage within acceptable range
21
+ Photile::Cli.validate_percent_value('metricX', 50)
22
+ end
23
+
24
+ def test_validate_2d_dimensions
25
+ # valid dimensions
26
+ Photile::Cli.validate_2d_dimensions([1,1])
27
+ Photile::Cli.validate_2d_dimensions([100,100])
28
+ assert true
29
+
30
+ # dimensions are negative
31
+ exception = assert_raise RuntimeError do
32
+ Photile::Cli.validate_2d_dimensions([-1,-1])
33
+ end
34
+ assert_equal 'Invalid dimensions: -1x-1. Acceptable dimensions are > 0', exception.message
35
+
36
+ # dimensions are 0
37
+ exception = assert_raise RuntimeError do
38
+ Photile::Cli.validate_2d_dimensions([0,0])
39
+ end
40
+ assert_equal 'Invalid dimensions: 0x0. Acceptable dimensions are > 0', exception.message
41
+ end
42
+
43
+ def test_validate_file_exist
44
+ # non existent files
45
+ exception = assert_raise RuntimeError do
46
+ Photile::Cli.validate_file_exist("photile-#{UUID.new.generate}.tmp")
47
+ end
48
+
49
+ # create a new file, validate it and clean it
50
+ filename = "photile-#{UUID.new.generate}.tmp"
51
+ File.new(filename, "w")
52
+ Photile::Cli.validate_file_exist(filename)
53
+ File.delete(filename)
54
+ assert true
55
+ end
56
+
57
+ def test_cli_tile_regexp
58
+ # valid regexp's
59
+ assert !Regexp.new(/\d+x\d+/).match("1x1").nil?
60
+ assert !Regexp.new(/\d+x\d+/).match("100x100").nil?
61
+
62
+ # invalid regexp structure
63
+ assert Regexp.new(/\d+x\d+/).match("1y1").nil?
64
+ end
65
+
66
+ end
@@ -0,0 +1,17 @@
1
+ require 'test/unit'
2
+ require 'photile'
3
+
4
+ class ConstsTest < Test::Unit::TestCase
5
+
6
+ def test_version
7
+ assert !Regexp.new(/\d+\.\d+\.\d+/).match(Photile::VERSION).nil?
8
+ end
9
+
10
+ def test_requirements
11
+ assert_equal "photile requires the following libraries " +
12
+ "to be installed: imagemagick, imagemagick-common " +
13
+ "and libjpeg-turbo-progs",
14
+ Photile::REQUIREMENTS
15
+ end
16
+
17
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: photile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-19 00:00:00.000000000 Z
12
+ date: 2013-01-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: 0.8.7
30
+ - !ruby/object:Gem::Dependency
31
+ name: uuid
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 2.3.6
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 2.3.6
30
46
  description: Photile is just a layer on top of Imagemagick and Jpegtran to make certain
31
47
  image processing tasks dead simple.
32
48
  email: nitindhar7@yahoo.com
@@ -43,6 +59,8 @@ files:
43
59
  - lib/photile.rb
44
60
  - lib/photile/cli.rb
45
61
  - photile.gemspec
62
+ - test/test_cli.rb
63
+ - test/test_consts.rb
46
64
  - test/test_requirements.rb
47
65
  homepage: https://github.com/nitindhar7/photile
48
66
  licenses: