motion-kit 0.0.1 → 0.9.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.
- checksums.yaml +7 -0
- data/README.md +839 -0
- data/lib/motion-kit-cocoa/cocoa_util.rb +59 -0
- data/lib/motion-kit-cocoa/constraints/constraint.rb +765 -0
- data/lib/motion-kit-cocoa/constraints/constraint_placeholder.rb +22 -0
- data/lib/motion-kit-cocoa/constraints/constraints_layout.rb +536 -0
- data/lib/motion-kit-cocoa/constraints/constraints_target.rb +52 -0
- data/lib/motion-kit-cocoa/layouts/cagradientlayer_layout.rb +13 -0
- data/lib/motion-kit-cocoa/layouts/calayer_layout.rb +27 -0
- data/lib/motion-kit-cocoa/layouts/sugarcube_compat.rb +38 -0
- data/lib/motion-kit-ios/dummy.rb +93 -0
- data/lib/motion-kit-ios/ios_util.rb +20 -0
- data/lib/motion-kit-ios/layouts/constraints_layout.rb +22 -0
- data/lib/motion-kit-ios/layouts/layout_device.rb +32 -0
- data/lib/motion-kit-ios/layouts/layout_orientation.rb +47 -0
- data/lib/motion-kit-ios/layouts/uibutton_layout.rb +52 -0
- data/lib/motion-kit-ios/layouts/uiview_layout.rb +45 -0
- data/lib/motion-kit-ios/layouts/uiview_layout_autoresizing.rb +75 -0
- data/lib/motion-kit-ios/layouts/uiview_layout_constraints.rb +36 -0
- data/lib/motion-kit-ios/layouts/uiview_layout_frame.rb +307 -0
- data/lib/motion-kit-ios/layouts/uiview_layout_gradient.rb +20 -0
- data/lib/motion-kit-osx/dummy.rb +89 -0
- data/lib/motion-kit-osx/layouts/constraints_layout.rb +42 -0
- data/lib/motion-kit-osx/layouts/nsmenu_extensions.rb +186 -0
- data/lib/motion-kit-osx/layouts/nsmenu_layout.rb +109 -0
- data/lib/motion-kit-osx/layouts/nsmenuitem_extensions.rb +45 -0
- data/lib/motion-kit-osx/layouts/nstablecolumn_layout.rb +12 -0
- data/lib/motion-kit-osx/layouts/nstableview_layout.rb +20 -0
- data/lib/motion-kit-osx/layouts/nsview_layout.rb +47 -0
- data/lib/motion-kit-osx/layouts/nsview_layout_autoresizing.rb +75 -0
- data/lib/motion-kit-osx/layouts/nsview_layout_constraints.rb +34 -0
- data/lib/motion-kit-osx/layouts/nsview_layout_frame.rb +375 -0
- data/lib/motion-kit-osx/layouts/nswindow_frame.rb +14 -0
- data/lib/motion-kit-osx/layouts/nswindow_layout.rb +77 -0
- data/lib/motion-kit-osx/osx_util.rb +16 -0
- data/lib/motion-kit.rb +33 -0
- data/lib/motion-kit/calculate.rb +263 -0
- data/lib/motion-kit/layouts/base_layout.rb +299 -0
- data/lib/motion-kit/layouts/base_layout_class_methods.rb +43 -0
- data/lib/motion-kit/layouts/parent.rb +68 -0
- data/lib/motion-kit/layouts/view_layout.rb +327 -0
- data/lib/motion-kit/motion-kit.rb +18 -0
- data/lib/motion-kit/object.rb +16 -0
- data/lib/motion-kit/util.rb +20 -0
- data/lib/motion-kit/version.rb +1 -1
- data/spec/ios/apply_styles_spec.rb +21 -0
- data/spec/ios/autoresizing_helper_spec.rb +224 -0
- data/spec/ios/calculate_spec.rb +322 -0
- data/spec/ios/calculator_spec.rb +31 -0
- data/spec/ios/constraints_helpers/attribute_lookup_spec.rb +27 -0
- data/spec/ios/constraints_helpers/axis_lookup_spec.rb +13 -0
- data/spec/ios/constraints_helpers/center_constraints_spec.rb +419 -0
- data/spec/ios/constraints_helpers/constraint_placeholder_spec.rb +72 -0
- data/spec/ios/constraints_helpers/priority_lookup_spec.rb +19 -0
- data/spec/ios/constraints_helpers/relationship_lookup_spec.rb +27 -0
- data/spec/ios/constraints_helpers/relative_corners_spec.rb +274 -0
- data/spec/ios/constraints_helpers/relative_location_spec.rb +111 -0
- data/spec/ios/constraints_helpers/simple_constraints_spec.rb +2763 -0
- data/spec/ios/constraints_helpers/size_constraints_spec.rb +422 -0
- data/spec/ios/constraints_helpers/view_lookup_constraints_spec.rb +93 -0
- data/spec/ios/create_layout_spec.rb +40 -0
- data/spec/ios/custom_layout_spec.rb +13 -0
- data/spec/ios/deferred_spec.rb +89 -0
- data/spec/ios/device_helpers_spec.rb +51 -0
- data/spec/ios/frame_helper_spec.rb +1150 -0
- data/spec/ios/layer_layout_spec.rb +36 -0
- data/spec/ios/layout_extensions_spec.rb +70 -0
- data/spec/ios/layout_spec.rb +74 -0
- data/spec/ios/layout_state_spec.rb +27 -0
- data/spec/ios/motionkit_util_spec.rb +102 -0
- data/spec/ios/objc_selectors_spec.rb +10 -0
- data/spec/ios/orientation_helper_specs.rb +67 -0
- data/spec/ios/parent_layout_spec.rb +19 -0
- data/spec/ios/parent_spec.rb +45 -0
- data/spec/ios/remove_layout_spec.rb +25 -0
- data/spec/ios/root_layout_spec.rb +53 -0
- data/spec/ios/setters_spec.rb +63 -0
- data/spec/ios/uibutton_layout_spec.rb +24 -0
- data/spec/ios/uitextfield_spec.rb +14 -0
- data/spec/ios/view_attr_spec.rb +25 -0
- data/spec/osx/autoresizing_helper_spec.rb +224 -0
- data/spec/osx/constraints_helper_spec.rb +0 -0
- data/spec/osx/constraints_helpers/orientation_lookup_spec.rb +13 -0
- data/spec/osx/constraints_helpers/simple_constraints_spec.rb +2095 -0
- data/spec/osx/constraints_helpers/size_constraints_spec.rb +362 -0
- data/spec/osx/create_menu_spec.rb +14 -0
- data/spec/osx/create_via_extensions_spec.rb +63 -0
- data/spec/osx/deferred_spec.rb +85 -0
- data/spec/osx/frame_helper_spec.rb +1881 -0
- data/spec/osx/menu_extensions_spec.rb +376 -0
- data/spec/osx/menu_layout_spec.rb +157 -0
- data/spec/osx/menu_spec.rb +70 -0
- data/spec/osx/root_menu_spec.rb +15 -0
- metadata +166 -14
@@ -0,0 +1,36 @@
|
|
1
|
+
describe TestLayerLayout do
|
2
|
+
before do
|
3
|
+
@subject = TestLayerLayout.new
|
4
|
+
end
|
5
|
+
|
6
|
+
it 'should create a CALayer root' do
|
7
|
+
@subject.view.should.be.kind_of(CALayer)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should add sublayers' do
|
11
|
+
@subject.view.sublayers.length.should == 3
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'should have styled sublayers' do
|
15
|
+
before do
|
16
|
+
@subject = TestLayerLayout.new
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should have a CALayer' do
|
20
|
+
@subject.view.sublayers[0].opacity.should == 0.5
|
21
|
+
@subject.view.sublayers[0].backgroundColor.should.not == nil
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should have a CAGradientLayer' do
|
25
|
+
@subject.view.sublayers[1].opacity.should == 0.5
|
26
|
+
@subject.view.sublayers[1].colors.should.not == nil
|
27
|
+
@subject.view.sublayers[1].colors.length.should == 2
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should have a CAShapeLayer' do
|
31
|
+
@subject.view.sublayers[2].opacity.should == 0.5
|
32
|
+
@subject.view.sublayers[2].path.should.not == nil
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
describe "Layout extensions - iOS" do
|
2
|
+
|
3
|
+
before do
|
4
|
+
@subject = MK::UIViewLayout.new
|
5
|
+
@subject.instance_variable_set(:@context, "don't matter what i be, as long as i be.")
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should have `orientation?` method' do
|
9
|
+
tf = @subject.orientation?(:portrait)
|
10
|
+
(tf == true || tf == false).should.be.true
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should return true for `orientation?(:portrait)` when in portrait' do
|
14
|
+
tf = @subject.orientation?(:portrait)
|
15
|
+
should_be = (UIApplication.sharedApplication.statusBarOrientation == UIInterfaceOrientationPortrait)
|
16
|
+
tf.should == should_be
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should return true for `orientation?(:landscape_left)` when in landscape_left' do
|
20
|
+
tf = @subject.orientation?(:landscape_left)
|
21
|
+
should_be = (UIApplication.sharedApplication.statusBarOrientation == UIInterfaceOrientationLandscapeLeft)
|
22
|
+
tf.should == should_be
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should return true for `orientation?(:landscape_right)` when in landscape_right' do
|
26
|
+
tf = @subject.orientation?(:landscape_right)
|
27
|
+
should_be = (UIApplication.sharedApplication.statusBarOrientation == UIInterfaceOrientationLandscapeRight)
|
28
|
+
tf.should == should_be
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should return true for `orientation?(:landscape)` when in landscape' do
|
32
|
+
tf = @subject.orientation?(:landscape)
|
33
|
+
should_be = (UIApplication.sharedApplication.statusBarOrientation == UIInterfaceOrientationLandscapeLeft || UIApplication.sharedApplication.statusBarOrientation == UIInterfaceOrientationLandscapeRight)
|
34
|
+
tf.should == should_be
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should have `iphone?` method' do
|
38
|
+
tf = @subject.iphone?
|
39
|
+
(tf == true || tf == false).should.be.true
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should return `true` for `iphone?` when using an iphone' do
|
43
|
+
tf = @subject.iphone?
|
44
|
+
should_be = UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPhone
|
45
|
+
tf.should == should_be
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should have `ipad?` method' do
|
49
|
+
tf = @subject.ipad?
|
50
|
+
(tf == true || tf == false).should.be.true
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should return `true` for `ipad?` when using an ipad' do
|
54
|
+
tf = @subject.ipad?
|
55
|
+
should_be = UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad
|
56
|
+
tf.should == should_be
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'should have `retina?` method' do
|
60
|
+
tf = @subject.retina?
|
61
|
+
(tf == true || tf == false).should.be.true
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should return `true` for `return?` when using a retina device' do
|
65
|
+
tf = @subject.retina?
|
66
|
+
should_be = UIScreen.mainScreen.scale == 2
|
67
|
+
tf.should == should_be
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
describe MotionKit::Layout do
|
2
|
+
before do
|
3
|
+
@subject = TestLayout.new
|
4
|
+
end
|
5
|
+
|
6
|
+
it "should be an instance of MotionKit::Layout" do
|
7
|
+
@subject.should.be.kind_of(MotionKit::Layout)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should be an instance of MK::Layout" do
|
11
|
+
@subject.should.be.kind_of(MK::Layout)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should add a UIView subview with the name :basic_view" do
|
15
|
+
view = @subject.view.subviews.find { |view| view.motion_kit_id == :basic_view }
|
16
|
+
view.should.be.kind_of(UIView)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should add two subviews under :basic_view" do
|
20
|
+
@subject.view.subviews.first.subviews.length.should == 2
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should add a UIButton as the first subview under :basic_view" do
|
24
|
+
@subject.view.subviews.first.subviews.first.should.be.kind_of UIButton
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should add a UILabel as the second subview under :basic_view" do
|
28
|
+
@subject.view.subviews.first.subviews[1].should.be.kind_of UILabel
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should allow getting the subviews by their id" do
|
32
|
+
@subject.get(:basic_view).should.be.kind_of UIView
|
33
|
+
@subject.get(:basic_view, in: @subject.view).should.be.kind_of UIView
|
34
|
+
@subject.get(:basic_view, in: @subject.view).should == @subject.get(:basic_view)
|
35
|
+
|
36
|
+
@subject.get(:basic_button).should.be.kind_of UIButton
|
37
|
+
@subject.get(:basic_button, in: @subject.view).should.be.kind_of UIView
|
38
|
+
@subject.get(:basic_button, in: @subject.view).should == @subject.get(:basic_button)
|
39
|
+
|
40
|
+
@subject.get(:basic_label).should.be.kind_of UILabel
|
41
|
+
@subject.get(:basic_label, in: @subject.view).should.be.kind_of UIView
|
42
|
+
@subject.get(:basic_label, in: @subject.view).should == @subject.get(:basic_label)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should allow getting the subviews by first, last and nth child" do
|
46
|
+
@subject.first(:repeated_label_3).should.be.kind_of UIView
|
47
|
+
@subject.first(:repeated_label_3, in: @subject.other_view).should.be.kind_of UIView
|
48
|
+
@subject.nth(:repeated_label_3, 1).should.be.kind_of UIButton
|
49
|
+
@subject.nth(:repeated_label_3, at: 1, in: @subject.other_view).should.be.kind_of UIButton
|
50
|
+
@subject.last(:repeated_label_3).should.be.kind_of UILabel
|
51
|
+
@subject.last(:repeated_label_3, in: @subject.other_view).should.be.kind_of UILabel
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should allow getting all the subviews by name" do
|
55
|
+
views = @subject.all(:repeated_label_3)
|
56
|
+
views.length.should == 3
|
57
|
+
views[0].should.be.kind_of UIView
|
58
|
+
views[1].should.be.kind_of UIButton
|
59
|
+
views[2].should.be.kind_of UILabel
|
60
|
+
|
61
|
+
views = @subject.all(:repeated_label_3, in: @subject.other_view)
|
62
|
+
views.length.should == 3
|
63
|
+
views[0].should.be.kind_of UIView
|
64
|
+
views[1].should.be.kind_of UIButton
|
65
|
+
views[2].should.be.kind_of UILabel
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should support missing methods" do
|
69
|
+
-> do
|
70
|
+
@subject.foo_bar_baz
|
71
|
+
end.should.raise(NoMethodError)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
describe 'Blocks that are state specific' do
|
2
|
+
|
3
|
+
before do
|
4
|
+
@subject = TestLayoutState.new
|
5
|
+
end
|
6
|
+
|
7
|
+
it 'should run the initial blocks from layout' do
|
8
|
+
@subject.view.text.should == 'initial'
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should run the reapply blocks from layout' do
|
12
|
+
@subject.reapply!
|
13
|
+
@subject.view.text.should == 'reapply'
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should run the initial blocks from any method' do
|
17
|
+
any_view = @subject.any_view
|
18
|
+
any_view.text.should == 'initial'
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should run the reapply blocks from any method' do
|
22
|
+
any_view = @subject.any_view
|
23
|
+
@subject.reapply!(any_view)
|
24
|
+
any_view.text.should == 'reapply'
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
describe 'MotionKit utility methods' do
|
2
|
+
|
3
|
+
it 'should objc-ify a string' do
|
4
|
+
MotionKit.objective_c_method_name('this_is_my_string').should == 'thisIsMyString'
|
5
|
+
end
|
6
|
+
|
7
|
+
it 'should camel case a string' do
|
8
|
+
MotionKit.camel_case('this_is_my_string').should == 'ThisIsMyString'
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should return the UIView appearance class' do
|
12
|
+
MotionKit.appearance_class.should.be.kind_of(Class)
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'traversal methods' do
|
16
|
+
before do
|
17
|
+
view = UIView.new
|
18
|
+
view.tag = 1
|
19
|
+
subview1 = UIButton.new
|
20
|
+
subview1.tag = 2
|
21
|
+
subview2 = UILabel.new
|
22
|
+
subview2.tag = 3
|
23
|
+
subview3 = UILabel.new
|
24
|
+
subview3.tag = 4
|
25
|
+
subview4 = UIView.new
|
26
|
+
subview4.tag = 5
|
27
|
+
subview5 = UIButton.new
|
28
|
+
subview5.tag = 6
|
29
|
+
subview6 = UILabel.new
|
30
|
+
subview6.tag = 7
|
31
|
+
|
32
|
+
view.addSubview(subview1)
|
33
|
+
view.addSubview(subview2)
|
34
|
+
view.addSubview(subview3)
|
35
|
+
view.addSubview(subview4)
|
36
|
+
|
37
|
+
subview4.addSubview(subview5)
|
38
|
+
subview4.addSubview(subview6)
|
39
|
+
|
40
|
+
@subject = view
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should return the first UIButton that matches' do
|
44
|
+
found = MotionKit.find_first_view(@subject) { |view| view.is_a?(UIButton) }
|
45
|
+
found.should.be.kind_of(UIButton)
|
46
|
+
found.tag.should == 2
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should return the first UILabel that matches' do
|
50
|
+
found = MotionKit.find_first_view(@subject) { |view| view.is_a?(UILabel) }
|
51
|
+
found.should.be.kind_of(UILabel)
|
52
|
+
found.tag.should == 3
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should return nil for first UIImage' do
|
56
|
+
found = MotionKit.find_first_view(@subject) { |view| view.is_a?(UIImage) }
|
57
|
+
found.should == nil
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should return the last UIButton that matches' do
|
61
|
+
found = MotionKit.find_last_view(@subject) { |view| view.is_a?(UIButton) }
|
62
|
+
found.should.be.kind_of(UIButton)
|
63
|
+
found.tag.should == 6
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should return the last UILabel that matches' do
|
67
|
+
found = MotionKit.find_last_view(@subject) { |view| view.is_a?(UILabel) }
|
68
|
+
found.should.be.kind_of(UILabel)
|
69
|
+
found.tag.should == 7
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'should return nil for last UIImage' do
|
73
|
+
found = MotionKit.find_last_view(@subject) { |view| view.is_a?(UIImage) }
|
74
|
+
found.should == nil
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'should return all the UIButton that match' do
|
78
|
+
found = MotionKit.find_all_views(@subject) { |view| view.is_a?(UIButton) }
|
79
|
+
found.length.should == 2
|
80
|
+
found.map { |view| view.tag }.should == [2, 6]
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'should return all the UILabel that match' do
|
84
|
+
found = MotionKit.find_all_views(@subject) { |view| view.is_a?(UILabel) }
|
85
|
+
found.length.should == 3
|
86
|
+
found.map { |view| view.tag }.should == [3, 4, 7]
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'should return all the UIView that match' do
|
90
|
+
found = MotionKit.find_all_views(@subject) { |view| view.is_a?(UIView) }
|
91
|
+
found.length.should == 7
|
92
|
+
found.map { |view| view.tag }.should == [1, 2, 3, 4, 5, 6, 7]
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should return [] for all UIImages' do
|
96
|
+
found = MotionKit.find_all_views(@subject) { |view| view.is_a?(UIImage) }
|
97
|
+
found.should == []
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
describe 'Orientation helpers' do
|
2
|
+
|
3
|
+
before do
|
4
|
+
@layout = MK::Layout.new
|
5
|
+
end
|
6
|
+
|
7
|
+
it 'should have orientation helpers' do
|
8
|
+
@layout.context({}) do
|
9
|
+
@layout.orientation?(UIInterfaceOrientationPortrait).should == true
|
10
|
+
@layout.orientation?(UIInterfaceOrientationLandscapeLeft).should == false
|
11
|
+
@layout.orientation?(UIInterfaceOrientationLandscapeRight).should == false
|
12
|
+
@layout.orientation?(UIInterfaceOrientationPortraitUpsideDown).should == false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should have orientation (portrait?) helpers' do
|
17
|
+
@layout.context({}) do
|
18
|
+
@layout.portrait?.should == true
|
19
|
+
@layout.upright?.should == true
|
20
|
+
@layout.upside_down?.should == false
|
21
|
+
@layout.landscape?.should == false
|
22
|
+
@layout.landscape_left?.should == false
|
23
|
+
@layout.landscape_right?.should == false
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should have orientation (portrait do end) helpers' do
|
28
|
+
@layout.context({}) do
|
29
|
+
@check = false
|
30
|
+
@layout.portrait do
|
31
|
+
@check = true
|
32
|
+
end
|
33
|
+
@check.should == true
|
34
|
+
|
35
|
+
@check = false
|
36
|
+
@layout.upright do
|
37
|
+
@check = true
|
38
|
+
end
|
39
|
+
@check.should == true
|
40
|
+
|
41
|
+
@check = false
|
42
|
+
@layout.upside_down do
|
43
|
+
@check = true
|
44
|
+
end
|
45
|
+
@check.should == false
|
46
|
+
|
47
|
+
@check = false
|
48
|
+
@layout.landscape do
|
49
|
+
@check = true
|
50
|
+
end
|
51
|
+
@check.should == false
|
52
|
+
|
53
|
+
@check = false
|
54
|
+
@layout.landscape_left do
|
55
|
+
@check = true
|
56
|
+
end
|
57
|
+
@check.should == false
|
58
|
+
|
59
|
+
@check = false
|
60
|
+
@layout.landscape_right do
|
61
|
+
@check = true
|
62
|
+
end
|
63
|
+
@check.should == false
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
describe "layout parent methods" do
|
2
|
+
before do
|
3
|
+
@subject = TestParentLayout.new.view.subviews.first
|
4
|
+
end
|
5
|
+
|
6
|
+
it "should be a UIView" do
|
7
|
+
@subject.should.be.kind_of UIView
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should set the first subview frame properly" do
|
11
|
+
@subject.frame.should == CGRectMake(0, 0, 100, 60)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should use parent to set its frame properly" do
|
15
|
+
@subject.subviews.first.frame.should == CGRectMake(10, 10, 50, 30)
|
16
|
+
@subject.subviews.first.subviews.first.frame.should == CGRectMake(25, 15, 40, 20)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
describe MotionKit::Parent do
|
2
|
+
|
3
|
+
before do
|
4
|
+
uiview = UIView.new
|
5
|
+
uiview.frame = [[10, 20], [30, 40]]
|
6
|
+
@subject = MotionKit::Parent.new(uiview)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should return the x value" do
|
10
|
+
@subject.x.should == 10
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return the y value" do
|
14
|
+
@subject.y.should == 20
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should return the width value" do
|
18
|
+
@subject.width.should == 30
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should return the height value" do
|
22
|
+
@subject.height.should == 40
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should return the center_x value" do
|
26
|
+
@subject.center_x.should == 15
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return the center_y value" do
|
30
|
+
@subject.center_y.should == 20
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should return the center point" do
|
34
|
+
@subject.center.should == CGPointMake(15, 20)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should return the origin point" do
|
38
|
+
@subject.origin.should == CGPointMake(10, 20)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should return the size rect" do
|
42
|
+
@subject.size.should == CGSizeMake(30, 40)
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|