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,31 +0,0 @@
1
- require 'shoes/spec_helper'
2
-
3
- shared_examples_for "basic star" do
4
- it "retains app" do
5
- expect(subject.app).to eq(app)
6
- end
7
-
8
- it "creates gui object" do
9
- expect(subject.gui).not_to be_nil
10
- end
11
- end
12
-
13
- describe Shoes::Star do
14
- include_context "dsl app"
15
-
16
- let(:left) { 44 }
17
- let(:top) { 66 }
18
- let(:width) { 100 }
19
- let(:height) { 100 }
20
-
21
- subject { Shoes::Star.new(app, parent, left, top, 5, 50, 30) }
22
-
23
- it_behaves_like "basic star"
24
- it_behaves_like "object with style" do
25
- let(:subject_without_style) { Shoes::Star.new(app, parent, left, top, 5, 50, 30) }
26
- let(:subject_with_style) { Shoes::Star.new(app, parent, left, top, 5, 50, 30, arg_styles) }
27
- end
28
- it_behaves_like "object with dimensions"
29
- it_behaves_like "movable object"
30
- it_behaves_like 'object with parent'
31
- end
@@ -1,75 +0,0 @@
1
- require 'shoes/spec_helper'
2
-
3
- describe Shoes::TextBlockDimensions do
4
- let(:left) { 0 }
5
- let(:top) { 10 }
6
- let(:width) { 5 }
7
- let(:height) { 10 }
8
-
9
- let(:old_dimension) { Shoes::Dimensions.new(nil, left, top, width, height) }
10
- subject { Shoes::TextBlockDimensions.new(nil, left, top, width, height) }
11
-
12
- before(:each) do
13
- old_dimension.absolute_left = subject.absolute_left = 0
14
- old_dimension.absolute_top = subject.absolute_top = 0
15
- end
16
-
17
- describe "positions" do
18
- it "inherits from base" do
19
- expect(subject.absolute_right).to eq(old_dimension.absolute_right)
20
- expect(subject.absolute_bottom).to eq(old_dimension.absolute_bottom)
21
- end
22
-
23
- it "overrides absolute right" do
24
- subject.absolute_right = 200
25
- expect(subject.absolute_right).to eq(200)
26
- end
27
-
28
- it "overrides absolute bottom" do
29
- subject.absolute_bottom = 200
30
- expect(subject.absolute_bottom).to eq(200)
31
- end
32
- end
33
-
34
- describe "calculated sizes" do
35
- it "inherits from base" do
36
- expect(subject.width).to eq(5)
37
- expect(subject.height).to eq(10)
38
- end
39
-
40
- it "override with calculated width" do
41
- subject.width = nil
42
- subject.calculated_width = 200
43
- expect(subject.width).to eq(200)
44
- end
45
-
46
- it "override with calculated height" do
47
- subject.height = nil
48
- subject.calculated_height = 200
49
- expect(subject.height).to eq(200)
50
- end
51
- end
52
-
53
- describe "containing width" do
54
- it "uses immediate width if it can" do
55
- expect(subject.containing_width).to eq(5)
56
- end
57
-
58
- it "applies margins" do
59
- subject.margin = 1
60
- expect(subject.containing_width).to eq(3)
61
- end
62
-
63
- describe "with parent" do
64
- let(:parent) { double('parent', element_width: 100,
65
- x_dimension: double("x"),
66
- y_dimension: double("y")) }
67
- subject { Shoes::TextBlockDimensions.new(parent, left, top, nil, height) }
68
-
69
- it "delegates to parent if no width of its own" do
70
- expect(subject.containing_width).to eq(100)
71
- end
72
- end
73
-
74
- end
75
- end
@@ -1,270 +0,0 @@
1
- require 'shoes/spec_helper'
2
- require 'shoes/helpers/sample17_helper'
3
-
4
- describe Shoes::TextBlock do
5
- include_context "dsl app"
6
-
7
- let(:text_link) { Shoes::Link.new(app, parent, ['Hello']) }
8
- let(:text) { [text_link, ", world!"] }
9
- subject(:text_block) { Shoes::TextBlock.new(app, parent, text, {app: app}) }
10
-
11
- it_behaves_like "object with style" do
12
- let(:subject_without_style) { Shoes::TextBlock.new(app, parent, text) }
13
- let(:subject_with_style) { Shoes::TextBlock.new(app, parent, text, arg_styles) }
14
- end
15
-
16
- describe "initialize" do
17
- it "creates gui object" do
18
- expect(text_block.gui).not_to be_nil
19
- end
20
- end
21
-
22
- describe "text" do
23
- context "with an array of [Shoes::Link, String]" do
24
- it "sets text" do
25
- expect(text_block.text).to eq "Hello, world!"
26
- end
27
-
28
- it "changes the text" do
29
- text_block.text = "Goodbye Cruel World"
30
- expect(text_block.text).to eq "Goodbye Cruel World"
31
- end
32
- end
33
-
34
- context "with a single string" do
35
- let(:text) { "Hello, world!" }
36
-
37
- it "sets text" do
38
- expect(text_block.text).to eq "Hello, world!"
39
- end
40
-
41
- it "changes the text" do
42
- text_block.text = "Goodbye Cruel World"
43
- expect(text_block.text).to eq "Goodbye Cruel World"
44
- end
45
- end
46
- end
47
-
48
- describe "#to_s" do
49
- it "is the same as #text" do
50
- text = text_block.text
51
- expect(text_block.to_s).to eq(text)
52
- end
53
- end
54
-
55
- describe "#replace" do
56
- it "replaces text" do
57
- text_block.replace "Goodbye Cruel World"
58
- expect(text_block.text).to eq("Goodbye Cruel World")
59
- end
60
-
61
- it "allows two arguments" do
62
- text_block.replace "Goodbye Cruel World, ", text_link
63
- expect(text_block.text).to eq("Goodbye Cruel World, Hello")
64
- end
65
-
66
- it "updates contents" do
67
- text_block.replace("Later Gator")
68
- expect(text_block.contents).to eq(["Later Gator"])
69
- end
70
-
71
- it "updates text styles" do
72
- text_block.replace "Later Gator"
73
- expect(text_block.text_styles).to be_empty
74
- end
75
- end
76
-
77
- describe "#contents" do
78
- it "returns text elements" do
79
- expect(text_block.contents).to eql([text_link, ", world!"])
80
- end
81
- end
82
-
83
- describe "font" do
84
- let(:text_block) { Shoes::TextBlock.new(app, parent, ["Hello, world!"], style) }
85
-
86
- context "with defaults" do
87
- let(:style) { Hash.new }
88
-
89
- it "sets the default font to Arial" do
90
- expect(text_block.font).to eq "Arial"
91
- end
92
- end
93
-
94
- context "with a font family string" do
95
- let(:style) { { font: "Helvetica" } }
96
-
97
- it "sets the font family" do
98
- expect(text_block.font).to eq "Helvetica"
99
- end
100
- end
101
-
102
- context "with a font family string and size with 'px'" do
103
- let(:style) { { font: "Helvetica 33px" } }
104
-
105
- it "sets the font family" do
106
- expect(text_block.font).to eq "Helvetica"
107
- end
108
-
109
- it "sets the font size" do
110
- expect(text_block.size).to eq 33
111
- end
112
- end
113
-
114
- context "with a font family string and size with ' px'" do
115
- let(:style) { { font: "Helvetica 33 px" } }
116
-
117
- it "sets the font family" do
118
- expect(text_block.font).to eq "Helvetica"
119
- end
120
-
121
- it "sets the font size" do
122
- expect(text_block.size).to eq 33
123
- end
124
- end
125
-
126
- context "with a quoted font family string and size with 'px'" do
127
- let(:style) { { font: '"Comic Sans" 13px' } }
128
-
129
- it "sets the font family" do
130
- expect(text_block.font).to eq "Comic Sans"
131
- end
132
-
133
- it "sets the size" do
134
- expect(text_block.size).to eq 13
135
- end
136
- end
137
- end
138
-
139
- describe "stroke" do
140
- it "should accept a hex code" do
141
- s = Shoes::TextBlock.new(app, parent, ["Hello, world!"], { stroke: "#fda", app: app })
142
- color = s.style[:stroke]
143
- expect(color.red).to eql 255
144
- expect(color.green).to eql 221
145
- expect(color.blue).to eql 170
146
- end
147
- end
148
-
149
- describe "width" do
150
- before(:each) do
151
- allow(parent).to receive(:element_width) { 300 }
152
- allow(parent).to receive(:absolute_left) { 0 }
153
- end
154
-
155
- context "when not explicitly set" do
156
- subject(:text_block) { Shoes::TextBlock.new(app, parent, ["text"]) }
157
-
158
- it "delegates to calculated width" do
159
- subject.calculated_width = 240
160
- expect(subject.width).to eql 240
161
- end
162
-
163
- it "delegates to calculated height" do
164
- subject.calculated_height = 240
165
- expect(subject.height).to eql 240
166
- end
167
-
168
- it "bases desired width off parent" do
169
- subject.absolute_left = 20
170
- expect(subject.desired_width).to eql 280
171
- end
172
-
173
- it "can base desired off explicit containing width" do
174
- subject.absolute_left = 20
175
- expect(subject.desired_width(1000)).to eql(980)
176
- end
177
- end
178
-
179
- context "when explicitly set" do
180
- subject(:text_block) { Shoes::TextBlock.new(app, parent, ["text"], { width: 120 }) }
181
-
182
- it "gets returned" do
183
- expect(subject.width).to eql 120
184
- end
185
-
186
- it "is used for desired width" do
187
- subject.absolute_left = 20
188
- expect(subject.desired_width).to eql 100
189
- end
190
- end
191
-
192
- end
193
-
194
- context "cursor management" do
195
- let(:textcursor) { double("textcursor") }
196
-
197
- before(:each) do
198
- allow(app).to receive(:textcursor) { textcursor }
199
- end
200
-
201
- it "creates a textcursor" do
202
- expect(subject.textcursor).to eq(textcursor)
203
- expect(app).to have_received(:textcursor)
204
- end
205
-
206
- it "only creates textcursor" do
207
- original = subject.textcursor
208
- allow(app).to receive(:textcursor) { double("new cursor") }
209
-
210
- expect(subject.textcursor).to eq(original)
211
- expect(app).to have_received(:textcursor).once
212
- end
213
- end
214
-
215
- context "with empty subelements" do
216
- let!(:link) { actual_app.link('') }
217
- let!(:span) { actual_app.span('') }
218
- let!(:para) { actual_app.para(link, span) }
219
- let(:actual_app) { app.app }
220
-
221
- it "properly ignores empty element lengths in text_styles" do
222
- text_styles = { 0...0 => [link, span] }
223
-
224
- expect(para.text_styles).to eq(text_styles)
225
- end
226
- end
227
-
228
- # Emulates samples/sample17.rb
229
- #
230
- # Shoes.app width: 240, height: 95 do
231
- # para 'Testing, test, test. ',
232
- # strong('Breadsticks. '),
233
- # em('Breadsticks. '),
234
- # code('Breadsticks. '),
235
- # bg(fg(strong(ins('EVEN BETTER.')), white), rgb(255, 0, 192)),
236
- # sub('fine!')
237
- # end
238
- #
239
- context "with nested text fragments" do
240
- let(:helper) {Sample17Helper.new(app)}
241
- let!(:para) { helper.create_para }
242
-
243
- it "has full text of fragments" do
244
- expect(para.text).to eq("Testing, test, test. Breadsticks. Breadsticks. Breadsticks. EVEN BETTER.fine!")
245
- end
246
-
247
- it "has fragment styles" do
248
- text_styles = {
249
- 21..33 => [helper.strong_breadsticks],
250
- 34..46 => [helper.em],
251
- 47..59 => [helper.code],
252
- 60..71 => [helper.bg, helper.fg, helper.strong, helper.ins],
253
- 72..76 => [helper.sub]
254
- }
255
- expect(para.text_styles).to eq(text_styles)
256
- end
257
-
258
- it 'sets the parent_text of the non nested texts to the para' do
259
- expect(helper.strong_breadsticks.parent_text).to eq para
260
- end
261
-
262
- it 'sets the parent_text of nested fragments correctly' do
263
- expect(helper.ins.parent_text).to eq helper.strong
264
- end
265
-
266
- it 'lets the nested text fragements know what their text block is' do
267
- expect(helper.ins.text_block).to eq para
268
- end
269
- end
270
- end
@@ -1,68 +0,0 @@
1
- require 'shoes/spec_helper'
2
-
3
- describe 'Shoes.url' do
4
- let(:klazz) do
5
- Class.new(Shoes) do
6
- include RSpec::Matchers
7
-
8
- url '/', :index
9
- url '/path', :path
10
- url '/number/(\d+)', :number
11
- url '/foo', :foo
12
- url '/visit_me', :visit_me
13
-
14
- def index
15
- end
16
-
17
- def path
18
- end
19
-
20
- def number(i)
21
- end
22
-
23
- def foo
24
- some_method
25
- end
26
-
27
- def visit_me
28
- expect(location).to eq '/visit_me'
29
- end
30
-
31
- def some_method
32
- end
33
- end
34
- end
35
-
36
- subject do
37
- Shoes.app
38
- end
39
-
40
- it "should call index upon startup" do
41
- expect_any_instance_of(klazz).to receive(:index)
42
- subject
43
- end
44
-
45
- it 'should receive path when visitting path' do
46
- expect_any_instance_of(klazz).to receive(:path)
47
- Shoes.app do visit '/path' end
48
- end
49
-
50
- it 'handles the arguments given in the regexes' do
51
- expect_any_instance_of(klazz).to receive(:number).with('7')
52
- Shoes.app do visit '/number/7' end
53
- end
54
-
55
- it 'can call methods defined in the URL class when visitting a URL' do
56
- expect_any_instance_of(klazz).to receive(:some_method)
57
- Shoes.app do visit '/foo' end
58
- end
59
-
60
- it 'has a location method that returns the current URL' do
61
- Shoes.app do visit('/visit_me') end
62
- end
63
-
64
- it 'instances report class as klazz (regression, do not ask...)' do
65
- expect(klazz.new.class).to eq klazz
66
- end
67
-
68
- end
@@ -1,70 +0,0 @@
1
- require 'shoes/spec_helper'
2
-
3
- class Smile < Shoes::Widget
4
- def initialize(caption)
5
- banner caption
6
- end
7
- end
8
-
9
- class Face < Shoes::Widget
10
- def initialize
11
- para "Hair"
12
- smile "Toothsome"
13
- end
14
- end
15
-
16
- describe Shoes::Widget do
17
- let(:app) { Shoes::App.new }
18
-
19
- it "creates dsl method on App" do
20
- expect(app).to respond_to(:smile)
21
- end
22
-
23
- it "generates instances of its subclass" do
24
- expect(app.smile("Cheese!")).to be_instance_of(Smile)
25
- end
26
-
27
- it "passes missing methods to app" do
28
- expect(app).to receive(:banner).with("Pickles!")
29
- app.smile("Pickles!")
30
- end
31
-
32
- it 'sets the current slot as the parent' do
33
- slot = nil
34
- widget = nil
35
- Shoes.app do
36
- slot = instance_variable_get(:@__app__).current_slot
37
- widget = smile 'lalala'
38
- end
39
- expect(widget.parent).to eq slot
40
- end
41
-
42
- it "allows can use other widgets from widget initialize" do
43
- expect(app).to receive(:smile)
44
- app.face
45
- end
46
-
47
- describe 'together with the URL sub system' do
48
- let!(:klazz) do
49
- Class.new(Shoes) do
50
- include RSpec::Matchers
51
-
52
- url '/', :check_smile
53
- url '/smile', :smile
54
-
55
- def check_smile
56
- expect(self).to respond_to :smile
57
- end
58
- end
59
- end
60
-
61
- it 'responds to widget defined methods like smile' do
62
- Shoes.app
63
- end
64
-
65
- it 'really smiles' do
66
- expect_any_instance_of(Smile).to receive(:initialize)
67
- Shoes.app do visit '/smile' end
68
- end
69
- end
70
- end