shoes-swt 4.0.0.pre2 → 4.0.0.pre3

Sign up to get free protection for your applications and to get access to all the features.
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