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.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +839 -0
  3. data/lib/motion-kit-cocoa/cocoa_util.rb +59 -0
  4. data/lib/motion-kit-cocoa/constraints/constraint.rb +765 -0
  5. data/lib/motion-kit-cocoa/constraints/constraint_placeholder.rb +22 -0
  6. data/lib/motion-kit-cocoa/constraints/constraints_layout.rb +536 -0
  7. data/lib/motion-kit-cocoa/constraints/constraints_target.rb +52 -0
  8. data/lib/motion-kit-cocoa/layouts/cagradientlayer_layout.rb +13 -0
  9. data/lib/motion-kit-cocoa/layouts/calayer_layout.rb +27 -0
  10. data/lib/motion-kit-cocoa/layouts/sugarcube_compat.rb +38 -0
  11. data/lib/motion-kit-ios/dummy.rb +93 -0
  12. data/lib/motion-kit-ios/ios_util.rb +20 -0
  13. data/lib/motion-kit-ios/layouts/constraints_layout.rb +22 -0
  14. data/lib/motion-kit-ios/layouts/layout_device.rb +32 -0
  15. data/lib/motion-kit-ios/layouts/layout_orientation.rb +47 -0
  16. data/lib/motion-kit-ios/layouts/uibutton_layout.rb +52 -0
  17. data/lib/motion-kit-ios/layouts/uiview_layout.rb +45 -0
  18. data/lib/motion-kit-ios/layouts/uiview_layout_autoresizing.rb +75 -0
  19. data/lib/motion-kit-ios/layouts/uiview_layout_constraints.rb +36 -0
  20. data/lib/motion-kit-ios/layouts/uiview_layout_frame.rb +307 -0
  21. data/lib/motion-kit-ios/layouts/uiview_layout_gradient.rb +20 -0
  22. data/lib/motion-kit-osx/dummy.rb +89 -0
  23. data/lib/motion-kit-osx/layouts/constraints_layout.rb +42 -0
  24. data/lib/motion-kit-osx/layouts/nsmenu_extensions.rb +186 -0
  25. data/lib/motion-kit-osx/layouts/nsmenu_layout.rb +109 -0
  26. data/lib/motion-kit-osx/layouts/nsmenuitem_extensions.rb +45 -0
  27. data/lib/motion-kit-osx/layouts/nstablecolumn_layout.rb +12 -0
  28. data/lib/motion-kit-osx/layouts/nstableview_layout.rb +20 -0
  29. data/lib/motion-kit-osx/layouts/nsview_layout.rb +47 -0
  30. data/lib/motion-kit-osx/layouts/nsview_layout_autoresizing.rb +75 -0
  31. data/lib/motion-kit-osx/layouts/nsview_layout_constraints.rb +34 -0
  32. data/lib/motion-kit-osx/layouts/nsview_layout_frame.rb +375 -0
  33. data/lib/motion-kit-osx/layouts/nswindow_frame.rb +14 -0
  34. data/lib/motion-kit-osx/layouts/nswindow_layout.rb +77 -0
  35. data/lib/motion-kit-osx/osx_util.rb +16 -0
  36. data/lib/motion-kit.rb +33 -0
  37. data/lib/motion-kit/calculate.rb +263 -0
  38. data/lib/motion-kit/layouts/base_layout.rb +299 -0
  39. data/lib/motion-kit/layouts/base_layout_class_methods.rb +43 -0
  40. data/lib/motion-kit/layouts/parent.rb +68 -0
  41. data/lib/motion-kit/layouts/view_layout.rb +327 -0
  42. data/lib/motion-kit/motion-kit.rb +18 -0
  43. data/lib/motion-kit/object.rb +16 -0
  44. data/lib/motion-kit/util.rb +20 -0
  45. data/lib/motion-kit/version.rb +1 -1
  46. data/spec/ios/apply_styles_spec.rb +21 -0
  47. data/spec/ios/autoresizing_helper_spec.rb +224 -0
  48. data/spec/ios/calculate_spec.rb +322 -0
  49. data/spec/ios/calculator_spec.rb +31 -0
  50. data/spec/ios/constraints_helpers/attribute_lookup_spec.rb +27 -0
  51. data/spec/ios/constraints_helpers/axis_lookup_spec.rb +13 -0
  52. data/spec/ios/constraints_helpers/center_constraints_spec.rb +419 -0
  53. data/spec/ios/constraints_helpers/constraint_placeholder_spec.rb +72 -0
  54. data/spec/ios/constraints_helpers/priority_lookup_spec.rb +19 -0
  55. data/spec/ios/constraints_helpers/relationship_lookup_spec.rb +27 -0
  56. data/spec/ios/constraints_helpers/relative_corners_spec.rb +274 -0
  57. data/spec/ios/constraints_helpers/relative_location_spec.rb +111 -0
  58. data/spec/ios/constraints_helpers/simple_constraints_spec.rb +2763 -0
  59. data/spec/ios/constraints_helpers/size_constraints_spec.rb +422 -0
  60. data/spec/ios/constraints_helpers/view_lookup_constraints_spec.rb +93 -0
  61. data/spec/ios/create_layout_spec.rb +40 -0
  62. data/spec/ios/custom_layout_spec.rb +13 -0
  63. data/spec/ios/deferred_spec.rb +89 -0
  64. data/spec/ios/device_helpers_spec.rb +51 -0
  65. data/spec/ios/frame_helper_spec.rb +1150 -0
  66. data/spec/ios/layer_layout_spec.rb +36 -0
  67. data/spec/ios/layout_extensions_spec.rb +70 -0
  68. data/spec/ios/layout_spec.rb +74 -0
  69. data/spec/ios/layout_state_spec.rb +27 -0
  70. data/spec/ios/motionkit_util_spec.rb +102 -0
  71. data/spec/ios/objc_selectors_spec.rb +10 -0
  72. data/spec/ios/orientation_helper_specs.rb +67 -0
  73. data/spec/ios/parent_layout_spec.rb +19 -0
  74. data/spec/ios/parent_spec.rb +45 -0
  75. data/spec/ios/remove_layout_spec.rb +25 -0
  76. data/spec/ios/root_layout_spec.rb +53 -0
  77. data/spec/ios/setters_spec.rb +63 -0
  78. data/spec/ios/uibutton_layout_spec.rb +24 -0
  79. data/spec/ios/uitextfield_spec.rb +14 -0
  80. data/spec/ios/view_attr_spec.rb +25 -0
  81. data/spec/osx/autoresizing_helper_spec.rb +224 -0
  82. data/spec/osx/constraints_helper_spec.rb +0 -0
  83. data/spec/osx/constraints_helpers/orientation_lookup_spec.rb +13 -0
  84. data/spec/osx/constraints_helpers/simple_constraints_spec.rb +2095 -0
  85. data/spec/osx/constraints_helpers/size_constraints_spec.rb +362 -0
  86. data/spec/osx/create_menu_spec.rb +14 -0
  87. data/spec/osx/create_via_extensions_spec.rb +63 -0
  88. data/spec/osx/deferred_spec.rb +85 -0
  89. data/spec/osx/frame_helper_spec.rb +1881 -0
  90. data/spec/osx/menu_extensions_spec.rb +376 -0
  91. data/spec/osx/menu_layout_spec.rb +157 -0
  92. data/spec/osx/menu_spec.rb +70 -0
  93. data/spec/osx/root_menu_spec.rb +15 -0
  94. metadata +166 -14
@@ -0,0 +1,1881 @@
1
+ class UpsideDownView < NSView
2
+
3
+ def isFlipped
4
+ true
5
+ end
6
+
7
+ end
8
+
9
+
10
+ describe 'Frame helpers' do
11
+
12
+ before do
13
+ @layout = TestEmptyLayout.new
14
+ top_view = NSView.alloc.initWithFrame([[0, 0], [500, 500]])
15
+ @layout.root = top_view
16
+
17
+ @view_size = CGSize.new(8, 10)
18
+ @view = NSView.alloc.initWithFrame([[0, 0], @view_size])
19
+ @view.backgroundColor = NSColor.whiteColor
20
+ @view.motion_kit_id = :view
21
+
22
+ @superview_size = CGSize.new(60, 40)
23
+ @superview = NSView.alloc.initWithFrame([[0, 0], @superview_size])
24
+ @superview.addSubview(@view)
25
+ @superview.backgroundColor = NSColor.blueColor
26
+
27
+ @flipped_superview = UpsideDownView.alloc.initWithFrame([[0, @superview_size.height], @superview_size])
28
+ @flipped_superview.backgroundColor = NSColor.whiteColor
29
+
30
+ @flipped_view = NSView.alloc.initWithFrame([[0, 0], @view_size])
31
+ @flipped_superview.addSubview(@flipped_view)
32
+
33
+ @another_view = NSView.alloc.initWithFrame([[10, 100], [120, 48]])
34
+ @another_view.backgroundColor = NSColor.redColor
35
+ @another_view.motion_kit_id = :another_view
36
+
37
+ top_view.addSubview(@another_view)
38
+ top_view.addSubview(@superview)
39
+ top_view.addSubview(@flipped_superview)
40
+
41
+ @label = NSTextField.alloc.init
42
+ @label.stringValue = 'M'
43
+
44
+ @label.editable = false
45
+ @label.selectable = false
46
+ @label.bordered = false
47
+ @label.font = NSFont.fontWithName('Monaco', size: 12)
48
+
49
+ cell = @label.cell
50
+ cell.alignment = NSCenterTextAlignment
51
+ cell.scrollable = false
52
+ cell.drawsBackground = false
53
+
54
+ @label_auto_size = @label.intrinsicContentSize
55
+ end
56
+
57
+ it 'should support `x` method' do
58
+ @layout.context(@view) do
59
+ retval = @layout.x 1
60
+ retval.should == CGRectGetMinX(@view.frame)
61
+ @view.frame.origin.x.should == 1
62
+
63
+ retval = @layout.x '100% - 1'
64
+ retval.should == CGRectGetMinX(@view.frame)
65
+ @view.frame.origin.x.should == @superview_size.width - 1
66
+ end
67
+ end
68
+
69
+ it 'should support `left` method' do
70
+ @layout.context(@view) do
71
+ retval = @layout.left 1
72
+ retval.should == CGRectGetMinX(@view.frame)
73
+ @view.frame.origin.x.should == 1
74
+
75
+ retval = @layout.left '100% - 1'
76
+ retval.should == CGRectGetMinX(@view.frame)
77
+ @view.frame.origin.x.should == @superview_size.width - 1
78
+ end
79
+ end
80
+
81
+ it 'should support `right` method' do
82
+ @layout.context(@view) do
83
+ retval = @layout.right 1
84
+ retval.should == CGRectGetMaxX(@view.frame)
85
+ @view.frame.origin.x.should == 1 - @view_size.width
86
+
87
+ retval = @layout.right '100% - 1'
88
+ retval.should == CGRectGetMaxX(@view.frame)
89
+ @view.frame.origin.x.should == @superview_size.width - 1 - @view_size.width
90
+ end
91
+ end
92
+
93
+ it 'should support `center_x` method' do
94
+ @view.frame = [[0, 0], [2, 2]]
95
+ @layout.context(@view) do
96
+ retval = @layout.center_x 1
97
+ retval.should == CGRectGetMidX(@view.frame)
98
+ @view.frame.origin.x.should == 0
99
+
100
+ retval = @layout.center_x '100% - 1'
101
+ retval.should == CGRectGetMidX(@view.frame)
102
+ @view.frame.origin.x.should == @superview_size.width - 2
103
+ end
104
+ end
105
+
106
+ it 'should support `middle_x` method' do
107
+ @view.frame = [[0, 0], [2, 2]]
108
+ @layout.context(@view) do
109
+ retval = @layout.middle_x 1
110
+ retval.should == CGRectGetMidX(@view.frame)
111
+ @view.frame.origin.x.should == 0
112
+
113
+ retval = @layout.middle_x '100% - 1'
114
+ retval.should == CGRectGetMidX(@view.frame)
115
+ @view.frame.origin.x.should == @superview_size.width - 2
116
+ end
117
+ end
118
+
119
+ it 'should support `y` method' do
120
+ @layout.context(@view) do
121
+ retval = @layout.y 1
122
+ retval.should == CGRectGetMinY(@view.frame)
123
+ @view.frame.origin.y.should == 1
124
+
125
+ retval = @layout.y '100% - 1'
126
+ retval.should == CGRectGetMinY(@view.frame)
127
+ @view.frame.origin.y.should == @superview_size.height - 1
128
+ end
129
+ end
130
+
131
+ it 'should support `y` method in a flipped view' do
132
+ @layout.context(@flipped_view) do
133
+ retval = @layout.y 1
134
+ retval.should == CGRectGetMinY(@flipped_view.frame)
135
+ @flipped_view.frame.origin.y.should == 1
136
+
137
+ retval = @layout.y '100% - 1'
138
+ retval.should == CGRectGetMinY(@flipped_view.frame)
139
+ @flipped_view.frame.origin.y.should == @superview_size.height - 1
140
+ end
141
+ end
142
+
143
+ it 'should support `bottom` method' do
144
+ @layout.context(@view) do
145
+ retval = @layout.bottom 1
146
+ retval.should == CGRectGetMinY(@view.frame)
147
+ @view.frame.origin.y.should == 1
148
+
149
+ retval = @layout.bottom '100% - 1'
150
+ retval.should == CGRectGetMinY(@view.frame)
151
+ @view.frame.origin.y.should == @superview_size.height - 1
152
+ end
153
+ end
154
+
155
+ it 'should support `bottom` method in a flipped view' do
156
+ @layout.context(@flipped_view) do
157
+ retval = @layout.bottom 1
158
+ retval.should == CGRectGetMaxY(@flipped_view.frame)
159
+ @flipped_view.frame.origin.y.should == 1 - @view_size.height
160
+
161
+ retval = @layout.bottom '100% - 1'
162
+ retval.should == CGRectGetMaxY(@flipped_view.frame)
163
+ @flipped_view.frame.origin.y.should == @superview_size.height - 1 - @view_size.height
164
+ end
165
+ end
166
+
167
+ it 'should support `top` method' do
168
+ @layout.context(@view) do
169
+ retval = @layout.top 1
170
+ retval.should == CGRectGetMaxY(@view.frame)
171
+ @view.frame.origin.y.should == 1 - @view_size.height
172
+
173
+ retval = @layout.top '100% - 1'
174
+ retval.should == CGRectGetMaxY(@view.frame)
175
+ @view.frame.origin.y.should == @superview_size.height - 1 - @view_size.height
176
+ end
177
+ end
178
+
179
+ it 'should support `top` method in a flipped view' do
180
+ @layout.context(@flipped_view) do
181
+ retval = @layout.top 1
182
+ retval.should == CGRectGetMinY(@flipped_view.frame)
183
+ @flipped_view.frame.origin.y.should == 1
184
+
185
+ retval = @layout.top '100% - 1'
186
+ retval.should == CGRectGetMinY(@flipped_view.frame)
187
+ @flipped_view.frame.origin.y.should == @superview_size.height - 1
188
+ end
189
+ end
190
+
191
+ it 'should support `center_y` method' do
192
+ @view.frame = [[0, 0], [2, 2]]
193
+ @layout.context(@view) do
194
+ retval = @layout.center_y 1
195
+ retval.should == CGRectGetMidY(@view.frame)
196
+ @view.frame.origin.y.should == 0
197
+
198
+ retval = @layout.center_y '100% - 1'
199
+ retval.should == CGRectGetMidY(@view.frame)
200
+ @view.frame.origin.y.should == @superview_size.height - 2
201
+ end
202
+ end
203
+
204
+ it 'should support `center_y` method in a flipped view' do
205
+ @flipped_view.frame = [[0, 0], [2, 2]]
206
+ @layout.context(@flipped_view) do
207
+ retval = @layout.center_y 1
208
+ retval.should == CGRectGetMidY(@flipped_view.frame)
209
+ @flipped_view.frame.origin.y.should == 0
210
+
211
+ retval = @layout.center_y '100% - 1'
212
+ retval.should == CGRectGetMidY(@flipped_view.frame)
213
+ @flipped_view.frame.origin.y.should == @superview_size.height - 2
214
+ end
215
+ end
216
+
217
+ it 'should support `middle_y` method' do
218
+ @view.frame = [[0, 0], [2, 2]]
219
+ @layout.context(@view) do
220
+ retval = @layout.middle_y 1
221
+ retval.should == CGRectGetMidY(@view.frame)
222
+ @view.frame.origin.y.should == 0
223
+
224
+ retval = @layout.middle_y '100% - 1'
225
+ retval.should == CGRectGetMidY(@view.frame)
226
+ @view.frame.origin.y.should == @superview_size.height - 2
227
+ end
228
+ end
229
+
230
+ it 'should support `width` method' do
231
+ @layout.context(@view) do
232
+ retval = @layout.width 1
233
+ retval.should == CGRectGetWidth(@view.frame)
234
+ @view.frame.size.width.should == 1
235
+
236
+ retval = @layout.width '100% - 1'
237
+ retval.should == CGRectGetWidth(@view.frame)
238
+ @view.frame.size.width.should == @superview_size.width - 1
239
+ end
240
+ end
241
+
242
+ it 'should support `w` method' do
243
+ @layout.context(@view) do
244
+ retval = @layout.w 1
245
+ retval.should == CGRectGetWidth(@view.frame)
246
+ @view.frame.size.width.should == 1
247
+
248
+ retval = @layout.w '100% - 1'
249
+ retval.should == CGRectGetWidth(@view.frame)
250
+ @view.frame.size.width.should == @superview_size.width - 1
251
+ end
252
+ end
253
+
254
+ it 'should support `height` method' do
255
+ @layout.context(@view) do
256
+ retval = @layout.height 1
257
+ retval.should == CGRectGetHeight(@view.frame)
258
+ @view.frame.size.height.should == 1
259
+
260
+ retval = @layout.height '100% - 1'
261
+ retval.should == CGRectGetHeight(@view.frame)
262
+ @view.frame.size.height.should == @superview_size.height - 1
263
+ end
264
+ end
265
+
266
+ it 'should support `h` method' do
267
+ @layout.context(@view) do
268
+ retval = @layout.h 1
269
+ retval.should == CGRectGetHeight(@view.frame)
270
+ @view.frame.size.height.should == 1
271
+
272
+ retval = @layout.h '100% - 1'
273
+ retval.should == CGRectGetHeight(@view.frame)
274
+ @view.frame.size.height.should == @superview_size.height - 1
275
+ end
276
+ end
277
+
278
+ it 'should support `origin([])` method' do
279
+ @layout.context(@view) do
280
+ retval = @layout.origin [1, 2]
281
+ retval.should == @view.frame.origin
282
+ @view.frame.origin.x.should == 1
283
+ @view.frame.origin.y.should == 2
284
+
285
+ retval = @layout.origin ['100% - 1', '100% - 2']
286
+ retval.should == @view.frame.origin
287
+ @view.frame.origin.x.should == @superview_size.width - 1
288
+ @view.frame.origin.y.should == @superview_size.height - 2
289
+ end
290
+ end
291
+
292
+ it 'should support `origin([])` method in a flipped view' do
293
+ @layout.context(@flipped_view) do
294
+ retval = @layout.origin [1, 2]
295
+ retval.should == @flipped_view.frame.origin
296
+ @flipped_view.frame.origin.x.should == 1
297
+ @flipped_view.frame.origin.y.should == 2
298
+
299
+ retval = @layout.origin ['100% - 1', '100% - 2']
300
+ retval.should == @flipped_view.frame.origin
301
+ @flipped_view.frame.origin.x.should == @superview_size.width - 1
302
+ @flipped_view.frame.origin.y.should == @superview_size.height - 2
303
+ end
304
+ end
305
+
306
+ it 'should support `origin({})` method' do
307
+ @layout.context(@view) do
308
+ retval = @layout.origin x: 1, y: 2
309
+ retval.should == @view.frame.origin
310
+ @view.frame.origin.x.should == 1
311
+ @view.frame.origin.y.should == 2
312
+
313
+ retval = @layout.origin x: '100% - 1', y: '100% - 2'
314
+ retval.should == @view.frame.origin
315
+ @view.frame.origin.x.should == @superview_size.width - 1
316
+ @view.frame.origin.y.should == @superview_size.height - 2
317
+ end
318
+ end
319
+
320
+ it 'should support `origin({relative: true})` method' do
321
+ @layout.context(@view) do
322
+ retval = @layout.origin x: 0, y: 0, right: 1, up: 2, relative: true
323
+ retval.should == @view.frame.origin
324
+ @view.frame.origin.x.should == 1
325
+ @view.frame.origin.y.should == 2
326
+
327
+ retval = @layout.origin x: '100%', y: '100%', left: 1, down: 2, relative: true
328
+ retval.should == @view.frame.origin
329
+ @view.frame.origin.x.should == @superview_size.width - 1
330
+ @view.frame.origin.y.should == @superview_size.height - 2
331
+ end
332
+ end
333
+
334
+ it 'should support `origin({relative: true})` method in a flipped view' do
335
+ @layout.context(@flipped_view) do
336
+ retval = @layout.origin x: 0, y: 0, right: 1, down: 2, relative: true
337
+ retval.should == @flipped_view.frame.origin
338
+ @flipped_view.frame.origin.x.should == 1
339
+ @flipped_view.frame.origin.y.should == 2
340
+
341
+ retval = @layout.origin x: '100%', y: '100%', left: 1, up: 2, relative: true
342
+ retval.should == @flipped_view.frame.origin
343
+ @flipped_view.frame.origin.x.should == @superview_size.width - 1
344
+ @flipped_view.frame.origin.y.should == @superview_size.height - 2
345
+ end
346
+ end
347
+
348
+ it 'should support `center([])` method' do
349
+ @view.frame = [[0, 0], [2, 2]]
350
+ @layout.context(@view) do
351
+ retval = @layout.center [1, 2]
352
+ retval.x.should == @view.frame.origin.x + @view.frame.size.width / 2
353
+ retval.y.should == @view.frame.origin.y + @view.frame.size.height / 2
354
+ @view.frame.origin.x.should == 0
355
+ @view.frame.origin.y.should == 1
356
+
357
+ retval = @layout.center ['100% - 1', '100% - 2']
358
+ retval.x.should == @view.frame.origin.x + @view.frame.size.width / 2
359
+ retval.y.should == @view.frame.origin.y + @view.frame.size.height / 2
360
+ @view.frame.origin.x.should == @superview_size.width - 2
361
+ @view.frame.origin.y.should == @superview_size.height - 3
362
+ end
363
+ end
364
+
365
+ it 'should support `center({})` method' do
366
+ @view.frame = [[0, 0], [2, 2]]
367
+ @layout.context(@view) do
368
+ retval = @layout.center x: 1, y: 2
369
+ retval.x.should == @view.frame.origin.x + @view.frame.size.width / 2
370
+ retval.y.should == @view.frame.origin.y + @view.frame.size.height / 2
371
+ @view.frame.origin.x.should == 0
372
+ @view.frame.origin.y.should == 1
373
+
374
+ retval = @layout.center x: '100% - 1', y: '100% - 2'
375
+ retval.x.should == @view.frame.origin.x + @view.frame.size.width / 2
376
+ retval.y.should == @view.frame.origin.y + @view.frame.size.height / 2
377
+ @view.frame.origin.x.should == @superview_size.width - 2
378
+ @view.frame.origin.y.should == @superview_size.height - 3
379
+ end
380
+ end
381
+
382
+ it 'should support `center({relative: true})` method' do
383
+ @view.frame = [[0, 0], [2, 2]]
384
+ @layout.context(@view) do
385
+ retval = @layout.center x: 1, y: 1, right: 1, up: 2, relative: true
386
+ retval.x.should == @view.frame.origin.x + @view.frame.size.width / 2
387
+ retval.y.should == @view.frame.origin.y + @view.frame.size.height / 2
388
+ @view.frame.origin.x.should == 1
389
+ @view.frame.origin.y.should == 2
390
+
391
+ retval = @layout.center x: '100%', y: '100%', left: 1, down: 2, relative: true
392
+ retval.x.should == @view.frame.origin.x + @view.frame.size.width / 2
393
+ retval.y.should == @view.frame.origin.y + @view.frame.size.height / 2
394
+ @view.frame.origin.x.should == @superview_size.width - 2
395
+ @view.frame.origin.y.should == @superview_size.height - 3
396
+ end
397
+ end
398
+
399
+ it 'should support `center({relative: true})` method in a flipped view' do
400
+ @flipped_view.frame = [[0, 0], [2, 2]]
401
+ @layout.context(@flipped_view) do
402
+ retval = @layout.center x: 1, y: 1, right: 1, down: 2, relative: true
403
+ retval.x.should == @flipped_view.frame.origin.x + @flipped_view.frame.size.width / 2
404
+ retval.y.should == @flipped_view.frame.origin.y + @flipped_view.frame.size.height / 2
405
+ @flipped_view.frame.origin.x.should == 1
406
+ @flipped_view.frame.origin.y.should == 2
407
+
408
+ retval = @layout.center x: '100%', y: '100%', left: 1, up: 2, relative: true
409
+ retval.x.should == @flipped_view.frame.origin.x + @flipped_view.frame.size.width / 2
410
+ retval.y.should == @flipped_view.frame.origin.y + @flipped_view.frame.size.height / 2
411
+ @flipped_view.frame.origin.x.should == @superview_size.width - 2
412
+ @flipped_view.frame.origin.y.should == @superview_size.height - 3
413
+ end
414
+ end
415
+
416
+ it 'should support `size` method' do
417
+ @layout.context(@view) do
418
+ retval = @layout.size [1, 2]
419
+ retval.should == @view.frame.size
420
+ @view.frame.size.width.should == 1
421
+ @view.frame.size.height.should == 2
422
+
423
+ retval = @layout.size ['100% - 1', '100% - 2']
424
+ retval.should == @view.frame.size
425
+ @view.frame.size.width.should == @superview_size.width - 1
426
+ @view.frame.size.height.should == @superview_size.height - 2
427
+ end
428
+ end
429
+
430
+ it 'should support `size :full`' do
431
+ @layout.context(@view) do
432
+ retval = @layout.size :full
433
+ retval.should == @view.frame.size
434
+ end
435
+ @view.frame.size.width.should == @superview_size.width
436
+ @view.frame.size.height.should == @superview_size.height
437
+ end
438
+
439
+ it 'should support `size :auto`' do
440
+ @layout.context(@label) do
441
+ retval = @layout.size :auto
442
+ retval.should == @label.frame.size
443
+ end
444
+ @label.frame.size.width.should == @label_auto_size.width
445
+ @label.frame.size.height.should == @label_auto_size.height
446
+ end
447
+
448
+ it 'should support `size :auto, height`' do
449
+ @layout.context(@label) do
450
+ retval = @layout.size [:auto, @label_auto_size.height]
451
+ retval.should == @label.frame.size
452
+ end
453
+ @label.frame.size.width.should == @label_auto_size.width
454
+ @label.frame.size.height.should == @label_auto_size.height
455
+ end
456
+
457
+ it 'should support `size width, :auto`' do
458
+ @layout.context(@label) do
459
+ retval = @layout.size [@label_auto_size.width, :auto]
460
+ retval.should == @label.frame.size
461
+ end
462
+ @label.frame.size.width.should == @label_auto_size.width
463
+ @label.frame.size.height.should == @label_auto_size.height
464
+ end
465
+
466
+ it 'should support `size :scale, height`' do
467
+ @layout.context(@label) do
468
+ retval = @layout.size [100 * @label_auto_size.width, :scale]
469
+ retval.should == @label.frame.size
470
+ end
471
+ @label.frame.size.width.should == 100 * @label_auto_size.width
472
+ @label.frame.size.height.should == 100 * @label_auto_size.height
473
+ end
474
+
475
+ it 'should support `size width, :scale`' do
476
+ @layout.context(@label) do
477
+ retval = @layout.size [:scale, 100 * @label_auto_size.height]
478
+ retval.should == @label.frame.size
479
+ end
480
+ @label.frame.size.width.should == 100 * @label_auto_size.width
481
+ @label.frame.size.height.should == 100 * @label_auto_size.height
482
+ end
483
+
484
+ it 'should support `frame` arrays [[x, y], [w, h]]' do
485
+ @layout.context(@view) do
486
+ retval = @layout.frame [[1, 2], [3, 4]]
487
+ retval.should == @view.frame
488
+ end
489
+ @view.frame.origin.x.should == 1
490
+ @view.frame.origin.y.should == 2
491
+ @view.frame.size.width.should == 3
492
+ @view.frame.size.height.should == 4
493
+ end
494
+
495
+ it 'should support `frame` arrays [x, y, w, h]' do
496
+ @layout.context(@view) do
497
+ retval = @layout.frame [1, 2, 3, 4]
498
+ retval.should == @view.frame
499
+ end
500
+ @view.frame.origin.x.should == 1
501
+ @view.frame.origin.y.should == 2
502
+ @view.frame.size.width.should == 3
503
+ @view.frame.size.height.should == 4
504
+ end
505
+
506
+ it 'should support `frame :full`' do
507
+ @layout.context(@view) do
508
+ retval = @layout.frame :full
509
+ retval.should == @view.frame
510
+ end
511
+ @view.frame.origin.x.should == 0
512
+ @view.frame.origin.y.should == 0
513
+ @view.frame.size.width.should == @superview_size.width
514
+ @view.frame.size.height.should == @superview_size.height
515
+ end
516
+
517
+ it 'should support `frame :auto`' do
518
+ def @view.intrinsicContentSize
519
+ CGSize.new(1, 2)
520
+ end
521
+
522
+ @layout.context(@view) do
523
+ retval = @layout.frame :auto
524
+ retval.should == @view.frame
525
+ end
526
+ @view.frame.origin.x.should == 0
527
+ @view.frame.origin.y.should == 0
528
+ @view.frame.size.width.should == 1
529
+ @view.frame.size.height.should == 2
530
+ end
531
+
532
+ it 'should support `frame :center`' do
533
+ @layout.context(@view) do
534
+ retval = @layout.frame :center
535
+ retval.should == @view.frame
536
+ end
537
+ @view.frame.origin.x.should == 26
538
+ @view.frame.origin.y.should == 15
539
+ @view.frame.size.width.should == @view_size.width
540
+ @view.frame.size.height.should == @view_size.height
541
+ end
542
+
543
+ it 'should support setting the frame via `from_bottom_left`' do
544
+ @layout.context(@view) do
545
+ retval = @layout.frame @layout.from_bottom_left()
546
+ retval.should == @view.frame
547
+ end
548
+ @view.frame.origin.x.should == 0
549
+ @view.frame.origin.y.should == 0
550
+ @view.frame.size.width.should == @view_size.width
551
+ @view.frame.size.height.should == @view_size.height
552
+ end
553
+
554
+ it 'should support setting the frame via `from_bottom_left` in a flipped view' do
555
+ @layout.context(@flipped_view) do
556
+ retval = @layout.frame @layout.from_bottom_left()
557
+ retval.should == @flipped_view.frame
558
+ end
559
+ @flipped_view.frame.origin.x.should == 0
560
+ @flipped_view.frame.origin.y.should == @superview_size.height - @view_size.height
561
+ @flipped_view.frame.size.width.should == @view_size.width
562
+ @flipped_view.frame.size.height.should == @view_size.height
563
+ end
564
+
565
+ it 'should support setting the frame via `from_bottom_left(width:height:)`' do
566
+ @layout.context(@view) do
567
+ retval = @layout.frame @layout.from_bottom_left(width: 10, height: 20)
568
+ retval.should == @view.frame
569
+ end
570
+ @view.frame.origin.x.should == 0
571
+ @view.frame.origin.y.should == 0
572
+ @view.frame.size.width.should == 10
573
+ @view.frame.size.height.should == 20
574
+ end
575
+
576
+ it 'should support setting the frame via `from_bottom_left(x:y:width:height:)`' do
577
+ @layout.context(@view) do
578
+ retval = @layout.frame @layout.from_bottom_left(x: 10, y: 20, width: 22, height: 12)
579
+ retval.should == @view.frame
580
+ end
581
+ @view.frame.origin.x.should == 10
582
+ @view.frame.origin.y.should == 20
583
+ @view.frame.size.width.should == 22
584
+ @view.frame.size.height.should == 12
585
+ end
586
+
587
+ it 'should support setting the frame via `from_bottom_left(right:up:width:height:)`' do
588
+ @layout.context(@view) do
589
+ retval = @layout.frame @layout.from_bottom_left(right: 10, up: 20, width: 22, height: 12)
590
+ retval.should == @view.frame
591
+ end
592
+ @view.frame.origin.x.should == 10
593
+ @view.frame.origin.y.should == 20
594
+ @view.frame.size.width.should == 22
595
+ @view.frame.size.height.should == 12
596
+ end
597
+
598
+ it 'should support setting the frame via `from_bottom_left(left:down:width:height:)`' do
599
+ @layout.context(@view) do
600
+ retval = @layout.frame @layout.from_bottom_left(left: 10, down: 20, width: 22, height: 12)
601
+ retval.should == @view.frame
602
+ end
603
+ @view.frame.origin.x.should == -10
604
+ @view.frame.origin.y.should == -20
605
+ @view.frame.size.width.should == 22
606
+ @view.frame.size.height.should == 12
607
+ end
608
+
609
+ it 'should support setting the frame via `from_bottom_left(right:up:width:height:)` in a flipped view' do
610
+ @layout.context(@flipped_view) do
611
+ retval = @layout.frame @layout.from_bottom_left(right: 10, down: 20, width: 22, height: 12)
612
+ retval.should == @flipped_view.frame
613
+ end
614
+ @flipped_view.frame.origin.x.should == 10
615
+ @flipped_view.frame.origin.y.should == @superview_size.height - 12 + 20
616
+ @flipped_view.frame.size.width.should == 22
617
+ @flipped_view.frame.size.height.should == 12
618
+ end
619
+
620
+ it 'should support setting the frame via `from_bottom_left(left:down:width:height:)` in a flipped view' do
621
+ @layout.context(@flipped_view) do
622
+ retval = @layout.frame @layout.from_bottom_left(left: 10, up: 20, width: 22, height: 12)
623
+ retval.should == @flipped_view.frame
624
+ end
625
+ @flipped_view.frame.origin.x.should == -10
626
+ @flipped_view.frame.origin.y.should == @superview_size.height - 12 - 20
627
+ @flipped_view.frame.size.width.should == 22
628
+ @flipped_view.frame.size.height.should == 12
629
+ end
630
+
631
+ it 'should support setting the frame via `from_bottom_left(view)`' do
632
+ @layout.context(@view) do
633
+ retval = @layout.frame @layout.from_bottom_left(@another_view, x: 1, y: 1)
634
+ retval.should == @view.frame
635
+ end
636
+ @view.frame.origin.x.should == @another_view.frame.origin.x + 1
637
+ @view.frame.origin.y.should == @another_view.frame.origin.y + 1
638
+ @view.frame.size.width.should == @view_size.width
639
+ @view.frame.size.height.should == @view_size.height
640
+ end
641
+
642
+ it 'should support setting the frame via `from_bottom_left(:view)`' do
643
+ @layout.context(@view) do
644
+ retval = @layout.frame @layout.from_bottom_left(:another_view, x: 1, y: 1)
645
+ retval.should == @view.frame
646
+ end
647
+ @view.frame.origin.x.should == @another_view.frame.origin.x + 1
648
+ @view.frame.origin.y.should == @another_view.frame.origin.y + 1
649
+ @view.frame.size.width.should == @view_size.width
650
+ @view.frame.size.height.should == @view_size.height
651
+ end
652
+
653
+ it 'should support setting the frame via `from_bottom`' do
654
+ @layout.context(@view) do
655
+ retval = @layout.frame @layout.from_bottom()
656
+ retval.should == @view.frame
657
+ end
658
+ @view.frame.origin.x.should == (@superview_size.width - @view_size.width) / 2
659
+ @view.frame.origin.y.should == 0
660
+ @view.frame.size.width.should == @view_size.width
661
+ @view.frame.size.height.should == @view_size.height
662
+ end
663
+
664
+ it 'should support setting the frame via `from_bottom` in a flipped view' do
665
+ @layout.context(@flipped_view) do
666
+ retval = @layout.frame @layout.from_bottom()
667
+ retval.should == @flipped_view.frame
668
+ end
669
+ @flipped_view.frame.origin.x.should == (@superview_size.width - @view_size.width) / 2
670
+ @flipped_view.frame.origin.y.should == @superview_size.height - @view_size.height
671
+ @flipped_view.frame.size.width.should == @view_size.width
672
+ @flipped_view.frame.size.height.should == @view_size.height
673
+ end
674
+
675
+ it 'should support setting the frame via `from_bottom(width:height:)`' do
676
+ @layout.context(@view) do
677
+ retval = @layout.frame @layout.from_bottom(width: 10, height: 20)
678
+ retval.should == @view.frame
679
+ end
680
+ @view.frame.origin.x.should == (@superview_size.width - 10) / 2
681
+ @view.frame.origin.y.should == 0
682
+ @view.frame.size.width.should == 10
683
+ @view.frame.size.height.should == 20
684
+ end
685
+
686
+ it 'should support setting the frame via `from_bottom(x:y:width:height:)`' do
687
+ @layout.context(@view) do
688
+ retval = @layout.frame @layout.from_bottom(x: 10, y: 20, width: 22, height: 12)
689
+ retval.should == @view.frame
690
+ end
691
+ @view.frame.origin.x.should == (@superview_size.width - 22) / 2 + 10
692
+ @view.frame.origin.y.should == 20
693
+ @view.frame.size.width.should == 22
694
+ @view.frame.size.height.should == 12
695
+ end
696
+
697
+ it 'should support setting the frame via `from_bottom(right:up:width:height:)`' do
698
+ @layout.context(@view) do
699
+ retval = @layout.frame @layout.from_bottom(right: 10, up: 20, width: 22, height: 12)
700
+ retval.should == @view.frame
701
+ end
702
+ @view.frame.origin.x.should == (@superview_size.width - 22) / 2 + 10
703
+ @view.frame.origin.y.should == 20
704
+ @view.frame.size.width.should == 22
705
+ @view.frame.size.height.should == 12
706
+ end
707
+
708
+ it 'should support setting the frame via `from_bottom(left:down:width:height:)`' do
709
+ @layout.context(@view) do
710
+ retval = @layout.frame @layout.from_bottom(left: 10, down: 20, width: 22, height: 12)
711
+ retval.should == @view.frame
712
+ end
713
+ @view.frame.origin.x.should == (@superview_size.width - 22) / 2 - 10
714
+ @view.frame.origin.y.should == -20
715
+ @view.frame.size.width.should == 22
716
+ @view.frame.size.height.should == 12
717
+ end
718
+
719
+ it 'should support setting the frame via `from_bottom(right:up:width:height:)` in a flipped view' do
720
+ @layout.context(@flipped_view) do
721
+ retval = @layout.frame @layout.from_bottom(right: 10, down: 20, width: 22, height: 12)
722
+ retval.should == @flipped_view.frame
723
+ end
724
+ @flipped_view.frame.origin.x.should == (@superview_size.width - 22) / 2 + 10
725
+ @flipped_view.frame.origin.y.should == @superview_size.height - 12 + 20
726
+ @flipped_view.frame.size.width.should == 22
727
+ @flipped_view.frame.size.height.should == 12
728
+ end
729
+
730
+ it 'should support setting the frame via `from_bottom(left:down:width:height:)` in a flipped view' do
731
+ @layout.context(@flipped_view) do
732
+ retval = @layout.frame @layout.from_bottom(left: 10, up: 20, width: 22, height: 12)
733
+ retval.should == @flipped_view.frame
734
+ end
735
+ @flipped_view.frame.origin.x.should == (@superview_size.width - 22) / 2 - 10
736
+ @flipped_view.frame.origin.y.should == @superview_size.height - 12 - 20
737
+ @flipped_view.frame.size.width.should == 22
738
+ @flipped_view.frame.size.height.should == 12
739
+ end
740
+
741
+ it 'should support setting the frame via `from_bottom(view)`' do
742
+ @layout.context(@view) do
743
+ retval = @layout.frame @layout.from_bottom(@another_view, x: 1, y: 1)
744
+ retval.should == @view.frame
745
+ end
746
+ @view.frame.origin.x.should == @another_view.frame.origin.x + (@another_view.frame.size.width - @view_size.width) / 2 + 1
747
+ @view.frame.origin.y.should == @another_view.frame.origin.y + 1
748
+ @view.frame.size.width.should == @view_size.width
749
+ @view.frame.size.height.should == @view_size.height
750
+ end
751
+
752
+ it 'should support setting the frame via `from_bottom_right`' do
753
+ @layout.context(@view) do
754
+ retval = @layout.frame @layout.from_bottom_right()
755
+ retval.should == @view.frame
756
+ end
757
+ @view.frame.origin.x.should == @superview_size.width - @view_size.width
758
+ @view.frame.origin.y.should == 0
759
+ @view.frame.size.width.should == @view_size.width
760
+ @view.frame.size.height.should == @view_size.height
761
+ end
762
+
763
+ it 'should support setting the frame via `from_bottom_right` in a flipped view' do
764
+ @layout.context(@flipped_view) do
765
+ retval = @layout.frame @layout.from_bottom_right()
766
+ retval.should == @flipped_view.frame
767
+ end
768
+ @flipped_view.frame.origin.x.should == @superview_size.width - @view_size.width
769
+ @flipped_view.frame.origin.y.should == @superview_size.height - @view_size.height
770
+ @flipped_view.frame.size.width.should == @view_size.width
771
+ @flipped_view.frame.size.height.should == @view_size.height
772
+ end
773
+
774
+ it 'should support setting the frame via `from_bottom_right(width:height:)`' do
775
+ @layout.context(@view) do
776
+ retval = @layout.frame @layout.from_bottom_right(width: 10, height: 20)
777
+ retval.should == @view.frame
778
+ end
779
+ @view.frame.origin.x.should == @superview_size.width - 10
780
+ @view.frame.origin.y.should == 0
781
+ @view.frame.size.width.should == 10
782
+ @view.frame.size.height.should == 20
783
+ end
784
+
785
+ it 'should support setting the frame via `from_bottom_right(x:y:width:height:)`' do
786
+ @layout.context(@view) do
787
+ retval = @layout.frame @layout.from_bottom_right(x: 10, y: 20, width: 22, height: 12)
788
+ retval.should == @view.frame
789
+ end
790
+ @view.frame.origin.x.should == @superview_size.width - 22 + 10
791
+ @view.frame.origin.y.should == 20
792
+ @view.frame.size.width.should == 22
793
+ @view.frame.size.height.should == 12
794
+ end
795
+
796
+ it 'should support setting the frame via `from_bottom_right(right:up:width:height:)`' do
797
+ @layout.context(@view) do
798
+ retval = @layout.frame @layout.from_bottom_right(right: 10, up: 20, width: 22, height: 12)
799
+ retval.should == @view.frame
800
+ end
801
+ @view.frame.origin.x.should == @superview_size.width - 22 + 10
802
+ @view.frame.origin.y.should == 20
803
+ @view.frame.size.width.should == 22
804
+ @view.frame.size.height.should == 12
805
+ end
806
+
807
+ it 'should support setting the frame via `from_bottom_right(left:down:width:height:)`' do
808
+ @layout.context(@view) do
809
+ retval = @layout.frame @layout.from_bottom_right(left: 10, down: 20, width: 22, height: 12)
810
+ retval.should == @view.frame
811
+ end
812
+ @view.frame.origin.x.should == @superview_size.width - 22 - 10
813
+ @view.frame.origin.y.should == -20
814
+ @view.frame.size.width.should == 22
815
+ @view.frame.size.height.should == 12
816
+ end
817
+
818
+ it 'should support setting the frame via `from_bottom_right(right:up:width:height:)` in a flipped view' do
819
+ @layout.context(@flipped_view) do
820
+ retval = @layout.frame @layout.from_bottom_right(right: 10, up: 20, width: 22, height: 12)
821
+ retval.should == @flipped_view.frame
822
+ end
823
+ @flipped_view.frame.origin.x.should == @superview_size.width - 22 + 10
824
+ @flipped_view.frame.origin.y.should == @superview_size.height - 12 - 20
825
+ @flipped_view.frame.size.width.should == 22
826
+ @flipped_view.frame.size.height.should == 12
827
+ end
828
+
829
+ it 'should support setting the frame via `from_bottom_right(left:down:width:height:)` in a flipped view' do
830
+ @layout.context(@flipped_view) do
831
+ retval = @layout.frame @layout.from_bottom_right(left: 10, down: 20, width: 22, height: 12)
832
+ retval.should == @flipped_view.frame
833
+ end
834
+ @flipped_view.frame.origin.x.should == @superview_size.width - 22 - 10
835
+ @flipped_view.frame.origin.y.should == @superview_size.height - 12 + 20
836
+ @flipped_view.frame.size.width.should == 22
837
+ @flipped_view.frame.size.height.should == 12
838
+ end
839
+
840
+ it 'should support setting the frame via `from_bottom_right(view)`' do
841
+ @layout.context(@view) do
842
+ retval = @layout.frame @layout.from_bottom_right(@another_view, x: 1, y: 1)
843
+ retval.should == @view.frame
844
+ end
845
+ @view.frame.origin.x.should == @another_view.frame.origin.x + @another_view.frame.size.width - @view_size.width + 1
846
+ @view.frame.origin.y.should == @another_view.frame.origin.y + 1
847
+ @view.frame.size.width.should == @view_size.width
848
+ @view.frame.size.height.should == @view_size.height
849
+ end
850
+
851
+ it 'should support setting the frame via `from_left`' do
852
+ @layout.context(@view) do
853
+ retval = @layout.frame @layout.from_left()
854
+ retval.should == @view.frame
855
+ end
856
+ @view.frame.origin.x.should == 0
857
+ @view.frame.origin.y.should == (@superview_size.height - @view_size.height) / 2
858
+ @view.frame.size.width.should == @view_size.width
859
+ @view.frame.size.height.should == @view_size.height
860
+ end
861
+
862
+ it 'should support setting the frame via `from_left` in a flipped view' do
863
+ @layout.context(@flipped_view) do
864
+ retval = @layout.frame @layout.from_left()
865
+ retval.should == @flipped_view.frame
866
+ end
867
+ @flipped_view.frame.origin.x.should == 0
868
+ @flipped_view.frame.origin.y.should == (@superview_size.height - @view_size.height) / 2
869
+ @flipped_view.frame.size.width.should == @view_size.width
870
+ @flipped_view.frame.size.height.should == @view_size.height
871
+ end
872
+
873
+ it 'should support setting the frame via `from_left(width:height:)`' do
874
+ @layout.context(@view) do
875
+ retval = @layout.frame @layout.from_left(width: 10, height: 20)
876
+ retval.should == @view.frame
877
+ end
878
+ @view.frame.origin.x.should == 0
879
+ @view.frame.origin.y.should == (@superview_size.height - 20) / 2
880
+ @view.frame.size.width.should == 10
881
+ @view.frame.size.height.should == 20
882
+ end
883
+
884
+ it 'should support setting the frame via `from_left(x:y:width:height:)`' do
885
+ @layout.context(@view) do
886
+ retval = @layout.frame @layout.from_left(x: 10, y: 20, width: 22, height: 12)
887
+ retval.should == @view.frame
888
+ end
889
+ @view.frame.origin.x.should == 10
890
+ @view.frame.origin.y.should == (@superview_size.height - 12) / 2 + 20
891
+ @view.frame.size.width.should == 22
892
+ @view.frame.size.height.should == 12
893
+ end
894
+
895
+ it 'should support setting the frame via `from_left(right:up:width:height:)`' do
896
+ @layout.context(@view) do
897
+ retval = @layout.frame @layout.from_left(right: 10, up: 20, width: 22, height: 12)
898
+ retval.should == @view.frame
899
+ end
900
+ @view.frame.origin.x.should == 10
901
+ @view.frame.origin.y.should == (@superview_size.height - 12) / 2 + 20
902
+ @view.frame.size.width.should == 22
903
+ @view.frame.size.height.should == 12
904
+ end
905
+
906
+ it 'should support setting the frame via `from_left(left:down:width:height:)`' do
907
+ @layout.context(@view) do
908
+ retval = @layout.frame @layout.from_left(left: 10, down: 20, width: 22, height: 12)
909
+ retval.should == @view.frame
910
+ end
911
+ @view.frame.origin.x.should == -10
912
+ @view.frame.origin.y.should == (@superview_size.height - 12) / 2 - 20
913
+ @view.frame.size.width.should == 22
914
+ @view.frame.size.height.should == 12
915
+ end
916
+
917
+ it 'should support setting the frame via `from_left(right:up:width:height:)` in a flipped view' do
918
+ @layout.context(@flipped_view) do
919
+ retval = @layout.frame @layout.from_left(right: 10, up: 20, width: 22, height: 12)
920
+ retval.should == @flipped_view.frame
921
+ end
922
+ @flipped_view.frame.origin.x.should == 10
923
+ @flipped_view.frame.origin.y.should == (@superview_size.height - 12) / 2 - 20
924
+ @flipped_view.frame.size.width.should == 22
925
+ @flipped_view.frame.size.height.should == 12
926
+ end
927
+
928
+ it 'should support setting the frame via `from_left(left:down:width:height:)` in a flipped view' do
929
+ @layout.context(@flipped_view) do
930
+ retval = @layout.frame @layout.from_left(left: 10, down: 20, width: 22, height: 12)
931
+ retval.should == @flipped_view.frame
932
+ end
933
+ @flipped_view.frame.origin.x.should == -10
934
+ @flipped_view.frame.origin.y.should == (@superview_size.height - 12) / 2 + 20
935
+ @flipped_view.frame.size.width.should == 22
936
+ @flipped_view.frame.size.height.should == 12
937
+ end
938
+
939
+ it 'should support setting the frame via `from_left(view)`' do
940
+ @layout.context(@view) do
941
+ retval = @layout.frame @layout.from_left(@another_view, x: 1, y: 1)
942
+ retval.should == @view.frame
943
+ end
944
+ @view.frame.origin.x.should == @another_view.frame.origin.x + 1
945
+ @view.frame.origin.y.should == @another_view.frame.origin.y + (@another_view.frame.size.height - @view_size.height) / 2 + 1
946
+ @view.frame.size.width.should == @view_size.width
947
+ @view.frame.size.height.should == @view_size.height
948
+ end
949
+
950
+ it 'should support setting the frame via `from_center`' do
951
+ @layout.context(@view) do
952
+ retval = @layout.frame @layout.from_center()
953
+ retval.should == @view.frame
954
+ end
955
+ @view.frame.origin.x.should == (@superview_size.width - @view_size.width) / 2
956
+ @view.frame.origin.y.should == (@superview_size.height - @view_size.height) / 2
957
+ @view.frame.size.width.should == @view_size.width
958
+ @view.frame.size.height.should == @view_size.height
959
+ end
960
+
961
+ it 'should support setting the frame via `from_center` in a flipped view' do
962
+ @layout.context(@flipped_view) do
963
+ retval = @layout.frame @layout.from_center()
964
+ retval.should == @flipped_view.frame
965
+ end
966
+ @flipped_view.frame.origin.x.should == (@superview_size.width - @view_size.width) / 2
967
+ @flipped_view.frame.origin.y.should == (@superview_size.height - @view_size.height) / 2
968
+ @flipped_view.frame.size.width.should == @view_size.width
969
+ @flipped_view.frame.size.height.should == @view_size.height
970
+ end
971
+
972
+ it 'should support setting the frame via `from_center(width:height:)`' do
973
+ @layout.context(@view) do
974
+ retval = @layout.frame @layout.from_center(width: 10, height: 20)
975
+ retval.should == @view.frame
976
+ end
977
+ @view.frame.origin.x.should == (@superview_size.width - 10) / 2
978
+ @view.frame.origin.y.should == (@superview_size.height - 20) / 2
979
+ @view.frame.size.width.should == 10
980
+ @view.frame.size.height.should == 20
981
+ end
982
+
983
+ it 'should support setting the frame via `from_center(x:y:width:height:)`' do
984
+ @layout.context(@view) do
985
+ retval = @layout.frame @layout.from_center(x: 10, y: 20, width: 22, height: 12)
986
+ retval.should == @view.frame
987
+ end
988
+ @view.frame.origin.x.should == (@superview_size.width - 22) / 2 + 10
989
+ @view.frame.origin.y.should == (@superview_size.height - 12) / 2 + 20
990
+ @view.frame.size.width.should == 22
991
+ @view.frame.size.height.should == 12
992
+ end
993
+
994
+ it 'should support setting the frame via `from_center(right:up:width:height:)`' do
995
+ @layout.context(@view) do
996
+ retval = @layout.frame @layout.from_center(right: 10, up: 20, width: 22, height: 12)
997
+ retval.should == @view.frame
998
+ end
999
+ @view.frame.origin.x.should == (@superview_size.width - 22) / 2 + 10
1000
+ @view.frame.origin.y.should == (@superview_size.height - 12) / 2 + 20
1001
+ @view.frame.size.width.should == 22
1002
+ @view.frame.size.height.should == 12
1003
+ end
1004
+
1005
+ it 'should support setting the frame via `from_center(left:down:width:height:)`' do
1006
+ @layout.context(@view) do
1007
+ retval = @layout.frame @layout.from_center(left: 10, down: 20, width: 22, height: 12)
1008
+ retval.should == @view.frame
1009
+ end
1010
+ @view.frame.origin.x.should == (@superview_size.width - 22) / 2 - 10
1011
+ @view.frame.origin.y.should == (@superview_size.height - 12) / 2 - 20
1012
+ @view.frame.size.width.should == 22
1013
+ @view.frame.size.height.should == 12
1014
+ end
1015
+
1016
+ it 'should support setting the frame via `from_center(right:up:width:height:)` in a flipped view' do
1017
+ @layout.context(@flipped_view) do
1018
+ retval = @layout.frame @layout.from_center(right: 10, up: 20, width: 22, height: 12)
1019
+ retval.should == @flipped_view.frame
1020
+ end
1021
+ @flipped_view.frame.origin.x.should == (@superview_size.width - 22) / 2 + 10
1022
+ @flipped_view.frame.origin.y.should == (@superview_size.height - 12) / 2 - 20
1023
+ @flipped_view.frame.size.width.should == 22
1024
+ @flipped_view.frame.size.height.should == 12
1025
+ end
1026
+
1027
+ it 'should support setting the frame via `from_center(left:down:width:height:)` in a flipped view' do
1028
+ @layout.context(@flipped_view) do
1029
+ retval = @layout.frame @layout.from_center(left: 10, down: 20, width: 22, height: 12)
1030
+ retval.should == @flipped_view.frame
1031
+ end
1032
+ @flipped_view.frame.origin.x.should == (@superview_size.width - 22) / 2 - 10
1033
+ @flipped_view.frame.origin.y.should == (@superview_size.height - 12) / 2 + 20
1034
+ @flipped_view.frame.size.width.should == 22
1035
+ @flipped_view.frame.size.height.should == 12
1036
+ end
1037
+
1038
+ it 'should support setting the frame via `from_center(view)`' do
1039
+ @layout.context(@view) do
1040
+ retval = @layout.frame @layout.from_center(@another_view, x: 1, y: 1)
1041
+ retval.should == @view.frame
1042
+ end
1043
+ @view.frame.origin.x.should == @another_view.frame.origin.x + (@another_view.frame.size.width - @view_size.width) / 2 + 1
1044
+ @view.frame.origin.y.should == @another_view.frame.origin.y + (@another_view.frame.size.height - @view_size.height) / 2 + 1
1045
+ @view.frame.size.width.should == @view_size.width
1046
+ @view.frame.size.height.should == @view_size.height
1047
+ end
1048
+
1049
+ it 'should support setting the frame via `from_right`' do
1050
+ @layout.context(@view) do
1051
+ retval = @layout.frame @layout.from_right()
1052
+ retval.should == @view.frame
1053
+ end
1054
+ @view.frame.origin.x.should == @superview_size.width - @view_size.width
1055
+ @view.frame.origin.y.should == (@superview_size.height - @view_size.height) / 2
1056
+ @view.frame.size.width.should == @view_size.width
1057
+ @view.frame.size.height.should == @view_size.height
1058
+ end
1059
+
1060
+ it 'should support setting the frame via `from_right` in a flipped view' do
1061
+ @layout.context(@flipped_view) do
1062
+ retval = @layout.frame @layout.from_right()
1063
+ retval.should == @flipped_view.frame
1064
+ end
1065
+ @flipped_view.frame.origin.x.should == @superview_size.width - @view_size.width
1066
+ @flipped_view.frame.origin.y.should == (@superview_size.height - @view_size.height) / 2
1067
+ @flipped_view.frame.size.width.should == @view_size.width
1068
+ @flipped_view.frame.size.height.should == @view_size.height
1069
+ end
1070
+
1071
+ it 'should support setting the frame via `from_right(width:height:)`' do
1072
+ @layout.context(@view) do
1073
+ retval = @layout.frame @layout.from_right(width: 10, height: 20)
1074
+ retval.should == @view.frame
1075
+ end
1076
+ @view.frame.origin.x.should == @superview_size.width - 10
1077
+ @view.frame.origin.y.should == (@superview_size.height - 20) / 2
1078
+ @view.frame.size.width.should == 10
1079
+ @view.frame.size.height.should == 20
1080
+ end
1081
+
1082
+ it 'should support setting the frame via `from_right(x:y:width:height:)`' do
1083
+ @layout.context(@view) do
1084
+ retval = @layout.frame @layout.from_right(x: 10, y: 20, width: 22, height: 12)
1085
+ retval.should == @view.frame
1086
+ end
1087
+ @view.frame.origin.x.should == @superview_size.width - 22 + 10
1088
+ @view.frame.origin.y.should == (@superview_size.height - 12) / 2 + 20
1089
+ @view.frame.size.width.should == 22
1090
+ @view.frame.size.height.should == 12
1091
+ end
1092
+
1093
+ it 'should support setting the frame via `from_right(right:up:width:height:)`' do
1094
+ @layout.context(@view) do
1095
+ retval = @layout.frame @layout.from_right(right: 10, up: 20, width: 22, height: 12)
1096
+ retval.should == @view.frame
1097
+ end
1098
+ @view.frame.origin.x.should == @superview_size.width - 22 + 10
1099
+ @view.frame.origin.y.should == (@superview_size.height - 12) / 2 + 20
1100
+ @view.frame.size.width.should == 22
1101
+ @view.frame.size.height.should == 12
1102
+ end
1103
+
1104
+ it 'should support setting the frame via `from_right(left:down:width:height:)`' do
1105
+ @layout.context(@view) do
1106
+ retval = @layout.frame @layout.from_right(left: 10, down: 20, width: 22, height: 12)
1107
+ retval.should == @view.frame
1108
+ end
1109
+ @view.frame.origin.x.should == @superview_size.width - 22 - 10
1110
+ @view.frame.origin.y.should == (@superview_size.height - 12) / 2 - 20
1111
+ @view.frame.size.width.should == 22
1112
+ @view.frame.size.height.should == 12
1113
+ end
1114
+
1115
+ it 'should support setting the frame via `from_right(right:up:width:height:)` in a flipped view' do
1116
+ @layout.context(@flipped_view) do
1117
+ retval = @layout.frame @layout.from_right(right: 10, up: 20, width: 22, height: 12)
1118
+ retval.should == @flipped_view.frame
1119
+ end
1120
+ @flipped_view.frame.origin.x.should == @superview_size.width - 22 + 10
1121
+ @flipped_view.frame.origin.y.should == (@superview_size.height - 12) / 2 - 20
1122
+ @flipped_view.frame.size.width.should == 22
1123
+ @flipped_view.frame.size.height.should == 12
1124
+ end
1125
+
1126
+ it 'should support setting the frame via `from_right(left:down:width:height:)` in a flipped view' do
1127
+ @layout.context(@flipped_view) do
1128
+ retval = @layout.frame @layout.from_right(left: 10, down: 20, width: 22, height: 12)
1129
+ retval.should == @flipped_view.frame
1130
+ end
1131
+ @flipped_view.frame.origin.x.should == @superview_size.width - 22 - 10
1132
+ @flipped_view.frame.origin.y.should == (@superview_size.height - 12) / 2 + 20
1133
+ @flipped_view.frame.size.width.should == 22
1134
+ @flipped_view.frame.size.height.should == 12
1135
+ end
1136
+
1137
+ it 'should support setting the frame via `from_right(view)`' do
1138
+ @layout.context(@view) do
1139
+ retval = @layout.frame @layout.from_right(@another_view, x: 1, y: 1)
1140
+ retval.should == @view.frame
1141
+ end
1142
+ @view.frame.origin.x.should == @another_view.frame.origin.x + @another_view.frame.size.width - @view_size.width + 1
1143
+ @view.frame.origin.y.should == @another_view.frame.origin.y + (@another_view.frame.size.height - @view_size.height) / 2 + 1
1144
+ @view.frame.size.width.should == @view_size.width
1145
+ @view.frame.size.height.should == @view_size.height
1146
+ end
1147
+
1148
+ it 'should support setting the frame via `from_top_left`' do
1149
+ @layout.context(@view) do
1150
+ retval = @layout.frame @layout.from_top_left()
1151
+ retval.should == @view.frame
1152
+ end
1153
+ @view.frame.origin.x.should == 0
1154
+ @view.frame.origin.y.should == @superview_size.height - @view_size.height
1155
+ @view.frame.size.width.should == @view_size.width
1156
+ @view.frame.size.height.should == @view_size.height
1157
+ end
1158
+
1159
+ it 'should support setting the frame via `from_top_left` in a flipped view' do
1160
+ @layout.context(@flipped_view) do
1161
+ retval = @layout.frame @layout.from_top_left()
1162
+ retval.should == @flipped_view.frame
1163
+ end
1164
+ @flipped_view.frame.origin.x.should == 0
1165
+ @flipped_view.frame.origin.y.should == 0
1166
+ @flipped_view.frame.size.width.should == @view_size.width
1167
+ @flipped_view.frame.size.height.should == @view_size.height
1168
+ end
1169
+
1170
+ it 'should support setting the frame via `from_top_left(width:height:)`' do
1171
+ @layout.context(@view) do
1172
+ retval = @layout.frame @layout.from_top_left(width: 10, height: 20)
1173
+ retval.should == @view.frame
1174
+ end
1175
+ @view.frame.origin.x.should == 0
1176
+ @view.frame.origin.y.should == @superview_size.height - 20
1177
+ @view.frame.size.width.should == 10
1178
+ @view.frame.size.height.should == 20
1179
+ end
1180
+
1181
+ it 'should support setting the frame via `from_top_left(x:y:width:height:)`' do
1182
+ @layout.context(@view) do
1183
+ retval = @layout.frame @layout.from_top_left(x: 10, y: 20, width: 22, height: 12)
1184
+ retval.should == @view.frame
1185
+ end
1186
+ @view.frame.origin.x.should == 10
1187
+ @view.frame.origin.y.should == @superview_size.height - 12 + 20
1188
+ @view.frame.size.width.should == 22
1189
+ @view.frame.size.height.should == 12
1190
+ end
1191
+
1192
+ it 'should support setting the frame via `from_top_left(right:up:width:height:)`' do
1193
+ @layout.context(@view) do
1194
+ retval = @layout.frame @layout.from_top_left(right: 10, up: 20, width: 22, height: 12)
1195
+ retval.should == @view.frame
1196
+ end
1197
+ @view.frame.origin.x.should == 10
1198
+ @view.frame.origin.y.should == @superview_size.height - 12 + 20
1199
+ @view.frame.size.width.should == 22
1200
+ @view.frame.size.height.should == 12
1201
+ end
1202
+
1203
+ it 'should support setting the frame via `from_top_left(left:down:width:height:)`' do
1204
+ @layout.context(@view) do
1205
+ retval = @layout.frame @layout.from_top_left(left: 10, down: 20, width: 22, height: 12)
1206
+ retval.should == @view.frame
1207
+ end
1208
+ @view.frame.origin.x.should == -10
1209
+ @view.frame.origin.y.should == @superview_size.height - 12 - 20
1210
+ @view.frame.size.width.should == 22
1211
+ @view.frame.size.height.should == 12
1212
+ end
1213
+
1214
+ it 'should support setting the frame via `from_top_left(right:up:width:height:)` in a flipped view' do
1215
+ @layout.context(@flipped_view) do
1216
+ retval = @layout.frame @layout.from_top_left(right: 10, up: 20, width: 22, height: 12)
1217
+ retval.should == @flipped_view.frame
1218
+ end
1219
+ @flipped_view.frame.origin.x.should == 10
1220
+ @flipped_view.frame.origin.y.should == -20
1221
+ @flipped_view.frame.size.width.should == 22
1222
+ @flipped_view.frame.size.height.should == 12
1223
+ end
1224
+
1225
+ it 'should support setting the frame via `from_top_left(left:down:width:height:)` in a flipped view' do
1226
+ @layout.context(@flipped_view) do
1227
+ retval = @layout.frame @layout.from_top_left(left: 10, down: 20, width: 22, height: 12)
1228
+ retval.should == @flipped_view.frame
1229
+ end
1230
+ @flipped_view.frame.origin.x.should == -10
1231
+ @flipped_view.frame.origin.y.should == 20
1232
+ @flipped_view.frame.size.width.should == 22
1233
+ @flipped_view.frame.size.height.should == 12
1234
+ end
1235
+
1236
+ it 'should support setting the frame via `from_top_left(view)`' do
1237
+ @layout.context(@view) do
1238
+ retval = @layout.frame @layout.from_top_left(@another_view, x: 1, y: 1)
1239
+ retval.should == @view.frame
1240
+ end
1241
+ @view.frame.origin.x.should == @another_view.frame.origin.x + 1
1242
+ @view.frame.origin.y.should == @another_view.frame.origin.y + @another_view.frame.size.height - @view_size.height + 1
1243
+ @view.frame.size.width.should == @view_size.width
1244
+ @view.frame.size.height.should == @view_size.height
1245
+ end
1246
+
1247
+ it 'should support setting the frame via `from_top`' do
1248
+ @layout.context(@view) do
1249
+ retval = @layout.frame @layout.from_top()
1250
+ retval.should == @view.frame
1251
+ end
1252
+ @view.frame.origin.x.should == (@superview_size.width - @view_size.width) / 2
1253
+ @view.frame.origin.y.should == @superview_size.height - @view_size.height
1254
+ @view.frame.size.width.should == @view_size.width
1255
+ @view.frame.size.height.should == @view_size.height
1256
+ end
1257
+
1258
+ it 'should support setting the frame via `from_top` in a flipped view' do
1259
+ @layout.context(@flipped_view) do
1260
+ retval = @layout.frame @layout.from_top()
1261
+ retval.should == @flipped_view.frame
1262
+ end
1263
+ @flipped_view.frame.origin.x.should == (@superview_size.width - @view_size.width) / 2
1264
+ @flipped_view.frame.origin.y.should == 0
1265
+ @flipped_view.frame.size.width.should == @view_size.width
1266
+ @flipped_view.frame.size.height.should == @view_size.height
1267
+ end
1268
+
1269
+ it 'should support setting the frame via `from_top(width:height:)`' do
1270
+ @layout.context(@view) do
1271
+ retval = @layout.frame @layout.from_top(width: 10, height: 20)
1272
+ retval.should == @view.frame
1273
+ end
1274
+ @view.frame.origin.x.should == (@superview_size.width - 10) / 2
1275
+ @view.frame.origin.y.should == @superview_size.height - 20
1276
+ @view.frame.size.width.should == 10
1277
+ @view.frame.size.height.should == 20
1278
+ end
1279
+
1280
+ it 'should support setting the frame via `from_top(x:y:width:height:)`' do
1281
+ @layout.context(@view) do
1282
+ retval = @layout.frame @layout.from_top(x: 10, y: 20, width: 22, height: 12)
1283
+ retval.should == @view.frame
1284
+ end
1285
+ @view.frame.origin.x.should == (@superview_size.width - 22) / 2 + 10
1286
+ @view.frame.origin.y.should == @superview_size.height - 12 + 20
1287
+ @view.frame.size.width.should == 22
1288
+ @view.frame.size.height.should == 12
1289
+ end
1290
+
1291
+ it 'should support setting the frame via `from_top(right:up:width:height:)`' do
1292
+ @layout.context(@view) do
1293
+ retval = @layout.frame @layout.from_top(right: 10, up: 20, width: 22, height: 12)
1294
+ retval.should == @view.frame
1295
+ end
1296
+ @view.frame.origin.x.should == (@superview_size.width - 22) / 2 + 10
1297
+ @view.frame.origin.y.should == @superview_size.height - 12 + 20
1298
+ @view.frame.size.width.should == 22
1299
+ @view.frame.size.height.should == 12
1300
+ end
1301
+
1302
+ it 'should support setting the frame via `from_top(left:down:width:height:)`' do
1303
+ @layout.context(@view) do
1304
+ retval = @layout.frame @layout.from_top(left: 10, down: 20, width: 22, height: 12)
1305
+ retval.should == @view.frame
1306
+ end
1307
+ @view.frame.origin.x.should == (@superview_size.width - 22) / 2 - 10
1308
+ @view.frame.origin.y.should == @superview_size.height - 12 - 20
1309
+ @view.frame.size.width.should == 22
1310
+ @view.frame.size.height.should == 12
1311
+ end
1312
+
1313
+ it 'should support setting the frame via `from_top(right:up:width:height:)` in a flipped view' do
1314
+ @layout.context(@flipped_view) do
1315
+ retval = @layout.frame @layout.from_top(right: 10, up: 20, width: 22, height: 12)
1316
+ retval.should == @flipped_view.frame
1317
+ end
1318
+ @flipped_view.frame.origin.x.should == (@superview_size.width - 22) / 2 + 10
1319
+ @flipped_view.frame.origin.y.should == -20
1320
+ @flipped_view.frame.size.width.should == 22
1321
+ @flipped_view.frame.size.height.should == 12
1322
+ end
1323
+
1324
+ it 'should support setting the frame via `from_top(left:down:width:height:)` in a flipped view' do
1325
+ @layout.context(@flipped_view) do
1326
+ retval = @layout.frame @layout.from_top(left: 10, down: 20, width: 22, height: 12)
1327
+ retval.should == @flipped_view.frame
1328
+ end
1329
+ @flipped_view.frame.origin.x.should == (@superview_size.width - 22) / 2 - 10
1330
+ @flipped_view.frame.origin.y.should == 20
1331
+ @flipped_view.frame.size.width.should == 22
1332
+ @flipped_view.frame.size.height.should == 12
1333
+ end
1334
+
1335
+ it 'should support setting the frame via `from_top(view)`' do
1336
+ @layout.context(@view) do
1337
+ retval = @layout.frame @layout.from_top(@another_view, x: 1, y: 1)
1338
+ retval.should == @view.frame
1339
+ end
1340
+ @view.frame.origin.x.should == @another_view.frame.origin.x + (@another_view.frame.size.width - @view_size.width) / 2 + 1
1341
+ @view.frame.origin.y.should == @another_view.frame.origin.y + @another_view.frame.size.height - @view_size.height + 1
1342
+ @view.frame.size.width.should == @view_size.width
1343
+ @view.frame.size.height.should == @view_size.height
1344
+ end
1345
+
1346
+ it 'should support setting the frame via `from_top_right`' do
1347
+ @layout.context(@view) do
1348
+ retval = @layout.frame @layout.from_top_right()
1349
+ retval.should == @view.frame
1350
+ end
1351
+ @view.frame.origin.x.should == @superview_size.width - @view_size.width
1352
+ @view.frame.origin.y.should == @superview_size.height - @view_size.height
1353
+ @view.frame.size.width.should == @view_size.width
1354
+ @view.frame.size.height.should == @view_size.height
1355
+ end
1356
+
1357
+ it 'should support setting the frame via `from_top_right` in a flipped view' do
1358
+ @layout.context(@flipped_view) do
1359
+ retval = @layout.frame @layout.from_top_right()
1360
+ retval.should == @flipped_view.frame
1361
+ end
1362
+ @flipped_view.frame.origin.x.should == @superview_size.width - @view_size.width
1363
+ @flipped_view.frame.origin.y.should == 0
1364
+ @flipped_view.frame.size.width.should == @view_size.width
1365
+ @flipped_view.frame.size.height.should == @view_size.height
1366
+ end
1367
+
1368
+ it 'should support setting the frame via `from_top_right(width:height:)`' do
1369
+ @layout.context(@view) do
1370
+ retval = @layout.frame @layout.from_top_right(width: 10, height: 20)
1371
+ retval.should == @view.frame
1372
+ end
1373
+ @view.frame.origin.x.should == @superview_size.width - 10
1374
+ @view.frame.origin.y.should == @superview_size.height - 20
1375
+ @view.frame.size.width.should == 10
1376
+ @view.frame.size.height.should == 20
1377
+ end
1378
+
1379
+ it 'should support setting the frame via `from_top_right(x:y:width:height:)`' do
1380
+ @layout.context(@view) do
1381
+ retval = @layout.frame @layout.from_top_right(x: 10, y: 20, width: 22, height: 12)
1382
+ retval.should == @view.frame
1383
+ end
1384
+ @view.frame.origin.x.should == @superview_size.width - 22 + 10
1385
+ @view.frame.origin.y.should == @superview_size.height - 12 + 20
1386
+ @view.frame.size.width.should == 22
1387
+ @view.frame.size.height.should == 12
1388
+ end
1389
+
1390
+ it 'should support setting the frame via `from_top_right(right:up:width:height:)`' do
1391
+ @layout.context(@view) do
1392
+ retval = @layout.frame @layout.from_top_right(right: 10, up: 20, width: 22, height: 12)
1393
+ retval.should == @view.frame
1394
+ end
1395
+ @view.frame.origin.x.should == @superview_size.width - 22 + 10
1396
+ @view.frame.origin.y.should == @superview_size.height - 12 + 20
1397
+ @view.frame.size.width.should == 22
1398
+ @view.frame.size.height.should == 12
1399
+ end
1400
+
1401
+ it 'should support setting the frame via `from_top_right(left:down:width:height:)`' do
1402
+ @layout.context(@view) do
1403
+ retval = @layout.frame @layout.from_top_right(left: 10, down: 20, width: 22, height: 12)
1404
+ retval.should == @view.frame
1405
+ end
1406
+ @view.frame.origin.x.should == @superview_size.width - 22 - 10
1407
+ @view.frame.origin.y.should == @superview_size.height - 12 - 20
1408
+ @view.frame.size.width.should == 22
1409
+ @view.frame.size.height.should == 12
1410
+ end
1411
+
1412
+ it 'should support setting the frame via `from_top_right(right:up:width:height:)` in a flipped view' do
1413
+ @layout.context(@flipped_view) do
1414
+ retval = @layout.frame @layout.from_top_right(right: 10, up: 20, width: 22, height: 12)
1415
+ retval.should == @flipped_view.frame
1416
+ end
1417
+ @flipped_view.frame.origin.x.should == @superview_size.width - 22 + 10
1418
+ @flipped_view.frame.origin.y.should == -20
1419
+ @flipped_view.frame.size.width.should == 22
1420
+ @flipped_view.frame.size.height.should == 12
1421
+ end
1422
+
1423
+ it 'should support setting the frame via `from_top_right(left:down:width:height:)` in a flipped view' do
1424
+ @layout.context(@flipped_view) do
1425
+ retval = @layout.frame @layout.from_top_right(left: 10, down: 20, width: 22, height: 12)
1426
+ retval.should == @flipped_view.frame
1427
+ end
1428
+ @flipped_view.frame.origin.x.should == @superview_size.width - 22 - 10
1429
+ @flipped_view.frame.origin.y.should == 20
1430
+ @flipped_view.frame.size.width.should == 22
1431
+ @flipped_view.frame.size.height.should == 12
1432
+ end
1433
+
1434
+ it 'should support setting the frame via `from_top_right(view)`' do
1435
+ @layout.context(@view) do
1436
+ retval = @layout.frame @layout.from_top_right(@another_view, x: 1, y: 1)
1437
+ retval.should == @view.frame
1438
+ end
1439
+ @view.frame.origin.x.should == @another_view.frame.origin.x + @another_view.frame.size.width - @view_size.width + 1
1440
+ @view.frame.origin.y.should == @another_view.frame.origin.y + @another_view.frame.size.height - @view_size.height + 1
1441
+ @view.frame.size.width.should == @view_size.width
1442
+ @view.frame.size.height.should == @view_size.height
1443
+ end
1444
+
1445
+ it 'should support setting the frame via `above(view)`' do
1446
+ @layout.context(@view) do
1447
+ retval = @layout.frame @layout.above(@another_view)
1448
+ retval.should == @view.frame
1449
+ end
1450
+ @view.frame.origin.x.should == 10
1451
+ @view.frame.origin.y.should == 148
1452
+ @view.frame.size.width.should == @view_size.width
1453
+ @view.frame.size.height.should == @view_size.height
1454
+ end
1455
+
1456
+ it 'should support setting the frame via `above(view)` in a flipped view' do
1457
+ @layout.context(@flipped_view) do
1458
+ retval = @layout.frame @layout.above(@another_view)
1459
+ retval.should == @flipped_view.frame
1460
+ end
1461
+ @flipped_view.frame.origin.x.should == 10
1462
+ @flipped_view.frame.origin.y.should == -78
1463
+ @flipped_view.frame.size.width.should == @view_size.width
1464
+ @flipped_view.frame.size.height.should == @view_size.height
1465
+ end
1466
+
1467
+ it 'should support setting the frame via `above(view)` and ignore view origin' do
1468
+ f = @view.frame
1469
+ f.origin.x = 10
1470
+ f.origin.y = 10
1471
+ @view.frame = f
1472
+
1473
+ @layout.context(@view) do
1474
+ retval = @layout.frame @layout.above(@another_view)
1475
+ retval.should == @view.frame
1476
+ end
1477
+ @view.frame.origin.x.should == 10
1478
+ @view.frame.origin.y.should == 148
1479
+ @view.frame.size.width.should == @view_size.width
1480
+ @view.frame.size.height.should == @view_size.height
1481
+ end
1482
+
1483
+ it 'should support setting the frame via `above(view, down:)`' do
1484
+ @layout.context(@view) do
1485
+ retval = @layout.frame @layout.above(@another_view, down: 8)
1486
+ retval.should == @view.frame
1487
+ end
1488
+ @view.frame.origin.x.should == 10
1489
+ @view.frame.origin.y.should == 140
1490
+ @view.frame.size.width.should == @view_size.width
1491
+ @view.frame.size.height.should == @view_size.height
1492
+ end
1493
+
1494
+ it 'should support setting the frame via `above(view, width:height:)`' do
1495
+ @layout.context(@view) do
1496
+ retval = @layout.frame @layout.above(@another_view, width: 10, height: 20)
1497
+ retval.should == @view.frame
1498
+ end
1499
+ @view.frame.origin.x.should == 10
1500
+ @view.frame.origin.y.should == 148
1501
+ @view.frame.size.width.should == 10
1502
+ @view.frame.size.height.should == 20
1503
+ end
1504
+
1505
+ it 'should support setting the frame via `above(view, x:y:width:height:)`' do
1506
+ @layout.context(@view) do
1507
+ retval = @layout.frame @layout.above(@another_view, x: 10, y: 20, width: 22, height: 12)
1508
+ retval.should == @view.frame
1509
+ end
1510
+ @view.frame.origin.x.should == 20
1511
+ @view.frame.origin.y.should == 168
1512
+ @view.frame.size.width.should == 22
1513
+ @view.frame.size.height.should == 12
1514
+ end
1515
+
1516
+ it 'should support setting the frame via `above(view, right:up:width:height:)`' do
1517
+ @layout.context(@view) do
1518
+ retval = @layout.frame @layout.above(@another_view, right: 10, up: 20, width: 22, height: 12)
1519
+ retval.should == @view.frame
1520
+ end
1521
+ @view.frame.origin.x.should == 20
1522
+ @view.frame.origin.y.should == 168
1523
+ @view.frame.size.width.should == 22
1524
+ @view.frame.size.height.should == 12
1525
+ end
1526
+
1527
+ it 'should support setting the frame via `above(view, left:down:width:height:)`' do
1528
+ @layout.context(@view) do
1529
+ retval = @layout.frame @layout.above(@another_view, left: 10, down: 20, width: 22, height: 12)
1530
+ retval.should == @view.frame
1531
+ end
1532
+ @view.frame.origin.x.should == 0
1533
+ @view.frame.origin.y.should == 128
1534
+ @view.frame.size.width.should == 22
1535
+ @view.frame.size.height.should == 12
1536
+ end
1537
+
1538
+ it 'should support setting the frame via `above(view, right:up:width:height:)`' do
1539
+ @layout.context(@flipped_view) do
1540
+ retval = @layout.frame @layout.above(@another_view, right: 10, up: 20, width: 22, height: 12)
1541
+ retval.should == @flipped_view.frame
1542
+ end
1543
+ @flipped_view.frame.origin.x.should == 20
1544
+ @flipped_view.frame.origin.y.should == -100
1545
+ @flipped_view.frame.size.width.should == 22
1546
+ @flipped_view.frame.size.height.should == 12
1547
+ end
1548
+
1549
+ it 'should support setting the frame via `above(view, left:down:width:height:)`' do
1550
+ @layout.context(@flipped_view) do
1551
+ retval = @layout.frame @layout.above(@another_view, left: 10, down: 20, width: 22, height: 12)
1552
+ retval.should == @flipped_view.frame
1553
+ end
1554
+ @flipped_view.frame.origin.x.should == 0
1555
+ @flipped_view.frame.origin.y.should == -60
1556
+ @flipped_view.frame.size.width.should == 22
1557
+ @flipped_view.frame.size.height.should == 12
1558
+ end
1559
+
1560
+ it 'should support setting the frame via `below(view)`' do
1561
+ @layout.context(@view) do
1562
+ retval = @layout.frame @layout.below(@another_view)
1563
+ retval.should == @view.frame
1564
+ end
1565
+ @view.frame.origin.x.should == 10
1566
+ @view.frame.origin.y.should == 90
1567
+ @view.frame.size.width.should == @view_size.width
1568
+ @view.frame.size.height.should == @view_size.height
1569
+ end
1570
+
1571
+ it 'should support setting the frame via `below(view)` in a flipped view' do
1572
+ @layout.context(@flipped_view) do
1573
+ retval = @layout.frame @layout.below(@another_view)
1574
+ retval.should == @flipped_view.frame
1575
+ end
1576
+ @flipped_view.frame.origin.x.should == 10
1577
+ @flipped_view.frame.origin.y.should == -20
1578
+ @flipped_view.frame.size.width.should == @view_size.width
1579
+ @flipped_view.frame.size.height.should == @view_size.height
1580
+ end
1581
+
1582
+ it 'should support setting the frame via `below(view)` and ignore view origin' do
1583
+ f = @view.frame
1584
+ f.origin.x = 10
1585
+ f.origin.y = 10
1586
+ @view.frame = f
1587
+
1588
+ @layout.context(@view) do
1589
+ retval = @layout.frame @layout.below(@another_view)
1590
+ retval.should == @view.frame
1591
+ end
1592
+ @view.frame.origin.x.should == 10
1593
+ @view.frame.origin.y.should == 90
1594
+ @view.frame.size.width.should == @view_size.width
1595
+ @view.frame.size.height.should == @view_size.height
1596
+ end
1597
+
1598
+ it 'should support setting the frame via `below(view, up:)`' do
1599
+ @layout.context(@view) do
1600
+ retval = @layout.frame @layout.below(@another_view, up: 8)
1601
+ retval.should == @view.frame
1602
+ end
1603
+ @view.frame.origin.x.should == 10
1604
+ @view.frame.origin.y.should == 98
1605
+ @view.frame.size.width.should == @view_size.width
1606
+ @view.frame.size.height.should == @view_size.height
1607
+ end
1608
+
1609
+ it 'should support setting the frame via `below(view, width:height:)`' do
1610
+ @layout.context(@view) do
1611
+ retval = @layout.frame @layout.below(@another_view, width: 10, height: 20)
1612
+ retval.should == @view.frame
1613
+ end
1614
+ @view.frame.origin.x.should == 10
1615
+ @view.frame.origin.y.should == 80
1616
+ @view.frame.size.width.should == 10
1617
+ @view.frame.size.height.should == 20
1618
+ end
1619
+
1620
+ it 'should support setting the frame via `below(view, x:y:width:height:)`' do
1621
+ @layout.context(@view) do
1622
+ retval = @layout.frame @layout.below(@another_view, x: 10, y: 20, width: 22, height: 12)
1623
+ retval.should == @view.frame
1624
+ end
1625
+ @view.frame.origin.x.should == 20
1626
+ @view.frame.origin.y.should == 108
1627
+ @view.frame.size.width.should == 22
1628
+ @view.frame.size.height.should == 12
1629
+ end
1630
+
1631
+ it 'should support setting the frame via `below(view, right:up:width:height:)`' do
1632
+ @layout.context(@view) do
1633
+ retval = @layout.frame @layout.below(@another_view, right: 10, up: 20, width: 22, height: 12)
1634
+ retval.should == @view.frame
1635
+ end
1636
+ @view.frame.origin.x.should == 20
1637
+ @view.frame.origin.y.should == 108
1638
+ @view.frame.size.width.should == 22
1639
+ @view.frame.size.height.should == 12
1640
+ end
1641
+
1642
+ it 'should support setting the frame via `below(view, left:down:width:height:)`' do
1643
+ @layout.context(@view) do
1644
+ retval = @layout.frame @layout.below(@another_view, left: 10, down: 20, width: 22, height: 12)
1645
+ retval.should == @view.frame
1646
+ end
1647
+ @view.frame.origin.x.should == 0
1648
+ @view.frame.origin.y.should == 68
1649
+ @view.frame.size.width.should == 22
1650
+ @view.frame.size.height.should == 12
1651
+ end
1652
+
1653
+ it 'should support setting the frame via `below(view, right:up:width:height:)` in a flipped view' do
1654
+ @layout.context(@flipped_view) do
1655
+ retval = @layout.frame @layout.below(@another_view, right: 10, up: 20, width: 22, height: 12)
1656
+ retval.should == @flipped_view.frame
1657
+ end
1658
+ @flipped_view.frame.origin.x.should == 20
1659
+ @flipped_view.frame.origin.y.should == -40
1660
+ @flipped_view.frame.size.width.should == 22
1661
+ @flipped_view.frame.size.height.should == 12
1662
+ end
1663
+
1664
+ it 'should support setting the frame via `below(view, left:down:width:height:)` in a flipped view' do
1665
+ @layout.context(@flipped_view) do
1666
+ retval = @layout.frame @layout.below(@another_view, left: 10, down: 20, width: 22, height: 12)
1667
+ retval.should == @flipped_view.frame
1668
+ end
1669
+ @flipped_view.frame.origin.x.should == 0
1670
+ @flipped_view.frame.origin.y.should == 0
1671
+ @flipped_view.frame.size.width.should == 22
1672
+ @flipped_view.frame.size.height.should == 12
1673
+ end
1674
+
1675
+ it 'should support setting the frame via `before(view)`' do
1676
+ @layout.context(@view) do
1677
+ retval = @layout.frame @layout.before(@another_view)
1678
+ retval.should == @view.frame
1679
+ end
1680
+ @view.frame.origin.x.should == 2
1681
+ @view.frame.origin.y.should == 100
1682
+ @view.frame.size.width.should == @view_size.width
1683
+ @view.frame.size.height.should == @view_size.height
1684
+ end
1685
+
1686
+ it 'should support setting the frame via `before(view)` and ignore view origin' do
1687
+ f = @view.frame
1688
+ f.origin.x = 10
1689
+ f.origin.y = 10
1690
+ @view.frame = f
1691
+
1692
+ @layout.context(@view) do
1693
+ retval = @layout.frame @layout.before(@another_view)
1694
+ retval.should == @view.frame
1695
+ end
1696
+ @view.frame.origin.x.should == 2
1697
+ @view.frame.origin.y.should == 100
1698
+ @view.frame.size.width.should == @view_size.width
1699
+ @view.frame.size.height.should == @view_size.height
1700
+ end
1701
+
1702
+ it 'should support setting the frame via `before(view, left:)`' do
1703
+ @layout.context(@view) do
1704
+ retval = @layout.frame @layout.before(@another_view, left: 8)
1705
+ retval.should == @view.frame
1706
+ end
1707
+ @view.frame.origin.x.should == -6
1708
+ @view.frame.origin.y.should == 100
1709
+ @view.frame.size.width.should == @view_size.width
1710
+ @view.frame.size.height.should == @view_size.height
1711
+ end
1712
+
1713
+ it 'should support setting the frame via `before(view, width:height:)`' do
1714
+ @layout.context(@view) do
1715
+ retval = @layout.frame @layout.before(@another_view, width: 10, height: 20)
1716
+ retval.should == @view.frame
1717
+ end
1718
+ @view.frame.origin.x.should == 0
1719
+ @view.frame.origin.y.should == 100
1720
+ @view.frame.size.width.should == 10
1721
+ @view.frame.size.height.should == 20
1722
+ end
1723
+
1724
+ it 'should support setting the frame via `before(view, x:y:width:height:)`' do
1725
+ @layout.context(@view) do
1726
+ retval = @layout.frame @layout.before(@another_view, x: 10, y: 20, width: 22, height: 12)
1727
+ retval.should == @view.frame
1728
+ end
1729
+ @view.frame.origin.x.should == -2
1730
+ @view.frame.origin.y.should == 120
1731
+ @view.frame.size.width.should == 22
1732
+ @view.frame.size.height.should == 12
1733
+ end
1734
+
1735
+ it 'should support setting the frame via `left_of(view)`' do
1736
+ before = nil
1737
+ left_of = nil
1738
+ @layout.context(@view) do
1739
+ before = @layout.before(@another_view)
1740
+ left_of = @layout.left_of(@another_view)
1741
+ end
1742
+ left_of.origin.x.should == before.origin.x
1743
+ left_of.origin.y.should == before.origin.y
1744
+ left_of.size.width.should == before.size.width
1745
+ left_of.size.height.should == before.size.height
1746
+ end
1747
+
1748
+ it 'should support setting the frame via `after(view)`' do
1749
+ @layout.context(@view) do
1750
+ retval = @layout.frame @layout.after(@another_view)
1751
+ retval.should == @view.frame
1752
+ end
1753
+ @view.frame.origin.x.should == 130
1754
+ @view.frame.origin.y.should == 100
1755
+ @view.frame.size.width.should == @view_size.width
1756
+ @view.frame.size.height.should == @view_size.height
1757
+ end
1758
+
1759
+ it 'should support setting the frame via `after(view)` and ignore view origin' do
1760
+ f = @view.frame
1761
+ f.origin.x = 10
1762
+ f.origin.y = 10
1763
+ @view.frame = f
1764
+
1765
+ @layout.context(@view) do
1766
+ retval = @layout.frame @layout.after(@another_view)
1767
+ retval.should == @view.frame
1768
+ end
1769
+ @view.frame.origin.x.should == 130
1770
+ @view.frame.origin.y.should == 100
1771
+ @view.frame.size.width.should == @view_size.width
1772
+ @view.frame.size.height.should == @view_size.height
1773
+ end
1774
+
1775
+ it 'should support setting the frame via `after(view, right:)`' do
1776
+ @layout.context(@view) do
1777
+ retval = @layout.frame @layout.after(@another_view, right: 8)
1778
+ retval.should == @view.frame
1779
+ end
1780
+ @view.frame.origin.x.should == 138
1781
+ @view.frame.origin.y.should == 100
1782
+ @view.frame.size.width.should == @view_size.width
1783
+ @view.frame.size.height.should == @view_size.height
1784
+ end
1785
+
1786
+ it 'should support setting the frame via `after(view, width:height:)`' do
1787
+ @layout.context(@view) do
1788
+ retval = @layout.frame @layout.after(@another_view, width: 10, height: 20)
1789
+ retval.should == @view.frame
1790
+ end
1791
+ @view.frame.origin.x.should == 130
1792
+ @view.frame.origin.y.should == 100
1793
+ @view.frame.size.width.should == 10
1794
+ @view.frame.size.height.should == 20
1795
+ end
1796
+
1797
+ it 'should support setting the frame via `after(view, x:y:width:height:)`' do
1798
+ @layout.context(@view) do
1799
+ retval = @layout.frame @layout.after(@another_view, x: 10, y: 20, width: 22, height: 12)
1800
+ retval.should == @view.frame
1801
+ end
1802
+ @view.frame.origin.x.should == 140
1803
+ @view.frame.origin.y.should == 120
1804
+ @view.frame.size.width.should == 22
1805
+ @view.frame.size.height.should == 12
1806
+ end
1807
+
1808
+ it 'should support setting the frame via `right_of(view)`' do
1809
+ after = nil
1810
+ right_of = nil
1811
+ @layout.context(@view) do
1812
+ after = @layout.after(@another_view)
1813
+ right_of = @layout.right_of(@another_view)
1814
+ end
1815
+ right_of.origin.x.should == after.origin.x
1816
+ right_of.origin.y.should == after.origin.y
1817
+ right_of.size.width.should == after.size.width
1818
+ right_of.size.height.should == after.size.height
1819
+ end
1820
+
1821
+ it 'should support setting the frame via `relative_to(view)`' do
1822
+ @layout.context(@view) do
1823
+ retval = @layout.frame @layout.relative_to(@another_view, {})
1824
+ retval.should == @view.frame
1825
+ end
1826
+ @view.frame.origin.x.should == 10
1827
+ @view.frame.origin.y.should == 100
1828
+ @view.frame.size.width.should == @view_size.width
1829
+ @view.frame.size.height.should == @view_size.height
1830
+ end
1831
+
1832
+ it 'should support setting the frame via `relative_to(view)` in a flipped view' do
1833
+ @layout.context(@flipped_view) do
1834
+ retval = @layout.frame @layout.relative_to(@another_view, {})
1835
+ retval.should == @flipped_view.frame
1836
+ end
1837
+ @flipped_view.frame.origin.x.should == 10
1838
+ @flipped_view.frame.origin.y.should == -20
1839
+ @flipped_view.frame.size.width.should == @view_size.width
1840
+ @flipped_view.frame.size.height.should == @view_size.height
1841
+ end
1842
+
1843
+ it 'should support setting the frame via `relative_to(view)` and ignore view origin' do
1844
+ f = @view.frame
1845
+ f.origin.x = 10
1846
+ f.origin.y = 10
1847
+ @view.frame = f
1848
+
1849
+ @layout.context(@view) do
1850
+ retval = @layout.frame @layout.relative_to(@another_view, {})
1851
+ retval.should == @view.frame
1852
+ end
1853
+ @view.frame.origin.x.should == 10
1854
+ @view.frame.origin.y.should == 100
1855
+ @view.frame.size.width.should == @view_size.width
1856
+ @view.frame.size.height.should == @view_size.height
1857
+ end
1858
+
1859
+ it 'should support setting the frame via `relative_to(view, width:height:)`' do
1860
+ @layout.context(@view) do
1861
+ retval = @layout.frame @layout.relative_to(@another_view, width: 10, height: 20)
1862
+ retval.should == @view.frame
1863
+ end
1864
+ @view.frame.origin.x.should == 10
1865
+ @view.frame.origin.y.should == 100
1866
+ @view.frame.size.width.should == 10
1867
+ @view.frame.size.height.should == 20
1868
+ end
1869
+
1870
+ it 'should support setting the frame via `relative_to(view, x:y:width:height:)`' do
1871
+ @layout.context(@view) do
1872
+ retval = @layout.frame @layout.relative_to(@another_view, x: 10, y: 20, width: 22, height: 12)
1873
+ retval.should == @view.frame
1874
+ end
1875
+ @view.frame.origin.x.should == 20
1876
+ @view.frame.origin.y.should == 120
1877
+ @view.frame.size.width.should == 22
1878
+ @view.frame.size.height.should == 12
1879
+ end
1880
+
1881
+ end