motion-kit 0.12.0 → 0.13.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +28 -8
  3. data/lib/{motion-kit → motion-kit-cocoa}/calculator/view_calculator.rb +0 -0
  4. data/lib/motion-kit-cocoa/constraints/constraint.rb +3 -1
  5. data/lib/motion-kit-cocoa/{layouts → helpers}/accessibility_compat.rb +0 -0
  6. data/lib/motion-kit-cocoa/{layouts → helpers}/cagradientlayer_helpers.rb +0 -0
  7. data/lib/motion-kit-cocoa/{layouts → helpers}/calayer_helpers.rb +0 -0
  8. data/lib/motion-kit-cocoa/{layouts → helpers}/sugarcube_compat.rb +0 -0
  9. data/lib/motion-kit-ios/{layouts → helpers}/constraints_helpers.rb +0 -0
  10. data/lib/motion-kit-ios/{layouts → helpers}/layout_device.rb +0 -0
  11. data/lib/motion-kit-ios/{layouts → helpers}/layout_orientation.rb +0 -0
  12. data/lib/motion-kit-ios/{layouts → helpers}/uibutton_helpers.rb +0 -0
  13. data/lib/motion-kit-ios/{layouts/uiview_layout_autoresizing.rb → helpers/uiview_autoresizing_helpers.rb} +0 -0
  14. data/lib/motion-kit-ios/{layouts/uiview_layout_constraints.rb → helpers/uiview_constraints_helpers.rb} +0 -0
  15. data/lib/motion-kit-ios/{layouts/uiview_layout_frame.rb → helpers/uiview_frame_helpers.rb} +0 -0
  16. data/lib/motion-kit-ios/{layouts/uiview_layout_gradient.rb → helpers/uiview_gradient_helpers.rb} +0 -0
  17. data/lib/motion-kit-ios/{layouts → helpers}/uiview_helpers.rb +0 -0
  18. data/lib/motion-kit-osx/{layouts → helpers}/constraints_helpers.rb +0 -0
  19. data/lib/motion-kit-osx/{layouts → helpers}/nsmenu_extensions.rb +0 -0
  20. data/lib/motion-kit-osx/{layouts → helpers}/nsmenu_helpers.rb +0 -0
  21. data/lib/motion-kit-osx/{layouts → helpers}/nsmenuitem_extensions.rb +0 -0
  22. data/lib/motion-kit-osx/{layouts → helpers}/nstablecolumn_helpers.rb +0 -0
  23. data/lib/motion-kit-osx/{layouts → helpers}/nstableview_helpers.rb +0 -0
  24. data/lib/motion-kit-osx/{layouts/nsview_layout_autoresizing.rb → helpers/nsview_autoresizing_helpers.rb} +0 -0
  25. data/lib/motion-kit-osx/{layouts/nsview_layout_constraints.rb → helpers/nsview_constraints_helpers.rb} +0 -0
  26. data/lib/motion-kit-osx/{layouts/nsview_layout_frame.rb → helpers/nsview_frame_helpers.rb} +0 -0
  27. data/lib/motion-kit-osx/{layouts → helpers}/nsview_helpers.rb +0 -0
  28. data/lib/motion-kit-osx/helpers/nswindow_frame_helpers.rb +361 -0
  29. data/lib/motion-kit-osx/{layouts → helpers}/nswindow_helpers.rb +0 -0
  30. data/lib/motion-kit/{layouts → helpers}/base_layout.rb +0 -0
  31. data/lib/motion-kit/{layouts → helpers}/base_layout_class_methods.rb +0 -0
  32. data/lib/motion-kit/{layouts → helpers}/parent.rb +0 -0
  33. data/lib/motion-kit/{layouts → helpers}/tree_layout.rb +21 -4
  34. data/lib/motion-kit/object.rb +11 -0
  35. data/lib/motion-kit/version.rb +1 -1
  36. data/spec/ios/layout_spec.rb +6 -6
  37. data/spec/ios/motion_kit_id_spec.rb +15 -0
  38. data/spec/ios/remove_layout_spec.rb +9 -5
  39. data/spec/osx/{frame_helper_spec.rb → nsview_frame_helper_spec.rb} +69 -69
  40. data/spec/osx/nswindow_frame_helper_spec.rb +1288 -0
  41. metadata +38 -34
  42. data/lib/motion-kit-osx/layouts/nswindow_frame.rb +0 -14
@@ -0,0 +1,1288 @@
1
+ describe 'Frame helpers' do
2
+
3
+ before do
4
+ @layout = TestEmptyLayout.new
5
+ @window = NSWindow.alloc.init
6
+ @window.setFrame([[0, 0], [500, 500]], display: true)
7
+ @window.title = NSBundle.mainBundle.infoDictionary['CFBundleName']
8
+ @layout.root = @window
9
+
10
+ @another_window = NSWindow.alloc.init
11
+ @another_window.setFrame([[200, 200], [200, 200]], display: true)
12
+ @another_window.title = NSBundle.mainBundle.infoDictionary['CFBundleName']
13
+
14
+ @screen_size = NSScreen.mainScreen.frame.size
15
+ end
16
+
17
+ it 'should support `x` method' do
18
+ @layout.context(@window) do
19
+ retval = @layout.x 1
20
+ retval.should == CGRectGetMinX(@window.frame)
21
+ @window.frame.origin.x.should == 1
22
+
23
+ retval = @layout.x '100% - 1'
24
+ retval.should == CGRectGetMinX(@window.frame)
25
+ @window.frame.origin.x.should == @screen_size.width - 1
26
+ end
27
+ end
28
+
29
+ it 'should support `left` method' do
30
+ @layout.context(@window) do
31
+ retval = @layout.left 1
32
+ retval.should == CGRectGetMinX(@window.frame)
33
+ @window.frame.origin.x.should == 1
34
+
35
+ retval = @layout.left '100% - 1'
36
+ retval.should == CGRectGetMinX(@window.frame)
37
+ @window.frame.origin.x.should == @screen_size.width - 1
38
+ end
39
+ end
40
+
41
+ it 'should support `right` method' do
42
+ @layout.context(@window) do
43
+ retval = @layout.right 1
44
+ retval.should == CGRectGetMaxX(@window.frame)
45
+ @window.frame.origin.x.should == 1 - @window.frame.size.width
46
+
47
+ retval = @layout.right '100% - 1'
48
+ retval.should == CGRectGetMaxX(@window.frame)
49
+ @window.frame.origin.x.should == @screen_size.width - 1 - @window.frame.size.width
50
+ end
51
+ end
52
+
53
+ it 'should support `center_x` method' do
54
+ @layout.context(@window) do
55
+ retval = @layout.center_x @window.frame.size.width / 2
56
+ retval.should == CGRectGetMidX(@window.frame)
57
+ @window.frame.origin.x.should == 0
58
+
59
+ retval = @layout.center_x '50%'
60
+ retval.should == CGRectGetMidX(@window.frame)
61
+ retval.should == @screen_size.width / 2
62
+ end
63
+ end
64
+
65
+ it 'should support `middle_x` method' do
66
+ @layout.context(@window) do
67
+ retval = @layout.middle_x @window.frame.size.width / 2
68
+ retval.should == CGRectGetMidX(@window.frame)
69
+ @window.frame.origin.x.should == 0
70
+
71
+ retval = @layout.middle_x '50%'
72
+ retval.should == CGRectGetMidX(@window.frame)
73
+ retval.should == @screen_size.width / 2
74
+ end
75
+ end
76
+
77
+ it 'should support `y` method' do
78
+ @layout.context(@window) do
79
+ retval = @layout.y 1
80
+ retval.should == CGRectGetMinY(@window.frame)
81
+ @window.frame.origin.y.should == 1
82
+
83
+ retval = @layout.y '100% - 1'
84
+ retval.should == CGRectGetMinY(@window.frame)
85
+ @window.frame.origin.y.should == @screen_size.height - 1
86
+ end
87
+ end
88
+
89
+ it 'should support `bottom` method' do
90
+ @layout.context(@window) do
91
+ retval = @layout.bottom 1
92
+ retval.should == CGRectGetMinY(@window.frame)
93
+ @window.frame.origin.y.should == 1
94
+
95
+ retval = @layout.bottom '100% - 1'
96
+ retval.should == CGRectGetMinY(@window.frame)
97
+ @window.frame.origin.y.should == @screen_size.height - 1
98
+ end
99
+ end
100
+
101
+ it 'should support `top` method' do
102
+ @layout.context(@window) do
103
+ retval = @layout.top 1
104
+ retval.should == CGRectGetMaxY(@window.frame)
105
+ @window.frame.origin.y.should == 1 - @window.frame.size.height
106
+
107
+ retval = @layout.top '100% - 1'
108
+ retval.should == CGRectGetMaxY(@window.frame)
109
+ @window.frame.origin.y.should == @screen_size.height - 1 - @window.frame.size.height
110
+ end
111
+ end
112
+
113
+ it 'should support `center_y` method' do
114
+ @layout.context(@window) do
115
+ retval = @layout.center_y @window.frame.size.height / 2
116
+ retval.should == CGRectGetMidY(@window.frame)
117
+ @window.frame.origin.y.should == 0
118
+
119
+ retval = @layout.center_y '50%'
120
+ retval.should == CGRectGetMidY(@window.frame)
121
+ retval.should == @screen_size.height / 2
122
+ end
123
+ end
124
+
125
+ it 'should support `middle_y` method' do
126
+ @layout.context(@window) do
127
+ retval = @layout.middle_y @window.frame.size.height / 2
128
+ retval.should == CGRectGetMidY(@window.frame)
129
+ @window.frame.origin.y.should == 0
130
+
131
+ retval = @layout.middle_y '50%'
132
+ retval.should == CGRectGetMidY(@window.frame)
133
+ retval.should == @screen_size.height / 2
134
+ end
135
+ end
136
+
137
+ it 'should support `width` method' do
138
+ @layout.context(@window) do
139
+ retval = @layout.width 1
140
+ retval.should == CGRectGetWidth(@window.frame)
141
+ @window.frame.size.width.should == 1
142
+
143
+ retval = @layout.width '100% - 1'
144
+ retval.should == CGRectGetWidth(@window.frame)
145
+ @window.frame.size.width.should == @screen_size.width - 1
146
+ end
147
+ end
148
+
149
+ it 'should support `w` method' do
150
+ @layout.context(@window) do
151
+ retval = @layout.w 1
152
+ retval.should == CGRectGetWidth(@window.frame)
153
+ @window.frame.size.width.should == 1
154
+
155
+ retval = @layout.w '100% - 1'
156
+ retval.should == CGRectGetWidth(@window.frame)
157
+ @window.frame.size.width.should == @screen_size.width - 1
158
+ end
159
+ end
160
+
161
+ it 'should support `height` method' do
162
+ @layout.context(@window) do
163
+ retval = @layout.height 1
164
+ retval.should == CGRectGetHeight(@window.frame)
165
+ @window.frame.size.height.should == 1
166
+
167
+ retval = @layout.height '100% - 1'
168
+ retval.should == CGRectGetHeight(@window.frame)
169
+ @window.frame.size.height.should == @screen_size.height - 1
170
+ end
171
+ end
172
+
173
+ it 'should support `h` method' do
174
+ @layout.context(@window) do
175
+ retval = @layout.h 1
176
+ retval.should == CGRectGetHeight(@window.frame)
177
+ @window.frame.size.height.should == 1
178
+
179
+ retval = @layout.h '100% - 1'
180
+ retval.should == CGRectGetHeight(@window.frame)
181
+ @window.frame.size.height.should == @screen_size.height - 1
182
+ end
183
+ end
184
+
185
+ it 'should support `origin([])` method' do
186
+ @layout.context(@window) do
187
+ retval = @layout.origin [1, 2]
188
+ retval.should == @window.frame.origin
189
+ @window.frame.origin.x.should == 1
190
+ @window.frame.origin.y.should == 2
191
+
192
+ retval = @layout.origin ['100% - 1', '100% - 2']
193
+ retval.should == @window.frame.origin
194
+ @window.frame.origin.x.should == @screen_size.width - 1
195
+ @window.frame.origin.y.should == @screen_size.height - 2
196
+ end
197
+ end
198
+
199
+ it 'should support `origin({})` method' do
200
+ @layout.context(@window) do
201
+ retval = @layout.origin x: 1, y: 2
202
+ retval.should == @window.frame.origin
203
+ @window.frame.origin.x.should == 1
204
+ @window.frame.origin.y.should == 2
205
+
206
+ retval = @layout.origin x: '100% - 1', y: '100% - 2'
207
+ retval.should == @window.frame.origin
208
+ @window.frame.origin.x.should == @screen_size.width - 1
209
+ @window.frame.origin.y.should == @screen_size.height - 2
210
+ end
211
+ end
212
+
213
+ it 'should support `origin({relative: true})` method' do
214
+ @layout.context(@window) do
215
+ retval = @layout.origin x: 0, y: 0, right: 1, up: 2, relative: true
216
+ retval.should == @window.frame.origin
217
+ @window.frame.origin.x.should == 1
218
+ @window.frame.origin.y.should == 2
219
+
220
+ retval = @layout.origin x: '100%', y: '100%', left: 1, down: 2, relative: true
221
+ retval.should == @window.frame.origin
222
+ @window.frame.origin.x.should == @screen_size.width - 1
223
+ @window.frame.origin.y.should == @screen_size.height - 2
224
+ end
225
+ end
226
+
227
+ it 'should support `center([])` method' do
228
+ @layout.context(@window) do
229
+ retval = @layout.center [@window.frame.size.width / 2, @window.frame.size.height / 2]
230
+ retval.x.should == CGRectGetMidX(@window.frame)
231
+ retval.y.should == CGRectGetMidY(@window.frame)
232
+ @window.frame.origin.x.should == 0
233
+ @window.frame.origin.y.should == 0
234
+
235
+ retval = @layout.center ['50%', '50%']
236
+ retval.x.should == CGRectGetMidX(@window.frame)
237
+ retval.y.should == CGRectGetMidY(@window.frame)
238
+ retval.x.should == @screen_size.width / 2
239
+ retval.y.should == @screen_size.height / 2
240
+ end
241
+ end
242
+
243
+ it 'should support `center({})` method' do
244
+ @layout.context(@window) do
245
+ retval = @layout.center x: @window.frame.size.width / 2, y: @window.frame.size.height / 2
246
+ retval.x.should == CGRectGetMidX(@window.frame)
247
+ retval.y.should == CGRectGetMidY(@window.frame)
248
+ @window.frame.origin.x.should == 0
249
+ @window.frame.origin.y.should == 0
250
+
251
+ retval = @layout.center x: '50%', y: '50%'
252
+ retval.x.should == CGRectGetMidX(@window.frame)
253
+ retval.y.should == CGRectGetMidY(@window.frame)
254
+ retval.x.should == @screen_size.width / 2
255
+ retval.y.should == @screen_size.height / 2
256
+ end
257
+ end
258
+
259
+ it 'should support `center({relative: true})` method' do
260
+ @layout.context(@window) do
261
+ retval = @layout.center x: @window.frame.size.width / 2, y: @window.frame.size.height / 2, right: 1, up: 2, relative: true
262
+ retval.x.should == CGRectGetMidX(@window.frame)
263
+ retval.y.should == CGRectGetMidY(@window.frame)
264
+ @window.frame.origin.x.should == 1
265
+ @window.frame.origin.y.should == 2
266
+
267
+ retval = @layout.center x: '50%', y: '50%', left: 1, down: 2, relative: true
268
+ retval.x.should == CGRectGetMidX(@window.frame)
269
+ retval.y.should == CGRectGetMidY(@window.frame)
270
+ retval.x.should == @screen_size.width / 2 - 1
271
+ retval.y.should == @screen_size.height / 2 - 2
272
+ end
273
+ end
274
+
275
+ it 'should support `size` method' do
276
+ @layout.context(@window) do
277
+ retval = @layout.size [1, 2]
278
+ retval.should == @window.frame.size
279
+ @window.frame.size.width.should == 1
280
+ @window.frame.size.height.should == 2
281
+
282
+ retval = @layout.size ['100% - 1', '100% - 2']
283
+ retval.should == @window.frame.size
284
+ @window.frame.size.width.should == @screen_size.width - 1
285
+ @window.frame.size.height.should == @screen_size.height - 2
286
+ end
287
+ end
288
+
289
+ it 'should support `frame` arrays [[x, y], [w, h]]' do
290
+ @layout.context(@window) do
291
+ retval = @layout.frame [[1, 2], [3, 4]]
292
+ retval.should == @window.frame
293
+ end
294
+ @window.frame.origin.x.should == 1
295
+ @window.frame.origin.y.should == 2
296
+ @window.frame.size.width.should == 3
297
+ @window.frame.size.height.should == 4
298
+ end
299
+
300
+ it 'should support `frame` arrays [x, y, w, h]' do
301
+ @layout.context(@window) do
302
+ retval = @layout.frame [1, 2, 3, 4]
303
+ retval.should == @window.frame
304
+ end
305
+ @window.frame.origin.x.should == 1
306
+ @window.frame.origin.y.should == 2
307
+ @window.frame.size.width.should == 3
308
+ @window.frame.size.height.should == 4
309
+ end
310
+
311
+ it 'should support `frame :full`' do
312
+ @layout.context(@window) do
313
+ retval = @layout.frame :full
314
+ retval.should == @window.frame
315
+ end
316
+ @window.frame.origin.x.should == 0
317
+ @window.frame.origin.y.should == 0
318
+ @window.frame.size.width.should == @screen_size.width
319
+ @window.frame.size.height.should == @screen_size.height
320
+ end
321
+
322
+ it 'should support `frame :center`' do
323
+ @layout.context(@window) do
324
+ retval = @layout.frame :center
325
+ retval.should == @window.frame
326
+ end
327
+ @window.frame.origin.x.should == (@screen_size.width - @window.frame.size.width) / 2
328
+ @window.frame.origin.y.should == (@screen_size.height - @window.frame.size.height) / 2
329
+ @window.frame.size.width.should == @window.frame.size.width
330
+ @window.frame.size.height.should == @window.frame.size.height
331
+ end
332
+
333
+ it 'should support setting the frame via `from_bottom_left`' do
334
+ @layout.context(@window) do
335
+ retval = @layout.frame @layout.from_bottom_left()
336
+ retval.should == @window.frame
337
+ end
338
+ @window.frame.origin.x.should == 0
339
+ @window.frame.origin.y.should == 0
340
+ @window.frame.size.width.should == @window.frame.size.width
341
+ @window.frame.size.height.should == @window.frame.size.height
342
+ end
343
+
344
+ it 'should support setting the frame via `from_bottom_left(width:height:)`' do
345
+ @layout.context(@window) do
346
+ retval = @layout.frame @layout.from_bottom_left(width: 10, height: 20)
347
+ retval.should == @window.frame
348
+ end
349
+ @window.frame.origin.x.should == 0
350
+ @window.frame.origin.y.should == 0
351
+ @window.frame.size.width.should == 10
352
+ @window.frame.size.height.should == 20
353
+ end
354
+
355
+ it 'should support setting the frame via `from_bottom_left(x:y:width:height:)`' do
356
+ @layout.context(@window) do
357
+ retval = @layout.frame @layout.from_bottom_left(x: 10, y: 20, width: 22, height: 12)
358
+ retval.should == @window.frame
359
+ end
360
+ @window.frame.origin.x.should == 10
361
+ @window.frame.origin.y.should == 20
362
+ @window.frame.size.width.should == 22
363
+ @window.frame.size.height.should == 12
364
+ end
365
+
366
+ it 'should support setting the frame via `from_bottom_left(right:up:width:height:)`' do
367
+ @layout.context(@window) do
368
+ retval = @layout.frame @layout.from_bottom_left(right: 10, up: 20, width: 22, height: 12)
369
+ retval.should == @window.frame
370
+ end
371
+ @window.frame.origin.x.should == 10
372
+ @window.frame.origin.y.should == 20
373
+ @window.frame.size.width.should == 22
374
+ @window.frame.size.height.should == 12
375
+ end
376
+
377
+ it 'should support setting the frame via `from_bottom_left(left:down:width:height:)`' do
378
+ @layout.context(@window) do
379
+ retval = @layout.frame @layout.from_bottom_left(left: 10, down: 20, width: 22, height: 12)
380
+ retval.should == @window.frame
381
+ end
382
+ @window.frame.origin.x.should == -10
383
+ @window.frame.origin.y.should == -20
384
+ @window.frame.size.width.should == 22
385
+ @window.frame.size.height.should == 12
386
+ end
387
+
388
+ # ============================================================================
389
+
390
+ it 'should support setting the frame via `from_bottom_left(window)`' do
391
+ @layout.context(@window) do
392
+ retval = @layout.frame @layout.from_bottom_left(@another_window, x: 1, y: 1)
393
+ retval.should == @window.frame
394
+ end
395
+ @window.frame.origin.x.should == @another_window.frame.origin.x + 1
396
+ @window.frame.origin.y.should == @another_window.frame.origin.y + 1
397
+ @window.frame.size.width.should == @window.frame.size.width
398
+ @window.frame.size.height.should == @window.frame.size.height
399
+ end
400
+
401
+ it 'should support setting the frame via `from_bottom`' do
402
+ @layout.context(@window) do
403
+ retval = @layout.frame @layout.from_bottom()
404
+ retval.should == @window.frame
405
+ end
406
+ @window.frame.origin.x.should == (@screen_size.width - @window.frame.size.width) / 2
407
+ @window.frame.origin.y.should == 0
408
+ @window.frame.size.width.should == @window.frame.size.width
409
+ @window.frame.size.height.should == @window.frame.size.height
410
+ end
411
+
412
+ it 'should support setting the frame via `from_bottom(width:height:)`' do
413
+ @layout.context(@window) do
414
+ retval = @layout.frame @layout.from_bottom(width: 10, height: 20)
415
+ retval.should == @window.frame
416
+ end
417
+ @window.frame.origin.x.should == (@screen_size.width - 10) / 2
418
+ @window.frame.origin.y.should == 0
419
+ @window.frame.size.width.should == 10
420
+ @window.frame.size.height.should == 20
421
+ end
422
+
423
+ it 'should support setting the frame via `from_bottom(x:y:width:height:)`' do
424
+ @layout.context(@window) do
425
+ retval = @layout.frame @layout.from_bottom(x: 10, y: 20, width: 22, height: 12)
426
+ retval.should == @window.frame
427
+ end
428
+ @window.frame.origin.x.should == (@screen_size.width - 22) / 2 + 10
429
+ @window.frame.origin.y.should == 20
430
+ @window.frame.size.width.should == 22
431
+ @window.frame.size.height.should == 12
432
+ end
433
+
434
+ it 'should support setting the frame via `from_bottom(right:up:width:height:)`' do
435
+ @layout.context(@window) do
436
+ retval = @layout.frame @layout.from_bottom(right: 10, up: 20, width: 22, height: 12)
437
+ retval.should == @window.frame
438
+ end
439
+ @window.frame.origin.x.should == (@screen_size.width - 22) / 2 + 10
440
+ @window.frame.origin.y.should == 20
441
+ @window.frame.size.width.should == 22
442
+ @window.frame.size.height.should == 12
443
+ end
444
+
445
+ it 'should support setting the frame via `from_bottom(left:down:width:height:)`' do
446
+ @layout.context(@window) do
447
+ retval = @layout.frame @layout.from_bottom(left: 10, down: 20, width: 22, height: 12)
448
+ retval.should == @window.frame
449
+ end
450
+ @window.frame.origin.x.should == (@screen_size.width - 22) / 2 - 10
451
+ @window.frame.origin.y.should == -20
452
+ @window.frame.size.width.should == 22
453
+ @window.frame.size.height.should == 12
454
+ end
455
+
456
+ it 'should support setting the frame via `from_bottom(window)`' do
457
+ @layout.context(@window) do
458
+ retval = @layout.frame @layout.from_bottom(@another_window, x: 1, y: 1)
459
+ retval.should == @window.frame
460
+ end
461
+ @window.frame.origin.x.should == @another_window.frame.origin.x + (@another_window.frame.size.width - @window.frame.size.width) / 2 + 1
462
+ @window.frame.origin.y.should == @another_window.frame.origin.y + 1
463
+ @window.frame.size.width.should == @window.frame.size.width
464
+ @window.frame.size.height.should == @window.frame.size.height
465
+ end
466
+
467
+ it 'should support setting the frame via `from_bottom_right`' do
468
+ @layout.context(@window) do
469
+ retval = @layout.frame @layout.from_bottom_right()
470
+ retval.should == @window.frame
471
+ end
472
+ @window.frame.origin.x.should == @screen_size.width - @window.frame.size.width
473
+ @window.frame.origin.y.should == 0
474
+ @window.frame.size.width.should == @window.frame.size.width
475
+ @window.frame.size.height.should == @window.frame.size.height
476
+ end
477
+
478
+ it 'should support setting the frame via `from_bottom_right(width:height:)`' do
479
+ @layout.context(@window) do
480
+ retval = @layout.frame @layout.from_bottom_right(width: 10, height: 20)
481
+ retval.should == @window.frame
482
+ end
483
+ @window.frame.origin.x.should == @screen_size.width - 10
484
+ @window.frame.origin.y.should == 0
485
+ @window.frame.size.width.should == 10
486
+ @window.frame.size.height.should == 20
487
+ end
488
+
489
+ it 'should support setting the frame via `from_bottom_right(x:y:width:height:)`' do
490
+ @layout.context(@window) do
491
+ retval = @layout.frame @layout.from_bottom_right(x: 10, y: 20, width: 22, height: 12)
492
+ retval.should == @window.frame
493
+ end
494
+ @window.frame.origin.x.should == @screen_size.width - 22 + 10
495
+ @window.frame.origin.y.should == 20
496
+ @window.frame.size.width.should == 22
497
+ @window.frame.size.height.should == 12
498
+ end
499
+
500
+ it 'should support setting the frame via `from_bottom_right(right:up:width:height:)`' do
501
+ @layout.context(@window) do
502
+ retval = @layout.frame @layout.from_bottom_right(right: 10, up: 20, width: 22, height: 12)
503
+ retval.should == @window.frame
504
+ end
505
+ @window.frame.origin.x.should == @screen_size.width - 22 + 10
506
+ @window.frame.origin.y.should == 20
507
+ @window.frame.size.width.should == 22
508
+ @window.frame.size.height.should == 12
509
+ end
510
+
511
+ it 'should support setting the frame via `from_bottom_right(left:down:width:height:)`' do
512
+ @layout.context(@window) do
513
+ retval = @layout.frame @layout.from_bottom_right(left: 10, down: 20, width: 22, height: 12)
514
+ retval.should == @window.frame
515
+ end
516
+ @window.frame.origin.x.should == @screen_size.width - 22 - 10
517
+ @window.frame.origin.y.should == -20
518
+ @window.frame.size.width.should == 22
519
+ @window.frame.size.height.should == 12
520
+ end
521
+
522
+ it 'should support setting the frame via `from_bottom_right(window)`' do
523
+ @layout.context(@window) do
524
+ retval = @layout.frame @layout.from_bottom_right(@another_window, x: 1, y: 1)
525
+ retval.should == @window.frame
526
+ end
527
+ @window.frame.origin.x.should == @another_window.frame.origin.x + @another_window.frame.size.width - @window.frame.size.width + 1
528
+ @window.frame.origin.y.should == @another_window.frame.origin.y + 1
529
+ @window.frame.size.width.should == @window.frame.size.width
530
+ @window.frame.size.height.should == @window.frame.size.height
531
+ end
532
+
533
+ it 'should support setting the frame via `from_left`' do
534
+ @layout.context(@window) do
535
+ retval = @layout.frame @layout.from_left()
536
+ retval.should == @window.frame
537
+ end
538
+ @window.frame.origin.x.should == 0
539
+ @window.frame.origin.y.should == (@screen_size.height - @window.frame.size.height) / 2
540
+ @window.frame.size.width.should == @window.frame.size.width
541
+ @window.frame.size.height.should == @window.frame.size.height
542
+ end
543
+
544
+ it 'should support setting the frame via `from_left(width:height:)`' do
545
+ @layout.context(@window) do
546
+ retval = @layout.frame @layout.from_left(width: 10, height: 20)
547
+ retval.should == @window.frame
548
+ end
549
+ @window.frame.origin.x.should == 0
550
+ @window.frame.origin.y.should == (@screen_size.height - 20) / 2
551
+ @window.frame.size.width.should == 10
552
+ @window.frame.size.height.should == 20
553
+ end
554
+
555
+ it 'should support setting the frame via `from_left(x:y:width:height:)`' do
556
+ @layout.context(@window) do
557
+ retval = @layout.frame @layout.from_left(x: 10, y: 20, width: 22, height: 12)
558
+ retval.should == @window.frame
559
+ end
560
+ @window.frame.origin.x.should == 10
561
+ @window.frame.origin.y.should == (@screen_size.height - 12) / 2 + 20
562
+ @window.frame.size.width.should == 22
563
+ @window.frame.size.height.should == 12
564
+ end
565
+
566
+ it 'should support setting the frame via `from_left(right:up:width:height:)`' do
567
+ @layout.context(@window) do
568
+ retval = @layout.frame @layout.from_left(right: 10, up: 20, width: 22, height: 12)
569
+ retval.should == @window.frame
570
+ end
571
+ @window.frame.origin.x.should == 10
572
+ @window.frame.origin.y.should == (@screen_size.height - 12) / 2 + 20
573
+ @window.frame.size.width.should == 22
574
+ @window.frame.size.height.should == 12
575
+ end
576
+
577
+ it 'should support setting the frame via `from_left(left:down:width:height:)`' do
578
+ @layout.context(@window) do
579
+ retval = @layout.frame @layout.from_left(left: 10, down: 20, width: 22, height: 12)
580
+ retval.should == @window.frame
581
+ end
582
+ @window.frame.origin.x.should == -10
583
+ @window.frame.origin.y.should == (@screen_size.height - 12) / 2 - 20
584
+ @window.frame.size.width.should == 22
585
+ @window.frame.size.height.should == 12
586
+ end
587
+
588
+ it 'should support setting the frame via `from_left(window)`' do
589
+ @layout.context(@window) do
590
+ retval = @layout.frame @layout.from_left(@another_window, x: 1, y: 1)
591
+ retval.should == @window.frame
592
+ end
593
+ @window.frame.origin.x.should == @another_window.frame.origin.x + 1
594
+ @window.frame.origin.y.should == @another_window.frame.origin.y + (@another_window.frame.size.height - @window.frame.size.height) / 2 + 1
595
+ @window.frame.size.width.should == @window.frame.size.width
596
+ @window.frame.size.height.should == @window.frame.size.height
597
+ end
598
+
599
+ it 'should support setting the frame via `from_center`' do
600
+ @layout.context(@window) do
601
+ retval = @layout.frame @layout.from_center()
602
+ retval.should == @window.frame
603
+ end
604
+ @window.frame.origin.x.should == (@screen_size.width - @window.frame.size.width) / 2
605
+ @window.frame.origin.y.should == (@screen_size.height - @window.frame.size.height) / 2
606
+ @window.frame.size.width.should == @window.frame.size.width
607
+ @window.frame.size.height.should == @window.frame.size.height
608
+ end
609
+
610
+ it 'should support setting the frame via `from_center(width:height:)`' do
611
+ @layout.context(@window) do
612
+ retval = @layout.frame @layout.from_center(width: 10, height: 20)
613
+ retval.should == @window.frame
614
+ end
615
+ @window.frame.origin.x.should == (@screen_size.width - 10) / 2
616
+ @window.frame.origin.y.should == (@screen_size.height - 20) / 2
617
+ @window.frame.size.width.should == 10
618
+ @window.frame.size.height.should == 20
619
+ end
620
+
621
+ it 'should support setting the frame via `from_center(x:y:width:height:)`' do
622
+ @layout.context(@window) do
623
+ retval = @layout.frame @layout.from_center(x: 10, y: 20, width: 22, height: 12)
624
+ retval.should == @window.frame
625
+ end
626
+ @window.frame.origin.x.should == (@screen_size.width - 22) / 2 + 10
627
+ @window.frame.origin.y.should == (@screen_size.height - 12) / 2 + 20
628
+ @window.frame.size.width.should == 22
629
+ @window.frame.size.height.should == 12
630
+ end
631
+
632
+ it 'should support setting the frame via `from_center(right:up:width:height:)`' do
633
+ @layout.context(@window) do
634
+ retval = @layout.frame @layout.from_center(right: 10, up: 20, width: 22, height: 12)
635
+ retval.should == @window.frame
636
+ end
637
+ @window.frame.origin.x.should == (@screen_size.width - 22) / 2 + 10
638
+ @window.frame.origin.y.should == (@screen_size.height - 12) / 2 + 20
639
+ @window.frame.size.width.should == 22
640
+ @window.frame.size.height.should == 12
641
+ end
642
+
643
+ it 'should support setting the frame via `from_center(left:down:width:height:)`' do
644
+ @layout.context(@window) do
645
+ retval = @layout.frame @layout.from_center(left: 10, down: 20, width: 22, height: 12)
646
+ retval.should == @window.frame
647
+ end
648
+ @window.frame.origin.x.should == (@screen_size.width - 22) / 2 - 10
649
+ @window.frame.origin.y.should == (@screen_size.height - 12) / 2 - 20
650
+ @window.frame.size.width.should == 22
651
+ @window.frame.size.height.should == 12
652
+ end
653
+
654
+ it 'should support setting the frame via `from_center(window)`' do
655
+ @layout.context(@window) do
656
+ retval = @layout.frame @layout.from_center(@another_window, x: 1, y: 1)
657
+ retval.should == @window.frame
658
+ end
659
+ @window.frame.origin.x.should == @another_window.frame.origin.x + (@another_window.frame.size.width - @window.frame.size.width) / 2 + 1
660
+ @window.frame.origin.y.should == @another_window.frame.origin.y + (@another_window.frame.size.height - @window.frame.size.height) / 2 + 1
661
+ @window.frame.size.width.should == @window.frame.size.width
662
+ @window.frame.size.height.should == @window.frame.size.height
663
+ end
664
+
665
+ it 'should support setting the frame via `from_right`' do
666
+ @layout.context(@window) do
667
+ retval = @layout.frame @layout.from_right()
668
+ retval.should == @window.frame
669
+ end
670
+ @window.frame.origin.x.should == @screen_size.width - @window.frame.size.width
671
+ @window.frame.origin.y.should == (@screen_size.height - @window.frame.size.height) / 2
672
+ @window.frame.size.width.should == @window.frame.size.width
673
+ @window.frame.size.height.should == @window.frame.size.height
674
+ end
675
+
676
+ it 'should support setting the frame via `from_right(width:height:)`' do
677
+ @layout.context(@window) do
678
+ retval = @layout.frame @layout.from_right(width: 10, height: 20)
679
+ retval.should == @window.frame
680
+ end
681
+ @window.frame.origin.x.should == @screen_size.width - 10
682
+ @window.frame.origin.y.should == (@screen_size.height - 20) / 2
683
+ @window.frame.size.width.should == 10
684
+ @window.frame.size.height.should == 20
685
+ end
686
+
687
+ it 'should support setting the frame via `from_right(x:y:width:height:)`' do
688
+ @layout.context(@window) do
689
+ retval = @layout.frame @layout.from_right(x: 10, y: 20, width: 22, height: 12)
690
+ retval.should == @window.frame
691
+ end
692
+ @window.frame.origin.x.should == @screen_size.width - 22 + 10
693
+ @window.frame.origin.y.should == (@screen_size.height - 12) / 2 + 20
694
+ @window.frame.size.width.should == 22
695
+ @window.frame.size.height.should == 12
696
+ end
697
+
698
+ it 'should support setting the frame via `from_right(right:up:width:height:)`' do
699
+ @layout.context(@window) do
700
+ retval = @layout.frame @layout.from_right(right: 10, up: 20, width: 22, height: 12)
701
+ retval.should == @window.frame
702
+ end
703
+ @window.frame.origin.x.should == @screen_size.width - 22 + 10
704
+ @window.frame.origin.y.should == (@screen_size.height - 12) / 2 + 20
705
+ @window.frame.size.width.should == 22
706
+ @window.frame.size.height.should == 12
707
+ end
708
+
709
+ it 'should support setting the frame via `from_right(left:down:width:height:)`' do
710
+ @layout.context(@window) do
711
+ retval = @layout.frame @layout.from_right(left: 10, down: 20, width: 22, height: 12)
712
+ retval.should == @window.frame
713
+ end
714
+ @window.frame.origin.x.should == @screen_size.width - 22 - 10
715
+ @window.frame.origin.y.should == (@screen_size.height - 12) / 2 - 20
716
+ @window.frame.size.width.should == 22
717
+ @window.frame.size.height.should == 12
718
+ end
719
+
720
+ it 'should support setting the frame via `from_right(window)`' do
721
+ @layout.context(@window) do
722
+ retval = @layout.frame @layout.from_right(@another_window, x: 1, y: 1)
723
+ retval.should == @window.frame
724
+ end
725
+ @window.frame.origin.x.should == @another_window.frame.origin.x + @another_window.frame.size.width - @window.frame.size.width + 1
726
+ @window.frame.origin.y.should == @another_window.frame.origin.y + (@another_window.frame.size.height - @window.frame.size.height) / 2 + 1
727
+ @window.frame.size.width.should == @window.frame.size.width
728
+ @window.frame.size.height.should == @window.frame.size.height
729
+ end
730
+
731
+ it 'should support setting the frame via `from_top_left`' do
732
+ @layout.context(@window) do
733
+ retval = @layout.frame @layout.from_top_left()
734
+ retval.should == @window.frame
735
+ end
736
+ @window.frame.origin.x.should == 0
737
+ @window.frame.origin.y.should == @screen_size.height - @window.frame.size.height
738
+ @window.frame.size.width.should == @window.frame.size.width
739
+ @window.frame.size.height.should == @window.frame.size.height
740
+ end
741
+
742
+ it 'should support setting the frame via `from_top_left(width:height:)`' do
743
+ @layout.context(@window) do
744
+ retval = @layout.frame @layout.from_top_left(width: 10, height: 20)
745
+ retval.should == @window.frame
746
+ end
747
+ @window.frame.origin.x.should == 0
748
+ @window.frame.origin.y.should == @screen_size.height - 20
749
+ @window.frame.size.width.should == 10
750
+ @window.frame.size.height.should == 20
751
+ end
752
+
753
+ it 'should support setting the frame via `from_top_left(x:y:width:height:)`' do
754
+ @layout.context(@window) do
755
+ retval = @layout.frame @layout.from_top_left(x: 10, y: 20, width: 22, height: 12)
756
+ retval.should == @window.frame
757
+ end
758
+ @window.frame.origin.x.should == 10
759
+ @window.frame.origin.y.should == @screen_size.height - 12 + 20
760
+ @window.frame.size.width.should == 22
761
+ @window.frame.size.height.should == 12
762
+ end
763
+
764
+ it 'should support setting the frame via `from_top_left(right:up:width:height:)`' do
765
+ @layout.context(@window) do
766
+ retval = @layout.frame @layout.from_top_left(right: 10, up: 20, width: 22, height: 12)
767
+ retval.should == @window.frame
768
+ end
769
+ @window.frame.origin.x.should == 10
770
+ @window.frame.origin.y.should == @screen_size.height - 12 + 20
771
+ @window.frame.size.width.should == 22
772
+ @window.frame.size.height.should == 12
773
+ end
774
+
775
+ it 'should support setting the frame via `from_top_left(left:down:width:height:)`' do
776
+ @layout.context(@window) do
777
+ retval = @layout.frame @layout.from_top_left(left: 10, down: 20, width: 22, height: 12)
778
+ retval.should == @window.frame
779
+ end
780
+ @window.frame.origin.x.should == -10
781
+ @window.frame.origin.y.should == @screen_size.height - 12 - 20
782
+ @window.frame.size.width.should == 22
783
+ @window.frame.size.height.should == 12
784
+ end
785
+
786
+ it 'should support setting the frame via `from_top_left(window)`' do
787
+ @layout.context(@window) do
788
+ retval = @layout.frame @layout.from_top_left(@another_window, x: 1, y: 1)
789
+ retval.should == @window.frame
790
+ end
791
+ @window.frame.origin.x.should == @another_window.frame.origin.x + 1
792
+ @window.frame.origin.y.should == @another_window.frame.origin.y + @another_window.frame.size.height - @window.frame.size.height + 1
793
+ @window.frame.size.width.should == @window.frame.size.width
794
+ @window.frame.size.height.should == @window.frame.size.height
795
+ end
796
+
797
+ it 'should support setting the frame via `from_top`' do
798
+ @layout.context(@window) do
799
+ retval = @layout.frame @layout.from_top()
800
+ retval.should == @window.frame
801
+ end
802
+ @window.frame.origin.x.should == (@screen_size.width - @window.frame.size.width) / 2
803
+ @window.frame.origin.y.should == @screen_size.height - @window.frame.size.height
804
+ @window.frame.size.width.should == @window.frame.size.width
805
+ @window.frame.size.height.should == @window.frame.size.height
806
+ end
807
+
808
+ it 'should support setting the frame via `from_top(width:height:)`' do
809
+ @layout.context(@window) do
810
+ retval = @layout.frame @layout.from_top(width: 10, height: 20)
811
+ retval.should == @window.frame
812
+ end
813
+ @window.frame.origin.x.should == (@screen_size.width - 10) / 2
814
+ @window.frame.origin.y.should == @screen_size.height - 20
815
+ @window.frame.size.width.should == 10
816
+ @window.frame.size.height.should == 20
817
+ end
818
+
819
+ it 'should support setting the frame via `from_top(x:y:width:height:)`' do
820
+ @layout.context(@window) do
821
+ retval = @layout.frame @layout.from_top(x: 10, y: 20, width: 22, height: 12)
822
+ retval.should == @window.frame
823
+ end
824
+ @window.frame.origin.x.should == (@screen_size.width - 22) / 2 + 10
825
+ @window.frame.origin.y.should == @screen_size.height - 12 + 20
826
+ @window.frame.size.width.should == 22
827
+ @window.frame.size.height.should == 12
828
+ end
829
+
830
+ it 'should support setting the frame via `from_top(right:up:width:height:)`' do
831
+ @layout.context(@window) do
832
+ retval = @layout.frame @layout.from_top(right: 10, up: 20, width: 22, height: 12)
833
+ retval.should == @window.frame
834
+ end
835
+ @window.frame.origin.x.should == (@screen_size.width - 22) / 2 + 10
836
+ @window.frame.origin.y.should == @screen_size.height - 12 + 20
837
+ @window.frame.size.width.should == 22
838
+ @window.frame.size.height.should == 12
839
+ end
840
+
841
+ it 'should support setting the frame via `from_top(left:down:width:height:)`' do
842
+ @layout.context(@window) do
843
+ retval = @layout.frame @layout.from_top(left: 10, down: 20, width: 22, height: 12)
844
+ retval.should == @window.frame
845
+ end
846
+ @window.frame.origin.x.should == (@screen_size.width - 22) / 2 - 10
847
+ @window.frame.origin.y.should == @screen_size.height - 12 - 20
848
+ @window.frame.size.width.should == 22
849
+ @window.frame.size.height.should == 12
850
+ end
851
+
852
+ it 'should support setting the frame via `from_top(window)`' do
853
+ @layout.context(@window) do
854
+ retval = @layout.frame @layout.from_top(@another_window, x: 1, y: 1)
855
+ retval.should == @window.frame
856
+ end
857
+ @window.frame.origin.x.should == @another_window.frame.origin.x + (@another_window.frame.size.width - @window.frame.size.width) / 2 + 1
858
+ @window.frame.origin.y.should == @another_window.frame.origin.y + @another_window.frame.size.height - @window.frame.size.height + 1
859
+ @window.frame.size.width.should == @window.frame.size.width
860
+ @window.frame.size.height.should == @window.frame.size.height
861
+ end
862
+
863
+ it 'should support setting the frame via `from_top_right`' do
864
+ @layout.context(@window) do
865
+ retval = @layout.frame @layout.from_top_right()
866
+ retval.should == @window.frame
867
+ end
868
+ @window.frame.origin.x.should == @screen_size.width - @window.frame.size.width
869
+ @window.frame.origin.y.should == @screen_size.height - @window.frame.size.height
870
+ @window.frame.size.width.should == @window.frame.size.width
871
+ @window.frame.size.height.should == @window.frame.size.height
872
+ end
873
+
874
+ it 'should support setting the frame via `from_top_right(width:height:)`' do
875
+ @layout.context(@window) do
876
+ retval = @layout.frame @layout.from_top_right(width: 10, height: 20)
877
+ retval.should == @window.frame
878
+ end
879
+ @window.frame.origin.x.should == @screen_size.width - 10
880
+ @window.frame.origin.y.should == @screen_size.height - 20
881
+ @window.frame.size.width.should == 10
882
+ @window.frame.size.height.should == 20
883
+ end
884
+
885
+ it 'should support setting the frame via `from_top_right(x:y:width:height:)`' do
886
+ @layout.context(@window) do
887
+ retval = @layout.frame @layout.from_top_right(x: 10, y: 20, width: 22, height: 12)
888
+ retval.should == @window.frame
889
+ end
890
+ @window.frame.origin.x.should == @screen_size.width - 22 + 10
891
+ @window.frame.origin.y.should == @screen_size.height - 12 + 20
892
+ @window.frame.size.width.should == 22
893
+ @window.frame.size.height.should == 12
894
+ end
895
+
896
+ it 'should support setting the frame via `from_top_right(right:up:width:height:)`' do
897
+ @layout.context(@window) do
898
+ retval = @layout.frame @layout.from_top_right(right: 10, up: 20, width: 22, height: 12)
899
+ retval.should == @window.frame
900
+ end
901
+ @window.frame.origin.x.should == @screen_size.width - 22 + 10
902
+ @window.frame.origin.y.should == @screen_size.height - 12 + 20
903
+ @window.frame.size.width.should == 22
904
+ @window.frame.size.height.should == 12
905
+ end
906
+
907
+ it 'should support setting the frame via `from_top_right(left:down:width:height:)`' do
908
+ @layout.context(@window) do
909
+ retval = @layout.frame @layout.from_top_right(left: 10, down: 20, width: 22, height: 12)
910
+ retval.should == @window.frame
911
+ end
912
+ @window.frame.origin.x.should == @screen_size.width - 22 - 10
913
+ @window.frame.origin.y.should == @screen_size.height - 12 - 20
914
+ @window.frame.size.width.should == 22
915
+ @window.frame.size.height.should == 12
916
+ end
917
+
918
+ it 'should support setting the frame via `from_top_right(window)`' do
919
+ @layout.context(@window) do
920
+ retval = @layout.frame @layout.from_top_right(@another_window, x: 1, y: 1)
921
+ retval.should == @window.frame
922
+ end
923
+ @window.frame.origin.x.should == @another_window.frame.origin.x + @another_window.frame.size.width - @window.frame.size.width + 1
924
+ @window.frame.origin.y.should == @another_window.frame.origin.y + @another_window.frame.size.height - @window.frame.size.height + 1
925
+ @window.frame.size.width.should == @window.frame.size.width
926
+ @window.frame.size.height.should == @window.frame.size.height
927
+ end
928
+
929
+ it 'should support setting the frame via `above(window)`' do
930
+ @layout.context(@window) do
931
+ retval = @layout.frame @layout.above(@another_window)
932
+ retval.should == @window.frame
933
+ end
934
+ @window.frame.origin.x.should == @another_window.frame.origin.x
935
+ @window.frame.origin.y.should == @another_window.frame.origin.y + @another_window.frame.size.height
936
+ @window.frame.size.width.should == @window.frame.size.width
937
+ @window.frame.size.height.should == @window.frame.size.height
938
+ end
939
+
940
+ it 'should support setting the frame via `above(window)` and ignore view origin' do
941
+ f = @window.frame
942
+ f.origin.x = 10
943
+ f.origin.y = 10
944
+ @window.setFrame(f, display: false)
945
+
946
+ @layout.context(@window) do
947
+ retval = @layout.frame @layout.above(@another_window)
948
+ retval.should == @window.frame
949
+ end
950
+ @window.frame.origin.x.should == @another_window.frame.origin.x
951
+ @window.frame.origin.y.should == @another_window.frame.origin.y + @another_window.frame.size.height
952
+ @window.frame.size.width.should == @window.frame.size.width
953
+ @window.frame.size.height.should == @window.frame.size.height
954
+ end
955
+
956
+ it 'should support setting the frame via `above(window, down:)`' do
957
+ @layout.context(@window) do
958
+ retval = @layout.frame @layout.above(@another_window, down: 8)
959
+ retval.should == @window.frame
960
+ end
961
+ @window.frame.origin.x.should == @another_window.frame.origin.x
962
+ @window.frame.origin.y.should == @another_window.frame.origin.y + @another_window.frame.size.height - 8
963
+ @window.frame.size.width.should == @window.frame.size.width
964
+ @window.frame.size.height.should == @window.frame.size.height
965
+ end
966
+
967
+ it 'should support setting the frame via `above(window, width:height:)`' do
968
+ @layout.context(@window) do
969
+ retval = @layout.frame @layout.above(@another_window, width: 10, height: 20)
970
+ retval.should == @window.frame
971
+ end
972
+ @window.frame.origin.x.should == @another_window.frame.origin.x
973
+ @window.frame.origin.y.should == @another_window.frame.origin.y + @another_window.frame.size.height
974
+ @window.frame.size.width.should == 10
975
+ @window.frame.size.height.should == 20
976
+ end
977
+
978
+ it 'should support setting the frame via `above(window, x:y:width:height:)`' do
979
+ @layout.context(@window) do
980
+ retval = @layout.frame @layout.above(@another_window, x: 10, y: 20, width: 22, height: 12)
981
+ retval.should == @window.frame
982
+ end
983
+ @window.frame.origin.x.should == @another_window.frame.origin.x + 10
984
+ @window.frame.origin.y.should == @another_window.frame.origin.y + @another_window.frame.size.height + 20
985
+ @window.frame.size.width.should == 22
986
+ @window.frame.size.height.should == 12
987
+ end
988
+
989
+ it 'should support setting the frame via `above(window, right:up:width:height:)`' do
990
+ @layout.context(@window) do
991
+ retval = @layout.frame @layout.above(@another_window, right: 10, up: 20, width: 22, height: 12)
992
+ retval.should == @window.frame
993
+ end
994
+ @window.frame.origin.x.should == @another_window.frame.origin.x + 10
995
+ @window.frame.origin.y.should == @another_window.frame.origin.y + @another_window.frame.size.height + 20
996
+ @window.frame.size.width.should == 22
997
+ @window.frame.size.height.should == 12
998
+ end
999
+
1000
+ it 'should support setting the frame via `above(window, left:down:width:height:)`' do
1001
+ @layout.context(@window) do
1002
+ retval = @layout.frame @layout.above(@another_window, left: 10, down: 20, width: 22, height: 12)
1003
+ retval.should == @window.frame
1004
+ end
1005
+ @window.frame.origin.x.should == @another_window.frame.origin.x - 10
1006
+ @window.frame.origin.y.should == @another_window.frame.origin.y + @another_window.frame.size.height - 20
1007
+ @window.frame.size.width.should == 22
1008
+ @window.frame.size.height.should == 12
1009
+ end
1010
+
1011
+ it 'should support setting the frame via `below(window)`' do
1012
+ @layout.context(@window) do
1013
+ retval = @layout.frame @layout.below(@another_window)
1014
+ retval.should == @window.frame
1015
+ end
1016
+ @window.frame.origin.x.should == @another_window.frame.origin.x
1017
+ @window.frame.origin.y.should == @another_window.frame.origin.y - @window.frame.size.height
1018
+ @window.frame.size.width.should == @window.frame.size.width
1019
+ @window.frame.size.height.should == @window.frame.size.height
1020
+ end
1021
+
1022
+ it 'should support setting the frame via `below(window)` and ignore view origin' do
1023
+ f = @window.frame
1024
+ f.origin.x = 10
1025
+ f.origin.y = 10
1026
+ @window.setFrame(f, display: false)
1027
+
1028
+ @layout.context(@window) do
1029
+ retval = @layout.frame @layout.below(@another_window)
1030
+ retval.should == @window.frame
1031
+ end
1032
+ @window.frame.origin.x.should == @another_window.frame.origin.x
1033
+ @window.frame.origin.y.should == @another_window.frame.origin.y - @window.frame.size.height
1034
+ @window.frame.size.width.should == @window.frame.size.width
1035
+ @window.frame.size.height.should == @window.frame.size.height
1036
+ end
1037
+
1038
+ it 'should support setting the frame via `below(view, up:)`' do
1039
+ @layout.context(@window) do
1040
+ retval = @layout.frame @layout.below(@another_window, up: 8)
1041
+ retval.should == @window.frame
1042
+ end
1043
+ @window.frame.origin.x.should == @another_window.frame.origin.x
1044
+ @window.frame.origin.y.should == @another_window.frame.origin.y - @window.frame.size.height + 8
1045
+ @window.frame.size.width.should == @window.frame.size.width
1046
+ @window.frame.size.height.should == @window.frame.size.height
1047
+ end
1048
+
1049
+ it 'should support setting the frame via `below(view, width:height:)`' do
1050
+ @layout.context(@window) do
1051
+ retval = @layout.frame @layout.below(@another_window, width: 10, height: 20)
1052
+ retval.should == @window.frame
1053
+ end
1054
+ @window.frame.origin.x.should == @another_window.frame.origin.x
1055
+ @window.frame.origin.y.should == @another_window.frame.origin.y - @window.frame.size.height
1056
+ @window.frame.size.width.should == 10
1057
+ @window.frame.size.height.should == 20
1058
+ end
1059
+
1060
+ it 'should support setting the frame via `below(view, x:y:width:height:)`' do
1061
+ @layout.context(@window) do
1062
+ retval = @layout.frame @layout.below(@another_window, x: 10, y: 20, width: 22, height: 12)
1063
+ retval.should == @window.frame
1064
+ end
1065
+ @window.frame.origin.x.should == @another_window.frame.origin.x + 10
1066
+ @window.frame.origin.y.should == @another_window.frame.origin.y - @window.frame.size.height + 20
1067
+ @window.frame.size.width.should == 22
1068
+ @window.frame.size.height.should == 12
1069
+ end
1070
+
1071
+ it 'should support setting the frame via `below(view, right:up:width:height:)`' do
1072
+ @layout.context(@window) do
1073
+ retval = @layout.frame @layout.below(@another_window, right: 10, up: 20, width: 22, height: 12)
1074
+ retval.should == @window.frame
1075
+ end
1076
+ @window.frame.origin.x.should == @another_window.frame.origin.x + 10
1077
+ @window.frame.origin.y.should == @another_window.frame.origin.y - @window.frame.size.height + 20
1078
+ @window.frame.size.width.should == 22
1079
+ @window.frame.size.height.should == 12
1080
+ end
1081
+
1082
+ it 'should support setting the frame via `below(view, left:down:width:height:)`' do
1083
+ @layout.context(@window) do
1084
+ retval = @layout.frame @layout.below(@another_window, left: 10, down: 20, width: 22, height: 12)
1085
+ retval.should == @window.frame
1086
+ end
1087
+ @window.frame.origin.x.should == @another_window.frame.origin.x - 10
1088
+ @window.frame.origin.y.should == @another_window.frame.origin.y - @window.frame.size.height - 20
1089
+ @window.frame.size.width.should == 22
1090
+ @window.frame.size.height.should == 12
1091
+ end
1092
+
1093
+ it 'should support setting the frame via `before(window)`' do
1094
+ @layout.context(@window) do
1095
+ retval = @layout.frame @layout.before(@another_window)
1096
+ retval.should == @window.frame
1097
+ end
1098
+ @window.frame.origin.x.should == @another_window.frame.origin.x - @window.frame.size.width
1099
+ @window.frame.origin.y.should == @another_window.frame.origin.y
1100
+ @window.frame.size.width.should == @window.frame.size.width
1101
+ @window.frame.size.height.should == @window.frame.size.height
1102
+ end
1103
+
1104
+ it 'should support setting the frame via `before(window)` and ignore view origin' do
1105
+ f = @window.frame
1106
+ f.origin.x = 10
1107
+ f.origin.y = 10
1108
+ @window.setFrame(f, display: false)
1109
+
1110
+ @layout.context(@window) do
1111
+ retval = @layout.frame @layout.before(@another_window)
1112
+ retval.should == @window.frame
1113
+ end
1114
+ @window.frame.origin.x.should == @another_window.frame.origin.x - @window.frame.size.width
1115
+ @window.frame.origin.y.should == @another_window.frame.origin.y
1116
+ @window.frame.size.width.should == @window.frame.size.width
1117
+ @window.frame.size.height.should == @window.frame.size.height
1118
+ end
1119
+
1120
+ it 'should support setting the frame via `before(view, left:)`' do
1121
+ @layout.context(@window) do
1122
+ retval = @layout.frame @layout.before(@another_window, left: 8)
1123
+ retval.should == @window.frame
1124
+ end
1125
+ @window.frame.origin.x.should == @another_window.frame.origin.x - @window.frame.size.width - 8
1126
+ @window.frame.origin.y.should == @another_window.frame.origin.y
1127
+ @window.frame.size.width.should == @window.frame.size.width
1128
+ @window.frame.size.height.should == @window.frame.size.height
1129
+ end
1130
+
1131
+ it 'should support setting the frame via `before(view, width:height:)`' do
1132
+ @layout.context(@window) do
1133
+ retval = @layout.frame @layout.before(@another_window, width: 10, height: 20)
1134
+ retval.should == @window.frame
1135
+ end
1136
+ @window.frame.origin.x.should == @another_window.frame.origin.x - @window.frame.size.width
1137
+ @window.frame.origin.y.should == @another_window.frame.origin.y
1138
+ @window.frame.size.width.should == 10
1139
+ @window.frame.size.height.should == 20
1140
+ end
1141
+
1142
+ it 'should support setting the frame via `before(view, x:y:width:height:)`' do
1143
+ @layout.context(@window) do
1144
+ retval = @layout.frame @layout.before(@another_window, x: 10, y: 20, width: 22, height: 12)
1145
+ retval.should == @window.frame
1146
+ end
1147
+ @window.frame.origin.x.should == @another_window.frame.origin.x - @window.frame.size.width + 10
1148
+ @window.frame.origin.y.should == @another_window.frame.origin.y + 20
1149
+ @window.frame.size.width.should == 22
1150
+ @window.frame.size.height.should == 12
1151
+ end
1152
+
1153
+ it 'should support setting the frame via `left_of(window)`' do
1154
+ before = nil
1155
+ left_of = nil
1156
+ @layout.context(@window) do
1157
+ before = @layout.before(@another_window)
1158
+ left_of = @layout.left_of(@another_window)
1159
+ end
1160
+ left_of.origin.x.should == before.origin.x
1161
+ left_of.origin.y.should == before.origin.y
1162
+ left_of.size.width.should == before.size.width
1163
+ left_of.size.height.should == before.size.height
1164
+ end
1165
+
1166
+ it 'should support setting the frame via `after(window)`' do
1167
+ @layout.context(@window) do
1168
+ retval = @layout.frame @layout.after(@another_window)
1169
+ retval.should == @window.frame
1170
+ end
1171
+ @window.frame.origin.x.should == @another_window.frame.origin.x + @another_window.frame.size.width
1172
+ @window.frame.origin.y.should == @another_window.frame.origin.y
1173
+ @window.frame.size.width.should == @window.frame.size.width
1174
+ @window.frame.size.height.should == @window.frame.size.height
1175
+ end
1176
+
1177
+ it 'should support setting the frame via `after(window)` and ignore view origin' do
1178
+ f = @window.frame
1179
+ f.origin.x = 10
1180
+ f.origin.y = 10
1181
+ @window.setFrame(f, display: false)
1182
+
1183
+ @layout.context(@window) do
1184
+ retval = @layout.frame @layout.after(@another_window)
1185
+ retval.should == @window.frame
1186
+ end
1187
+ @window.frame.origin.x.should == @another_window.frame.origin.x + @another_window.frame.size.width
1188
+ @window.frame.origin.y.should == @another_window.frame.origin.y
1189
+ @window.frame.size.width.should == @window.frame.size.width
1190
+ @window.frame.size.height.should == @window.frame.size.height
1191
+ end
1192
+
1193
+ it 'should support setting the frame via `after(view, right:)`' do
1194
+ @layout.context(@window) do
1195
+ retval = @layout.frame @layout.after(@another_window, right: 8)
1196
+ retval.should == @window.frame
1197
+ end
1198
+ @window.frame.origin.x.should == @another_window.frame.origin.x + @another_window.frame.size.width + 8
1199
+ @window.frame.origin.y.should == @another_window.frame.origin.y
1200
+ @window.frame.size.width.should == @window.frame.size.width
1201
+ @window.frame.size.height.should == @window.frame.size.height
1202
+ end
1203
+
1204
+ it 'should support setting the frame via `after(view, width:height:)`' do
1205
+ @layout.context(@window) do
1206
+ retval = @layout.frame @layout.after(@another_window, width: 10, height: 20)
1207
+ retval.should == @window.frame
1208
+ end
1209
+ @window.frame.origin.x.should == @another_window.frame.origin.x + @another_window.frame.size.width
1210
+ @window.frame.origin.y.should == @another_window.frame.origin.y
1211
+ @window.frame.size.width.should == 10
1212
+ @window.frame.size.height.should == 20
1213
+ end
1214
+
1215
+ it 'should support setting the frame via `after(view, x:y:width:height:)`' do
1216
+ @layout.context(@window) do
1217
+ retval = @layout.frame @layout.after(@another_window, x: 10, y: 20, width: 22, height: 12)
1218
+ retval.should == @window.frame
1219
+ end
1220
+ @window.frame.origin.x.should == @another_window.frame.origin.x + @another_window.frame.size.width + 10
1221
+ @window.frame.origin.y.should == @another_window.frame.origin.y + 20
1222
+ @window.frame.size.width.should == 22
1223
+ @window.frame.size.height.should == 12
1224
+ end
1225
+
1226
+ it 'should support setting the frame via `right_of(window)`' do
1227
+ after = nil
1228
+ right_of = nil
1229
+ @layout.context(@window) do
1230
+ after = @layout.after(@another_window)
1231
+ right_of = @layout.right_of(@another_window)
1232
+ end
1233
+ right_of.origin.x.should == after.origin.x
1234
+ right_of.origin.y.should == after.origin.y
1235
+ right_of.size.width.should == after.size.width
1236
+ right_of.size.height.should == after.size.height
1237
+ end
1238
+
1239
+ it 'should support setting the frame via `relative_to(window)`' do
1240
+ @layout.context(@window) do
1241
+ retval = @layout.frame @layout.relative_to(@another_window, {})
1242
+ retval.should == @window.frame
1243
+ end
1244
+ @window.frame.origin.x.should == @another_window.frame.origin.x
1245
+ @window.frame.origin.y.should == @another_window.frame.origin.y
1246
+ @window.frame.size.width.should == @window.frame.size.width
1247
+ @window.frame.size.height.should == @window.frame.size.height
1248
+ end
1249
+
1250
+ it 'should support setting the frame via `relative_to(window)` and ignore view origin' do
1251
+ f = @window.frame
1252
+ f.origin.x = 10
1253
+ f.origin.y = 10
1254
+ @window.setFrame(f, display: false)
1255
+
1256
+ @layout.context(@window) do
1257
+ retval = @layout.frame @layout.relative_to(@another_window, {})
1258
+ retval.should == @window.frame
1259
+ end
1260
+ @window.frame.origin.x.should == @another_window.frame.origin.x
1261
+ @window.frame.origin.y.should == @another_window.frame.origin.y
1262
+ @window.frame.size.width.should == @window.frame.size.width
1263
+ @window.frame.size.height.should == @window.frame.size.height
1264
+ end
1265
+
1266
+ it 'should support setting the frame via `relative_to(view, width:height:)`' do
1267
+ @layout.context(@window) do
1268
+ retval = @layout.frame @layout.relative_to(@another_window, width: 10, height: 20)
1269
+ retval.should == @window.frame
1270
+ end
1271
+ @window.frame.origin.x.should == @another_window.frame.origin.x
1272
+ @window.frame.origin.y.should == @another_window.frame.origin.y
1273
+ @window.frame.size.width.should == 10
1274
+ @window.frame.size.height.should == 20
1275
+ end
1276
+
1277
+ it 'should support setting the frame via `relative_to(view, x:y:width:height:)`' do
1278
+ @layout.context(@window) do
1279
+ retval = @layout.frame @layout.relative_to(@another_window, x: 10, y: 20, width: 22, height: 12)
1280
+ retval.should == @window.frame
1281
+ end
1282
+ @window.frame.origin.x.should == @another_window.frame.origin.x + 10
1283
+ @window.frame.origin.y.should == @another_window.frame.origin.y + 20
1284
+ @window.frame.size.width.should == 22
1285
+ @window.frame.size.height.should == 12
1286
+ end
1287
+
1288
+ end