photile 0.1.9 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
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: