shoes-swt 4.0.0.pre2 → 4.0.0.pre3

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 (227) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -200
  3. data/Rakefile +1 -0
  4. data/bin/shoes-swt +11 -0
  5. data/lib/shoes/swt.rb +5 -2
  6. data/lib/shoes/swt/animation.rb +2 -2
  7. data/lib/shoes/swt/app.rb +45 -50
  8. data/lib/shoes/swt/arc.rb +7 -7
  9. data/lib/shoes/swt/background.rb +1 -1
  10. data/lib/shoes/swt/border.rb +1 -2
  11. data/lib/shoes/swt/click_listener.rb +70 -0
  12. data/lib/shoes/swt/color.rb +5 -5
  13. data/lib/shoes/swt/common/clickable.rb +2 -53
  14. data/lib/shoes/swt/common/fill.rb +1 -1
  15. data/lib/shoes/swt/common/painter.rb +7 -7
  16. data/lib/shoes/swt/common/painter_updates_position.rb +2 -2
  17. data/lib/shoes/swt/common/remove.rb +2 -3
  18. data/lib/shoes/swt/common/resource.rb +1 -1
  19. data/lib/shoes/swt/common/selection_listener.rb +14 -14
  20. data/lib/shoes/swt/common/stroke.rb +1 -2
  21. data/lib/shoes/swt/common/update_position.rb +1 -1
  22. data/lib/shoes/swt/dialog.rb +3 -45
  23. data/lib/shoes/swt/disposed_protection.rb +1 -1
  24. data/lib/shoes/swt/download.rb +0 -1
  25. data/lib/shoes/swt/font.rb +4 -4
  26. data/lib/shoes/swt/generate-backend.rb +9 -0
  27. data/lib/shoes/swt/gradient.rb +17 -16
  28. data/lib/shoes/swt/image.rb +3 -5
  29. data/lib/shoes/swt/image_pattern.rb +2 -2
  30. data/lib/shoes/swt/input_box.rb +3 -3
  31. data/lib/shoes/swt/key_listener.rb +6 -6
  32. data/lib/shoes/swt/line.rb +4 -24
  33. data/lib/shoes/swt/link.rb +2 -2
  34. data/lib/shoes/swt/link_segment.rb +3 -3
  35. data/lib/shoes/swt/list_box.rb +4 -4
  36. data/lib/shoes/swt/mouse_move_listener.rb +6 -5
  37. data/lib/shoes/swt/oval.rb +2 -3
  38. data/lib/shoes/swt/packager.rb +82 -0
  39. data/lib/shoes/swt/progress.rb +2 -2
  40. data/lib/shoes/swt/radio.rb +0 -2
  41. data/lib/shoes/swt/radio_group.rb +54 -54
  42. data/lib/shoes/swt/rect_painter.rb +7 -7
  43. data/lib/shoes/swt/redrawing_aspect.rb +32 -34
  44. data/lib/shoes/swt/shape.rb +1 -1
  45. data/lib/shoes/swt/shoes_layout.rb +5 -2
  46. data/lib/shoes/swt/slot.rb +2 -3
  47. data/lib/shoes/swt/sound.rb +17 -22
  48. data/lib/shoes/swt/star.rb +30 -8
  49. data/lib/shoes/swt/swt_button.rb +3 -2
  50. data/lib/shoes/swt/text_block.rb +3 -3
  51. data/lib/shoes/swt/text_block/cursor_painter.rb +2 -2
  52. data/lib/shoes/swt/text_block/fitter.rb +5 -3
  53. data/lib/shoes/swt/text_block/painter.rb +9 -9
  54. data/lib/shoes/swt/text_block/text_font_factory.rb +3 -3
  55. data/lib/shoes/swt/text_block/text_segment.rb +9 -9
  56. data/lib/shoes/swt/text_block/text_segment_collection.rb +2 -0
  57. data/lib/shoes/swt/text_block/text_style_factory.rb +9 -3
  58. data/lib/shoes/swt/timer.rb +1 -1
  59. data/lib/shoes/swt/version.rb +1 -1
  60. data/shoes-swt.gemspec +7 -6
  61. data/spec/shoes/cli_spec.rb +2 -2
  62. data/spec/{swt_shoes → shoes/swt}/animation_spec.rb +1 -1
  63. data/spec/{swt_shoes → shoes/swt}/app_spec.rb +36 -3
  64. data/spec/{swt_shoes → shoes/swt}/arc_spec.rb +1 -1
  65. data/spec/{swt_shoes → shoes/swt}/background_spec.rb +1 -1
  66. data/spec/{swt_shoes → shoes/swt}/border_spec.rb +1 -1
  67. data/spec/{swt_shoes → shoes/swt}/button_spec.rb +1 -1
  68. data/spec/{swt_shoes → shoes/swt}/check_spec.rb +1 -1
  69. data/spec/shoes/swt/click_listener_spec.rb +162 -0
  70. data/spec/{swt_shoes → shoes/swt}/color_factory_spec.rb +1 -1
  71. data/spec/{swt_shoes → shoes/swt}/color_spec.rb +1 -1
  72. data/spec/{swt_shoes → shoes/swt}/common/painter_spec.rb +1 -1
  73. data/spec/{swt_shoes → shoes/swt}/common/remove_spec.rb +4 -11
  74. data/spec/{swt_shoes → shoes/swt}/configuration_spec.rb +1 -1
  75. data/spec/{swt_shoes → shoes/swt}/dialog_spec.rb +1 -7
  76. data/spec/{swt_shoes → shoes/swt}/disposed_protection_spec.rb +0 -0
  77. data/spec/{swt_shoes → shoes/swt}/flow_spec.rb +1 -1
  78. data/spec/{swt_shoes → shoes/swt}/font_spec.rb +1 -1
  79. data/spec/{swt_shoes → shoes/swt}/gradient_spec.rb +1 -1
  80. data/spec/{swt_shoes → shoes/swt}/image_pattern_spec.rb +1 -1
  81. data/spec/{swt_shoes → shoes/swt}/image_spec.rb +4 -3
  82. data/spec/{swt_shoes → shoes/swt}/input_box_spec.rb +1 -1
  83. data/spec/{swt_shoes → shoes/swt}/integration_spec.rb +1 -1
  84. data/spec/{swt_shoes → shoes/swt}/key_listener_spec.rb +1 -1
  85. data/spec/{swt_shoes → shoes/swt}/line_spec.rb +4 -8
  86. data/spec/{swt_shoes → shoes/swt}/link_segment_spec.rb +1 -1
  87. data/spec/{swt_shoes → shoes/swt}/link_spec.rb +3 -10
  88. data/spec/{swt_shoes → shoes/swt}/list_box_spec.rb +5 -3
  89. data/spec/{swt_shoes → shoes/swt}/minimal.png +0 -0
  90. data/spec/{swt_shoes → shoes/swt}/mouse_move_listener_spec.rb +1 -1
  91. data/spec/{swt_shoes → shoes/swt}/oval_spec.rb +1 -1
  92. data/spec/{swt_shoes → shoes/swt}/progress_spec.rb +1 -1
  93. data/spec/{swt_shoes → shoes/swt}/radio_group_spec.rb +1 -1
  94. data/spec/{swt_shoes → shoes/swt}/radio_spec.rb +1 -1
  95. data/spec/{swt_shoes → shoes/swt}/rect_painter_spec.rb +1 -1
  96. data/spec/{swt_shoes → shoes/swt}/rect_spec.rb +1 -1
  97. data/spec/{swt_shoes → shoes/swt}/shape_spec.rb +1 -1
  98. data/spec/{swt_shoes → shoes/swt}/shared_examples/button.rb +0 -0
  99. data/spec/shoes/swt/shared_examples/clickable.rb +13 -0
  100. data/spec/{swt_shoes → shoes/swt}/shared_examples/movable.rb +0 -0
  101. data/spec/{swt_shoes → shoes/swt}/shared_examples/paintable.rb +0 -0
  102. data/spec/{swt_shoes → shoes/swt}/shared_examples/painter.rb +0 -0
  103. data/spec/{swt_shoes → shoes/swt}/shared_examples/pattern.rb +0 -0
  104. data/spec/{swt_shoes → shoes/swt}/shared_examples/removable.rb +1 -3
  105. data/spec/{swt_shoes → shoes/swt}/shared_examples/swt_app_context.rb +11 -3
  106. data/spec/{swt_shoes → shoes/swt}/shared_examples/visibility.rb +0 -0
  107. data/spec/{swt_shoes → shoes/swt}/shell_control_listener_spec.rb +1 -1
  108. data/spec/{swt_shoes → shoes/swt}/slot_spec.rb +1 -1
  109. data/spec/{swt_shoes → shoes/swt}/spec_helper.rb +0 -1
  110. data/spec/{swt_shoes → shoes/swt}/star_spec.rb +1 -1
  111. data/spec/{swt_shoes → shoes/swt}/text_block/centered_text_segment_spec.rb +1 -1
  112. data/spec/{swt_shoes → shoes/swt}/text_block/cursor_painter_spec.rb +8 -4
  113. data/spec/{swt_shoes → shoes/swt}/text_block/fitter_spec.rb +5 -5
  114. data/spec/{swt_shoes → shoes/swt}/text_block/painter_spec.rb +1 -1
  115. data/spec/{swt_shoes → shoes/swt}/text_block/text_font_factory_spec.rb +1 -1
  116. data/spec/{swt_shoes → shoes/swt}/text_block/text_segment_collection_spec.rb +7 -2
  117. data/spec/{swt_shoes → shoes/swt}/text_block/text_segment_spec.rb +1 -1
  118. data/spec/{swt_shoes → shoes/swt}/text_block_spec.rb +2 -5
  119. data/spec/spec_helper.rb +7 -3
  120. metadata +132 -331
  121. data/CHANGELOG +0 -84
  122. data/Gemfile +0 -24
  123. data/Guardfile +0 -11
  124. data/manifests/common.rb +0 -34
  125. data/manifests/shoes-swt.rb +0 -29
  126. data/spec/code_coverage.rb +0 -14
  127. data/spec/shoes/animation_spec.rb +0 -65
  128. data/spec/shoes/app_spec.rb +0 -484
  129. data/spec/shoes/arc_spec.rb +0 -51
  130. data/spec/shoes/background_spec.rb +0 -53
  131. data/spec/shoes/border_spec.rb +0 -47
  132. data/spec/shoes/builtin_methods_spec.rb +0 -110
  133. data/spec/shoes/button_spec.rb +0 -44
  134. data/spec/shoes/check_spec.rb +0 -35
  135. data/spec/shoes/color_spec.rb +0 -408
  136. data/spec/shoes/common/inspect_spec.rb +0 -26
  137. data/spec/shoes/common/remove_spec.rb +0 -38
  138. data/spec/shoes/common/style_normalizer_spec.rb +0 -28
  139. data/spec/shoes/common/style_spec.rb +0 -147
  140. data/spec/shoes/configuration_spec.rb +0 -36
  141. data/spec/shoes/constants_spec.rb +0 -38
  142. data/spec/shoes/dialog_spec.rb +0 -163
  143. data/spec/shoes/dimension_spec.rb +0 -407
  144. data/spec/shoes/dimensions_spec.rb +0 -837
  145. data/spec/shoes/download_spec.rb +0 -142
  146. data/spec/shoes/flow_spec.rb +0 -133
  147. data/spec/shoes/font_spec.rb +0 -37
  148. data/spec/shoes/framework_learning_spec.rb +0 -30
  149. data/spec/shoes/gradient_spec.rb +0 -32
  150. data/spec/shoes/helpers/fake_element.rb +0 -17
  151. data/spec/shoes/helpers/inspect_helpers.rb +0 -5
  152. data/spec/shoes/helpers/sample17_helper.rb +0 -66
  153. data/spec/shoes/image_spec.rb +0 -49
  154. data/spec/shoes/images/shoe.jpg +0 -0
  155. data/spec/shoes/input_box_spec.rb +0 -80
  156. data/spec/shoes/integration_spec.rb +0 -20
  157. data/spec/shoes/internal_app_spec.rb +0 -141
  158. data/spec/shoes/keypress_spec.rb +0 -11
  159. data/spec/shoes/keyrelease_spec.rb +0 -12
  160. data/spec/shoes/line_spec.rb +0 -49
  161. data/spec/shoes/link_spec.rb +0 -105
  162. data/spec/shoes/list_box_spec.rb +0 -74
  163. data/spec/shoes/logger/ruby_spec.rb +0 -8
  164. data/spec/shoes/logger_spec.rb +0 -45
  165. data/spec/shoes/oval_spec.rb +0 -24
  166. data/spec/shoes/point_spec.rb +0 -71
  167. data/spec/shoes/progress_spec.rb +0 -54
  168. data/spec/shoes/radio_spec.rb +0 -32
  169. data/spec/shoes/rect_spec.rb +0 -39
  170. data/spec/shoes/renamed_delegate_spec.rb +0 -70
  171. data/spec/shoes/shape_spec.rb +0 -95
  172. data/spec/shoes/shared_examples/button.rb +0 -6
  173. data/spec/shoes/shared_examples/changeable.rb +0 -26
  174. data/spec/shoes/shared_examples/clickable.rb +0 -5
  175. data/spec/shoes/shared_examples/common_methods.rb +0 -35
  176. data/spec/shoes/shared_examples/dimensions.rb +0 -32
  177. data/spec/shoes/shared_examples/dsl.rb +0 -44
  178. data/spec/shoes/shared_examples/dsl/animate.rb +0 -29
  179. data/spec/shoes/shared_examples/dsl/arc.rb +0 -45
  180. data/spec/shoes/shared_examples/dsl/background.rb +0 -26
  181. data/spec/shoes/shared_examples/dsl/border.rb +0 -10
  182. data/spec/shoes/shared_examples/dsl/button.rb +0 -5
  183. data/spec/shoes/shared_examples/dsl/cap.rb +0 -6
  184. data/spec/shoes/shared_examples/dsl/check.rb +0 -11
  185. data/spec/shoes/shared_examples/dsl/edit_box.rb +0 -8
  186. data/spec/shoes/shared_examples/dsl/edit_line.rb +0 -8
  187. data/spec/shoes/shared_examples/dsl/editable_element.rb +0 -29
  188. data/spec/shoes/shared_examples/dsl/fill.rb +0 -27
  189. data/spec/shoes/shared_examples/dsl/flow.rb +0 -15
  190. data/spec/shoes/shared_examples/dsl/gradient.rb +0 -62
  191. data/spec/shoes/shared_examples/dsl/image.rb +0 -21
  192. data/spec/shoes/shared_examples/dsl/line.rb +0 -9
  193. data/spec/shoes/shared_examples/dsl/nofill.rb +0 -6
  194. data/spec/shoes/shared_examples/dsl/nostroke.rb +0 -6
  195. data/spec/shoes/shared_examples/dsl/oval.rb +0 -88
  196. data/spec/shoes/shared_examples/dsl/pattern.rb +0 -34
  197. data/spec/shoes/shared_examples/dsl/progress.rb +0 -7
  198. data/spec/shoes/shared_examples/dsl/rect.rb +0 -92
  199. data/spec/shoes/shared_examples/dsl/rgb.rb +0 -26
  200. data/spec/shoes/shared_examples/dsl/shape.rb +0 -21
  201. data/spec/shoes/shared_examples/dsl/star.rb +0 -48
  202. data/spec/shoes/shared_examples/dsl/stroke.rb +0 -30
  203. data/spec/shoes/shared_examples/dsl/strokewidth.rb +0 -19
  204. data/spec/shoes/shared_examples/dsl/style.rb +0 -32
  205. data/spec/shoes/shared_examples/dsl/text_elements.rb +0 -81
  206. data/spec/shoes/shared_examples/dsl/video.rb +0 -5
  207. data/spec/shoes/shared_examples/dsl_app_context.rb +0 -8
  208. data/spec/shoes/shared_examples/hover_leave.rb +0 -11
  209. data/spec/shoes/shared_examples/parent.rb +0 -6
  210. data/spec/shoes/shared_examples/scroll.rb +0 -41
  211. data/spec/shoes/shared_examples/shared_element_method.rb +0 -60
  212. data/spec/shoes/shared_examples/slot.rb +0 -331
  213. data/spec/shoes/shared_examples/state.rb +0 -19
  214. data/spec/shoes/shared_examples/style.rb +0 -82
  215. data/spec/shoes/slot_spec.rb +0 -130
  216. data/spec/shoes/sound_spec.rb +0 -15
  217. data/spec/shoes/span_spec.rb +0 -112
  218. data/spec/shoes/spec_helper.rb +0 -24
  219. data/spec/shoes/stack_spec.rb +0 -79
  220. data/spec/shoes/star_spec.rb +0 -31
  221. data/spec/shoes/text_block_dimensions_spec.rb +0 -75
  222. data/spec/shoes/text_block_spec.rb +0 -270
  223. data/spec/shoes/url_spec.rb +0 -68
  224. data/spec/shoes/widget_spec.rb +0 -70
  225. data/spec/shoes_spec.rb +0 -44
  226. data/spec/swt_shoes/shared_examples/clickable.rb +0 -85
  227. data/spec/swt_shoes/sound.rb +0 -10
@@ -1,6 +0,0 @@
1
- shared_examples "checkable" do
2
- it { is_expected.to respond_to :checked= }
3
- it { is_expected.to respond_to :checked? }
4
- it { is_expected.to respond_to :focus }
5
- it { is_expected.to respond_to :click }
6
- end
@@ -1,26 +0,0 @@
1
- shared_examples "an element that can respond to change" do
2
- describe "when passing a block to the constructor" do
3
- it "should notify the block of change events" do
4
- expect(input_block).to receive(:call).with(subject)
5
- subject.call_change_listeners
6
- end
7
- end
8
-
9
- describe "when setting up a callback with #change" do
10
- it "should notify the callback of change events" do
11
- called = false
12
- subject.change do |element|
13
- called = true
14
- end
15
- subject.call_change_listeners
16
- expect(called).to be_truthy
17
- end
18
-
19
- it "should pass the element itself to the callback" do
20
- subject.change do |element|
21
- expect(element).to eq(subject)
22
- end
23
- subject.call_change_listeners
24
- end
25
- end
26
- end
@@ -1,5 +0,0 @@
1
- shared_examples "clickable object" do
2
- it { is_expected.to respond_to :click }
3
- it { is_expected.to respond_to :release }
4
- it { is_expected.to respond_to :register_click }
5
- end
@@ -1,35 +0,0 @@
1
- shared_examples_for "movable object" do
2
- it "moves" do
3
- subject.instance_variable_set(:@app, app)
4
- expect(subject.move(300, 200)).to eq(subject)
5
- expect(subject.left).to eq(300)
6
- expect(subject.top).to eq(200)
7
- end
8
-
9
- describe "displacing" do
10
- it "displaces backend object" do
11
- expect(subject.gui).to receive(:update_position)
12
- subject.displace(300, 200)
13
- end
14
-
15
- it "does not change reported values of #left and #top" do
16
- # no error from calling set location with nil values due to unset values
17
- allow(subject.gui).to receive :update_position
18
- original_left = subject.left
19
- original_top = subject.top
20
- subject.displace(300, 200)
21
- expect(subject.left).to eq(original_left)
22
- expect(subject.top).to eq(original_top)
23
- end
24
- end
25
- end
26
-
27
- shared_examples_for "left, top as center" do | *params |
28
- let(:centered_object) { described_class.new(app, parent, left, top, width, height, *params, :center => true) }
29
- it "should now be located somewhere" do
30
- expect(centered_object.left).to eq(left-(width/2))
31
- expect(centered_object.top).to eq(top-(height/2))
32
- expect(centered_object.width).to eq(width)
33
- expect(centered_object.height).to eq(height)
34
- end
35
- end
@@ -1,32 +0,0 @@
1
- shared_examples_for "object with dimensions" do
2
- it "should initialize" do
3
- expect(subject.left).to eq(left)
4
- expect(subject.top).to eq(top)
5
- expect(subject.width).to eq(width)
6
- expect(subject.height).to eq(height)
7
- end
8
- end
9
-
10
- shared_examples_for "object with relative dimensions" do
11
- let(:relative_width) { 0.5 }
12
- let(:relative_height) { 0.5 }
13
- let(:relative_opts) { {left: left, top: top, width: relative_width, height: relative_height} }
14
-
15
- it "should initialize based on parent dimensions" do
16
- expect(subject.left).to eq left
17
- expect(subject.top).to eq top
18
- expect(subject.width).to be_within(1).of(parent.element_width / 2)
19
- expect(subject.height).to be_within(1).of(parent.element_height / 2)
20
- end
21
- end
22
-
23
- shared_examples_for "object with negative dimensions" do
24
- let(:negative_opts) { {left: left, top: top, width: -width, height: -height} }
25
-
26
- it "should initialize based on parent dimensions" do
27
- expect(subject.left).to eq(left)
28
- expect(subject.top).to eq(top)
29
- expect(subject.width).to eq(parent.element_width - width)
30
- expect(subject.height).to eq(parent.element_height - height)
31
- end
32
- end
@@ -1,44 +0,0 @@
1
- # Shared examples for Shoes::App and Shoes::Slot (flow and stack).
2
- # If DSL methods can be called with multiple number of arguments,
3
- # and if they set certain defaults, then that what needs to be tested
4
- # here.
5
- # There are individual specs for the different Shoes elements, so
6
- # we don't need to test how they work in details. Here we just test that
7
- # the DSL methods construct elements correctly.
8
- shared_examples "DSL container" do
9
- let(:dsl) { app }
10
-
11
- %w[
12
- animate
13
- arc
14
- background
15
- button
16
- border
17
- cap
18
- check
19
- edit_box
20
- edit_line
21
- fill
22
- flow
23
- gradient
24
- image
25
- line
26
- nofill
27
- nostroke
28
- oval
29
- pattern
30
- progress
31
- rect
32
- rgb
33
- shape
34
- star
35
- stroke
36
- strokewidth
37
- style
38
- video
39
- ].each do |method|
40
- include_examples "#{method} DSL method"
41
- end
42
-
43
- include_examples "text element DSL methods"
44
- end
@@ -1,29 +0,0 @@
1
- shared_examples_for "animate DSL method" do
2
- context "defaults" do
3
- let(:animation) { dsl.animate {} }
4
-
5
- it "is a Shoes::Animation" do
6
- expect(animation).to be_an_instance_of(Shoes::Animation)
7
- end
8
-
9
- it "framerate is 10" do
10
- expect(animation.framerate).to eq 10
11
- end
12
- end
13
-
14
- context "with numeric argument" do
15
- let(:animation) { dsl.animate(13) {} }
16
-
17
- it "sets framerate" do
18
- expect(animation.framerate).to eq(13)
19
- end
20
- end
21
-
22
- context "with hash argument" do
23
- let(:animation) { dsl.animate(:framerate => 17) {} }
24
-
25
- it "sets framerate" do
26
- expect(animation.framerate).to eq(17)
27
- end
28
- end
29
- end
@@ -1,45 +0,0 @@
1
- shared_context "style context" do
2
- let(:fill_color) { Shoes::COLORS.fetch(:tomato) }
3
- let(:stroke_color) { Shoes::COLORS.fetch(:chartreuse) }
4
-
5
- before :each do
6
- subject.fill fill_color
7
- subject.stroke stroke_color
8
- end
9
- end
10
-
11
- shared_examples_for "persistent stroke" do
12
- include_context "style context"
13
-
14
- it "passes to element" do
15
- expect(element.stroke).to eq(stroke_color)
16
- end
17
- end
18
-
19
- shared_examples_for "persistent fill" do
20
- include_context "style context"
21
-
22
- it "passes to element" do
23
- expect(element.fill).to eq(fill_color)
24
- end
25
- end
26
-
27
- shared_examples_for "arc DSL method" do
28
- let(:arc) { dsl.arc(13, 44, 200, 300, 0, Shoes::TWO_PI) }
29
-
30
- it "creates a Shoes::Arc" do
31
- expect(arc).to be_an_instance_of(Shoes::Arc)
32
- end
33
-
34
- it "raises an ArgumentError" do
35
- expect { dsl.arc(30) }.to raise_exception(ArgumentError)
36
- end
37
-
38
- it_behaves_like "persistent fill" do
39
- let(:element) { arc }
40
- end
41
-
42
- it_behaves_like "persistent stroke" do
43
- let(:element) { arc }
44
- end
45
- end
@@ -1,26 +0,0 @@
1
- shared_examples_for "background DSL method" do
2
- context "with a valid hex string" do
3
- it "sets color" do
4
- background = subject.background("#fff")
5
- expect(background.fill).to eq(Shoes::COLORS[:white])
6
- end
7
- end
8
-
9
- context "with an invalid hex string" do
10
- it 'raises an argument error' do
11
- expect{ subject.background('#ffq') }.to raise_error('Bad hex color: #ffq')
12
- end
13
- end
14
-
15
- context 'with no valid image' do
16
- it 'ignores the background' do
17
- expect{ subject.background('fake-shoes.jpg') }.not_to raise_error
18
- end
19
- end
20
-
21
- context 'with a valid image' do
22
- it 'creates a Shoes::Background' do
23
- expect(subject.background('static/shoes-icon.png')).to be_an_instance_of(Shoes::Background)
24
- end
25
- end
26
- end
@@ -1,10 +0,0 @@
1
- shared_examples_for "border DSL method" do
2
- context "with hex string" do
3
- let(:color) { "#ffffff" }
4
-
5
- it "sets color" do
6
- border = dsl.border(color)
7
- expect(border.stroke).to eq(Shoes::COLORS[:white])
8
- end
9
- end
10
- end
@@ -1,5 +0,0 @@
1
- shared_examples_for "button DSL method" do
2
- it "is created with a default text" do
3
- expect(dsl.button.text).to eq 'Button'
4
- end
5
- end
@@ -1,6 +0,0 @@
1
- shared_examples_for "cap DSL method" do
2
- it "sets the line cap" do
3
- dsl.cap :curve
4
- expect(dsl.style[:cap]).to eq(:curve)
5
- end
6
- end
@@ -1,11 +0,0 @@
1
- shared_examples_for 'check DSL method' do
2
- let(:checkbox) { dsl.check }
3
-
4
- it 'should be a checkbox' do
5
- expect(checkbox).to be_instance_of Shoes::Check
6
- end
7
-
8
- it 'should be unchecked by default' do
9
- expect(checkbox.checked?).to be_falsey
10
- end
11
- end
@@ -1,8 +0,0 @@
1
- shared_examples_for "edit_box DSL method" do
2
- context "edit_box" do
3
- include_examples "editable element" do
4
- let(:dsl_method) { :edit_box }
5
- let(:klazz) { Shoes::EditBox }
6
- end
7
- end
8
- end
@@ -1,8 +0,0 @@
1
- shared_examples_for "edit_line DSL method" do
2
- context "edit_line" do
3
- include_examples "editable element"
4
-
5
- let(:dsl_method) { :edit_line }
6
- let(:klazz) { Shoes::EditLine }
7
- end
8
- end
@@ -1,29 +0,0 @@
1
- shared_examples_for "editable element" do
2
- subject { super.public_send(dsl_method, *args) }
3
-
4
- describe "with no arguments" do
5
- let(:args) { [] }
6
- its(:text) { should == '' }
7
- its(:width) { should == klazz::STYLES[:width] }
8
- its(:height) { should == klazz::STYLES[:height] }
9
- end
10
-
11
- describe "with a single text argument" do
12
- let(:args) { ['Hello text here'] }
13
-
14
- its(:text) { should == 'Hello text here' }
15
- end
16
-
17
- describe "with a style hash" do
18
- let(:args) { [{width: 100, height: 50}] }
19
-
20
- its(:text) { should == '' }
21
- end
22
-
23
- describe "with a text argument and a style hash" do
24
- let(:args) { ['Hello text here', {width: 100, height: 50}] }
25
- its(:text) { should == 'Hello text here' }
26
- its(:width) { should == 100 }
27
- its(:height) { should == 50 }
28
- end
29
- end
@@ -1,27 +0,0 @@
1
- shared_examples_for "fill DSL method" do
2
- let(:color) { Shoes::COLORS.fetch :tomato }
3
-
4
- it "returns a color" do
5
- expect(dsl.fill(color).class).to eq(Shoes::Color)
6
- end
7
-
8
- # This works differently on a container than on a normal element
9
- it "sets on receiver" do
10
- dsl.fill color
11
- expect(dsl.style[:fill]).to eq(color)
12
- end
13
-
14
- it "applies to subsequently created objects" do
15
- dsl.fill color
16
- oval = dsl.oval(10, 10, 100, 100)
17
- expect(oval.fill).to eq(color)
18
- end
19
-
20
- context "with hex string" do
21
- let(:color) { "#fff" }
22
-
23
- it "sets the color" do
24
- expect(dsl.fill(color)).to eq(Shoes::COLORS[:white])
25
- end
26
- end
27
- end
@@ -1,15 +0,0 @@
1
- shared_examples_for "flow DSL method" do
2
- let(:flow) {dsl.flow}
3
-
4
- it "creates a Shoes::Flow" do
5
- expect(flow).to be_an_instance_of(Shoes::Flow)
6
- end
7
-
8
- it 'reports an instance of Shoes::App when asked for its app' do
9
- expect(flow.app.class).to eq Shoes::App
10
- end
11
-
12
- it 'reports an object that responds to stack when asked for its app' do
13
- expect(flow.app).to respond_to :stack
14
- end
15
- end
@@ -1,62 +0,0 @@
1
- shared_examples_for "creating gradient" do
2
- it "returns correct gradient according to #to_s" do
3
- expect(gradient.to_s).to eq("(Shoes::Gradient)")
4
- end
5
-
6
- it "returns correct gradient according to #inspect" do
7
- expect(gradient.inspect).to match("[(]Shoes::Gradient:#{shoes_object_id_pattern} rgb[(]255, 0, 0[)]->rgb[(]0, 0, 255[)][)]")
8
- end
9
- end
10
-
11
- shared_examples_for "gradient DSL method" do
12
- context "with colors" do
13
- include InspectHelpers
14
-
15
- let(:red) { Shoes::Color.new(255, 0, 0) }
16
- let(:blue) { Shoes::Color.new(0, 0, 255) }
17
-
18
- context "two separate" do
19
- it_behaves_like "creating gradient" do
20
- let(:gradient) { dsl.gradient(red, blue) }
21
- end
22
- end
23
-
24
- context "as range" do
25
- it_behaves_like "creating gradient" do
26
- let(:gradient) { dsl.gradient(red..blue) }
27
- end
28
- end
29
- end
30
-
31
- context "with strings" do
32
- include InspectHelpers
33
-
34
- let(:red) { "#f00" }
35
- let(:blue) { "#00f" }
36
-
37
- context "two separate" do
38
- it_behaves_like "creating gradient" do
39
- let(:gradient) { dsl.gradient(red, blue) }
40
- end
41
- end
42
-
43
- context "as range" do
44
- it_behaves_like "creating gradient" do
45
- let(:gradient) { dsl.gradient(red..blue) }
46
- end
47
- end
48
- end
49
-
50
- context "with gradient" do
51
- include InspectHelpers
52
-
53
- it_behaves_like "creating gradient" do
54
- let(:gradient_arg) { dsl.gradient("#f00", "#00f") }
55
- let(:gradient) { dsl.gradient(gradient_arg) }
56
- end
57
- end
58
-
59
- it "fails on bad input" do
60
- expect { dsl.gradient(100) }.to raise_error(ArgumentError)
61
- end
62
- end