motion-ui-geometry 0.5.1

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.
@@ -0,0 +1,107 @@
1
+ describe "Float" do
2
+
3
+ describe "#clamp" do
4
+ it "works with a [-1,1] range" do
5
+ -1.0.clamp(-1, 1).should == -1
6
+ 0.0.clamp(-1, 1).should == 0
7
+ 1.0.clamp(-1, 1).should == 1
8
+ -2.0.clamp(-1, 1).should == -1
9
+ 2.0.clamp(-1, 1).should == 1
10
+ -1.0.clamp(1, -1).should == -1
11
+ 0.0.clamp(1, -1).should == 0
12
+ 1.0.clamp(1, -1).should == 1
13
+ -2.0.clamp(1, -1).should == -1
14
+ 2.0.clamp(1, -1).should == 1
15
+ end
16
+
17
+ it "works with a [0, 100] range" do
18
+ 42.0.clamp(0, 100).should == 42
19
+ 1337.0.clamp(0, 100).should == 100
20
+ -123.0.clamp(0, 100).should == 0
21
+ 42.0.clamp(100, 0).should == 42
22
+ 1337.0.clamp(100, 0).should == 100
23
+ -123.0.clamp(100, 0).should == 0
24
+ end
25
+
26
+ it "works with a [0, 0] range" do
27
+ 42.0.clamp(0, 0).should == 0
28
+ 1337.0.clamp(0, 0).should == 0
29
+ -123.0.clamp(0, 0).should == 0
30
+ end
31
+
32
+ it "works with floats" do
33
+ -1.0001.clamp(-1, 1).should == -1
34
+ 1.0001.clamp(-1, 1).should == 1
35
+ -1.0001.clamp(1, -1).should == -1
36
+ 1.0001.clamp(1, -1).should == 1
37
+ end
38
+
39
+ it "raises an error if given a string" do
40
+ lambda {0.0.clamp("123", 0)}.should.raise(TypeError)
41
+ lambda {0.0.clamp(0, "123")}.should.raise(TypeError)
42
+ end
43
+ end
44
+
45
+ describe "#roughly_equal" do
46
+ it "returns true for the same value" do
47
+ 1.0.should.roughly_equal(1.0, 0.0)
48
+ -1.0.should.roughly_equal(-1.0, 0.0)
49
+ end
50
+
51
+ it "returns true for values within the given epsilon limit" do
52
+ 1.0.should.roughly_equal(1.00001, 0.00002)
53
+ 1.0.should.roughly_equal(0.99999, 0.00002)
54
+ 1.0.should.roughly_equal(0.9999999)
55
+ end
56
+
57
+ it "returns false for values outside the given epsilon limit" do
58
+ 1.0.should.not.roughly_equal(1.1, 0.001)
59
+ -1.0.should.not.roughly_equal(-1.1, 0.001)
60
+ -1.0.should.not.roughly_equal(-1.1)
61
+ end
62
+ end
63
+
64
+ describe "=~" do
65
+ it "behaves like roughly_equal with epsilon == 0.0001" do
66
+ 1.0.should =~ 1.0000001
67
+ 1.0.should.not =~ 1.001
68
+ end
69
+ end
70
+
71
+ describe "#to_radians, #to_degrees" do
72
+ it "is mathematically correct for example values" do
73
+ -180.0.to_radians.should == -Math::PI
74
+ 0.0.to_radians.should == 0
75
+ 180.0.to_radians.should == Math::PI
76
+ 360.0.to_radians.should == 2.0 * Math::PI
77
+
78
+ -180.0.to_radians.should == -Math::PI
79
+ 0.0.to_radians.should == 0
80
+ 180.0.to_radians.should == Math::PI
81
+ 360.0.to_radians.should == 2 * Math::PI
82
+
83
+ -Math::PI.to_degrees.should == -180
84
+ 0.0.to_degrees.should == 0.0
85
+ Math::PI.to_degrees.should == 180
86
+ (2 * Math::PI).to_degrees.should == 360.0
87
+ end
88
+
89
+ it "returns the initial value if reverse-applied" do
90
+ 1.0.to_radians.to_degrees.should =~ 1.0
91
+ 1.0.to_degrees.to_radians.should =~ 1.0
92
+
93
+ Math::PI.to_degrees.to_radians.should =~ Math::PI
94
+ 180.0.to_radians.to_degrees.should =~ 180.0
95
+ end
96
+ end
97
+
98
+ describe "#to_value" do
99
+ it "should return an NSNumber" do
100
+ value = 12.34.to_value
101
+ value.should.is_a NSNumber
102
+ value.floatValue.should == 12.34
103
+ end
104
+ end
105
+
106
+
107
+ end
@@ -0,0 +1 @@
1
+ Exception.log_exceptions = false
@@ -0,0 +1,15 @@
1
+ describe NSDictionary do
2
+
3
+ describe "#to_point" do
4
+ {"X" => 10, "Y" => 10}.to_point.should == CGPointMake(10, 10)
5
+ end
6
+
7
+ describe "#to_size" do
8
+ {"Width" => 10, "Height" => 10}.to_size.should == CGSizeMake(10, 10)
9
+ end
10
+
11
+ describe "#to_rect" do
12
+ {"X" => 1, "Y" => 2, "Width" => 3, "Height" => 4}.to_rect.should == CGRectMake(1, 2, 3, 4)
13
+ end
14
+
15
+ end
@@ -0,0 +1,42 @@
1
+ describe NSString do
2
+ describe "#to_point" do
3
+ it "should return a point" do
4
+ "{1, 2}".to_point.should == CGPointMake(1, 2)
5
+ "{1, 2, 3}".to_point.should == CGPointMake(1, 2)
6
+ end
7
+
8
+ it "should return CGPointZero if in wrong format" do
9
+ "{1, 2, 3".to_point.should == CGPointZero
10
+ end
11
+ end
12
+
13
+ describe "#to_size" do
14
+ it "should return a size" do
15
+ "{1, 2}".to_size.should == CGSizeMake(1, 2)
16
+ "{1, 2, 3}".to_size.should == CGSizeMake(1, 2)
17
+ end
18
+
19
+ it "should return CGSizeZero if in wrong format" do
20
+ "{1, 2, 3".to_size.should == CGSizeZero
21
+ end
22
+ end
23
+
24
+ describe "#to_rect" do
25
+ it "should return a rect" do
26
+ "{{1, 2}, {3, 4}}".to_rect.should == CGRectMake(1, 2, 3, 4)
27
+ "{{1,2},{3,4}}".to_rect.should == CGRectMake(1, 2, 3, 4)
28
+ "{{1,2},{3,4},{5,6}}".to_rect.should == CGRectMake(1, 2, 3, 4)
29
+ end
30
+ it "should return CGRectZero if in wrong format" do
31
+ "{1, 2, 3".to_rect.should == CGRectZero
32
+ end
33
+ end
34
+
35
+ describe "#to_affine_transform" do
36
+ it "should return a transform" do
37
+ "[1,2,3,4,5,6]".to_transform.should == CGAffineTransformMake(1, 2, 3, 4, 5, 6)
38
+ "[1,2, 3,4, 5,6]".to_transform.should == CGAffineTransformMake(1, 2, 3, 4, 5, 6)
39
+ end
40
+ end
41
+
42
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: motion-ui-geometry
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sebastian Burkhart
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-07 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: Access CoreGraphics UI geometry the Ruby way.
15
+ email:
16
+ - sebastianburkhart@me.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - Gemfile
23
+ - LICENSE
24
+ - README.md
25
+ - Rakefile
26
+ - lib/motion-ui-geometry.rb
27
+ - lib/motion-ui-geometry/cgaffinetransform.rb
28
+ - lib/motion-ui-geometry/cgpoint.rb
29
+ - lib/motion-ui-geometry/cgrect.rb
30
+ - lib/motion-ui-geometry/cgsize.rb
31
+ - lib/motion-ui-geometry/float.rb
32
+ - lib/motion-ui-geometry/nsdictionary.rb
33
+ - lib/motion-ui-geometry/nsstring.rb
34
+ - lib/motion-ui-geometry/spec_app_delegate.rb
35
+ - lib/motion-ui-geometry/version.rb
36
+ - motion-ui-geometry.gemspec
37
+ - spec/cgaffinetransform_spec.rb
38
+ - spec/cgpoint_spec.rb
39
+ - spec/cgrect_spec.rb
40
+ - spec/cgsize_spec.rb
41
+ - spec/float_spec.rb
42
+ - spec/helpers/no_exception_logging.rb
43
+ - spec/nsdictionary_spec.rb
44
+ - spec/nsstring_spec.rb
45
+ homepage: ''
46
+ licenses: []
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ segments:
58
+ - 0
59
+ hash: -2171170578995522578
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ segments:
67
+ - 0
68
+ hash: -2171170578995522578
69
+ requirements: []
70
+ rubyforge_project:
71
+ rubygems_version: 1.8.10
72
+ signing_key:
73
+ specification_version: 3
74
+ summary: Contains Ruby-ish interfaces mixed into Float, CGPoint, CGRect, CGSize and
75
+ CGPoint.
76
+ test_files:
77
+ - spec/cgaffinetransform_spec.rb
78
+ - spec/cgpoint_spec.rb
79
+ - spec/cgrect_spec.rb
80
+ - spec/cgsize_spec.rb
81
+ - spec/float_spec.rb
82
+ - spec/helpers/no_exception_logging.rb
83
+ - spec/nsdictionary_spec.rb
84
+ - spec/nsstring_spec.rb