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,19 +0,0 @@
1
- shared_examples_for "object with state" do
2
- let(:input_opts) { {:state => "disabled"} }
3
-
4
- it "should initialize" do
5
- expect(subject.state).to eq("disabled")
6
- end
7
-
8
- it "should enable" do
9
- expect(subject.gui).to receive(:enabled).with(true)
10
- subject.state = nil
11
- expect(subject.state).to eq(nil)
12
- end
13
-
14
- it "should disable" do
15
- expect(subject.gui).to receive(:enabled).with(false)
16
- subject.state = "disabled"
17
- expect(subject.state).to eq("disabled")
18
- end
19
- end
@@ -1,82 +0,0 @@
1
- shared_examples_for "object with style" do
2
-
3
- def uses_app_default?(key)
4
- if defined? self.class::STYLES
5
- subject.style[key] && !subject.class::STYLES[key]
6
- else
7
- subject.style[key]
8
- end
9
- end
10
-
11
- describe 'using app-level styles' do
12
-
13
- it 'initially uses app defaults' do
14
- app.style.each do |key, value|
15
- expect(subject.style[key]).to eq(value) if uses_app_default? key
16
- end
17
- end
18
-
19
- it 'overwrites app defaults' do
20
- subject.style(fill: '#fff')
21
- expect(subject.style[:fill]).not_to eq(app.style[:fill])
22
- end
23
- end
24
-
25
- describe 'using element-level styles' do
26
- let(:arg_styles) { {jellybean: 'blueberry'} }
27
-
28
- it 'uses element defaults' do
29
- user_facing_app.style(subject.class, jellybean: 'pumpkin')
30
- expect(subject_without_style.style[:jellybean]).to eq('pumpkin')
31
- end
32
-
33
- it 'overwrites element defaults' do
34
- user_facing_app.style(subject.class, jellybean: 'pumpkin')
35
- expect(subject_with_style.style[:jellybean]).to eq('blueberry')
36
- end
37
- end
38
-
39
- describe 'using the style method' do
40
-
41
- it "merges new styles" do
42
- old_style = subject.style
43
- subject.style(left: 100, top: 50)
44
- expect(subject.style).to eq(old_style.merge(left: 100, top: 50))
45
- end
46
-
47
- it 'calls update_style when the style is changed' do
48
- allow(subject).to receive(:update_style)
49
- subject.style left: 50
50
- expect(subject).to have_received(:update_style)
51
- end
52
-
53
- it 'does not call update_style when style is called without args' do
54
- allow(subject).to receive(:update_style)
55
- subject.style
56
- expect(subject).not_to have_received(:update_style)
57
- end
58
-
59
- it 'does not call update_style when style is unchanged' do
60
- allow(subject).to receive(:update_style)
61
- old_left = subject.style[:left]
62
- subject.style(left: old_left)
63
- expect(subject).not_to have_received(:update_style)
64
- end
65
- end
66
-
67
- describe 'using setters and getters' do
68
-
69
- it 'has a style setter for all styles' do
70
- subject.supported_styles.each do |style|
71
- expect(subject).to respond_to("#{style}=".to_sym)
72
- end
73
- end
74
-
75
- it 'has a style getter for all styles' do
76
- subject.supported_styles.each do |style|
77
- expect(subject).to respond_to("#{style}".to_sym)
78
- end
79
- end
80
- end
81
-
82
- end
@@ -1,130 +0,0 @@
1
- require 'shoes/spec_helper'
2
-
3
- describe Shoes::Slot do
4
- include_context "dsl app"
5
- let(:parent) { app }
6
-
7
- let(:left) { 44 }
8
- let(:top) { 66 }
9
- let(:width) { 111 }
10
- let(:height) { 333 }
11
- let(:input_opts) { {left: left, top: top, width: width, height: height} }
12
- subject(:slot) { Shoes::Slot.new(app, parent, input_opts) }
13
-
14
- it_behaves_like "object with dimensions"
15
-
16
- it_behaves_like "object with style" do
17
- let(:subject_without_style) { Shoes::Slot.new(app, parent) }
18
- let(:subject_with_style) { Shoes::Slot.new(app, parent, arg_styles) }
19
- end
20
-
21
- describe "relative dimensions from parent" do
22
- subject { Shoes::Slot.new(app, parent, relative_opts) }
23
- it_behaves_like "object with relative dimensions"
24
- end
25
-
26
- describe "negative dimensions" do
27
- subject { Shoes::Slot.new(app, parent, negative_opts) }
28
- it_behaves_like "object with negative dimensions"
29
- end
30
-
31
- describe '#clear' do
32
-
33
- def add_text_block
34
- Shoes::TextBlock.new app, slot, ['text']
35
- end
36
-
37
- before :each do
38
- 10.times do
39
- add_text_block
40
- end
41
- end
42
-
43
- it 'sends remove to all children' do
44
- subject.contents.each do |element|
45
- expect(element).to receive(:remove).and_call_original
46
- end
47
- subject.clear
48
- end
49
-
50
- it 'removes everything' do
51
- subject.clear
52
- expect(subject.contents).to be_empty
53
- end
54
-
55
- describe 'with a block' do
56
- before :each do
57
- subject.clear {add_text_block}
58
- end
59
-
60
- it 'has one element afterwards' do
61
- expect(subject.contents.size).to eq 1
62
- end
63
- end
64
-
65
- end
66
-
67
- describe '#remove_child' do
68
- let(:element) {Shoes::FakeElement.new subject}
69
-
70
- before :each do
71
- subject.add_child element
72
- end
73
-
74
- it 'removes the element' do
75
- subject.remove_child element
76
- expect(subject.contents).to be_empty
77
- end
78
-
79
- describe '2 elements' do
80
- let(:element2) {Shoes::FakeElement.new subject}
81
-
82
- before :each do
83
- subject.add_child element2
84
- subject.remove_child element
85
- end
86
-
87
- it 'has one element remaining' do
88
- expect(subject.contents.size).to eq 1
89
- end
90
-
91
- it 'has the second element remaining' do
92
- expect(subject.contents).to include element2
93
- end
94
- end
95
- end
96
-
97
- describe "hover" do
98
- let(:callable) { double("block", call: nil) }
99
- let(:block) { Proc.new { callable.call } }
100
-
101
- it "doesn't need hover proc to be called" do
102
- expect(callable).to_not receive(:call)
103
- subject.mouse_hovered
104
- end
105
-
106
- it "calls block on mouse_hovered" do
107
- expect(callable).to receive(:call)
108
-
109
- subject.hover(block)
110
- subject.mouse_hovered
111
- end
112
- end
113
-
114
- describe "leave" do
115
- let(:callable) { double("block", call: nil) }
116
- let(:block) { Proc.new { callable.call } }
117
-
118
- it "doesn't need leave proc to be called" do
119
- expect(callable).to_not receive(:call)
120
- subject.mouse_left
121
- end
122
-
123
- it "calls block on mouse_left" do
124
- expect(callable).to receive(:call)
125
-
126
- subject.leave(block)
127
- subject.mouse_left
128
- end
129
- end
130
- end
@@ -1,15 +0,0 @@
1
- require 'shoes/spec_helper'
2
-
3
- describe Shoes::Sound do
4
- let(:parent) { double("parent") }
5
- let(:filepath) { "../../samples/sounds/61847__simon-rue__boink-v3.wav" }
6
- subject { Shoes::Sound.new(parent, filepath) }
7
-
8
- its(:filepath) { should eq(filepath) }
9
- its(:parent) { should be(parent) }
10
-
11
- it "delegates play to gui" do
12
- expect(subject.gui).to receive(:play)
13
- subject.play
14
- end
15
- end
@@ -1,112 +0,0 @@
1
- require 'shoes/spec_helper'
2
-
3
- describe Shoes::Span do
4
- let(:app) { Shoes::App.new }
5
- let(:style) { {} }
6
- let(:text) { ['test'] }
7
- subject(:span) { Shoes::Span.new(text, style) }
8
-
9
- describe 'span' do
10
- include InspectHelpers
11
-
12
- it 'sets style to Span block' do
13
- expect(app.style[:strikethrough]).not_to be_truthy
14
-
15
- style = { strikethrough: true }
16
- result = app.span('test', style)
17
- expect(result.style[:strikethrough]).to be_truthy
18
-
19
- expect(app.style[:strikethrough]).not_to be_truthy
20
- end
21
-
22
- it 'displays text for #to_s' do
23
- expect(span.to_s).to eq(text.join)
24
- end
25
-
26
- it 'displays (Shoes::Span:0x01234567 "text") for #inspect' do
27
- expect(span.inspect).to match(/[(]Shoes::Span:#{shoes_object_id_pattern} "#{text.join}"[)]/)
28
- end
29
- end
30
-
31
- describe 'Looking up styles of the parent text' do
32
- let(:white) {Shoes::COLORS[:white]}
33
- let(:red) {Shoes::COLORS[:red]}
34
- it 'does not try to merge with parent style when there are none' do
35
- parent = double 'parent'
36
- span.parent_text = parent
37
- expect {span.style}.to_not raise_error()
38
- end
39
-
40
- it 'merges with the styles of the parent text' do
41
- parent = double 'parent', style: {stroke: white}
42
- span.parent_text = parent
43
- expect(span.style[:stroke]).to eq(white)
44
- end
45
-
46
- describe 'with own style' do
47
- let(:style) {{stroke: red}}
48
- it 'prefers own values over parent text values' do
49
- parent = double 'parent', style: {stroke: white}
50
- span.parent_text = parent
51
- expect(span.style[:stroke]).to eq(red)
52
- end
53
- end
54
- end
55
-
56
- describe 'setting the text block a span belongs to' do
57
- it 'can set it' do
58
- text_block = double 'text block'
59
- subject.text_block = text_block
60
- expect(subject.text_block).to eq text_block
61
- end
62
- end
63
-
64
- describe 'code' do
65
- it 'sets font to Lucida Console' do
66
- result = app.code 'test'
67
- expect(result.style[:font]).to eq(('Lucida Console'))
68
- end
69
- end
70
-
71
- describe 'del' do
72
- it 'sets strikethrough to true' do
73
- result = app.del 'test'
74
- expect(result.style[:strikethrough]).to be_truthy
75
- end
76
- end
77
-
78
- describe 'em' do
79
- it 'sets emphasis to true' do
80
- result = app.em 'test'
81
- expect(result.style[:emphasis]).to be_truthy
82
- end
83
- end
84
-
85
- describe 'ins' do
86
- it 'sets underline to true' do
87
- result = app.ins 'test'
88
- expect(result.style[:underline]).to be_truthy
89
- end
90
- end
91
-
92
- describe 'sub' do
93
- it 'sets rise to -10 and multiplies font size by 0.8' do
94
- result = app.sub 'test'
95
- expect(result.style[:rise]).to eq(-10)
96
- end
97
- end
98
-
99
- describe 'sup' do
100
- it 'sets rise to 10 and multiplies font size by 0.8' do
101
- result = app.sup 'test'
102
- expect(result.style[:rise]).to eq(10)
103
- end
104
- end
105
-
106
- describe 'strong' do
107
- it 'sets weight to true' do
108
- result = app.strong 'test'
109
- expect(result.style[:weight]).to be_truthy
110
- end
111
- end
112
- end
@@ -1,24 +0,0 @@
1
- require 'spec_helper'
2
-
3
- def it_styles_with(*styles)
4
- supported_styles = unpack_styles(styles)
5
- spec_styles(supported_styles)
6
- end
7
-
8
- def unpack_styles(styles)
9
- supported_styles = []
10
- styles.each do |style|
11
- if Shoes::Common::Style::STYLE_GROUPS[style]
12
- Shoes::Common::Style::STYLE_GROUPS[style].each{|style| supported_styles << style}
13
- else
14
- supported_styles << style
15
- end
16
- end
17
- supported_styles
18
- end
19
-
20
- def spec_styles(supported_styles)
21
- supported_styles.each do |style|
22
- it_behaves_like "object that styles with #{style}"
23
- end
24
- end
@@ -1,79 +0,0 @@
1
- require 'shoes/spec_helper'
2
- require 'shoes/helpers/fake_element'
3
-
4
- describe Shoes::Stack do
5
- include_context "dsl app"
6
-
7
- subject(:stack) { Shoes::Stack.new(app, app, input_opts) }
8
-
9
- it_behaves_like "Slot"
10
-
11
- describe 'Context' do
12
-
13
- class ContextObject
14
- def initialize(app)
15
- @app = app
16
- end
17
-
18
- def check_self_inside_stack
19
- inside_stack = nil
20
- @app.stack do inside_stack = self end
21
- inside_stack
22
- end
23
- end
24
-
25
- it 'does not change the context' do
26
- app = Shoes.app do ; end
27
- context_object = ContextObject.new app
28
- inside_stack = context_object.check_self_inside_stack
29
- expect(inside_stack).to be context_object
30
- end
31
- end
32
-
33
- describe 'positioning' do
34
- it_behaves_like 'positioning through :_position'
35
- it_behaves_like 'positions the first element in the top left'
36
- it_behaves_like 'arranges elements underneath each other'
37
-
38
- describe 'small stack height' do
39
- let(:input_opts){{height: element.height + 10}}
40
- it_behaves_like 'set height and contents alignment'
41
- end
42
-
43
- describe 'big stack height' do
44
- let(:input_opts){{height: 1000}}
45
- it_behaves_like 'set height and contents alignment'
46
- end
47
-
48
- describe 'with margin' do
49
- let(:input_opts){{margin: 27}}
50
- it_behaves_like 'taking care of margin'
51
- end
52
- end
53
-
54
- describe 'scrolling' do
55
- include_context "scroll"
56
- subject { Shoes::Stack.new(app, parent, opts) }
57
-
58
- context 'when scrollable' do
59
- let(:scroll) { true }
60
-
61
- it_behaves_like "scrollable slot"
62
-
63
- context 'when content overflows' do
64
- include_context "overflowing content"
65
- it_behaves_like "scrollable slot with overflowing content"
66
- end
67
- end
68
-
69
- context 'when slot is not scrollable' do
70
- let(:scroll) { false }
71
-
72
- its(:scroll) { should be_falsey }
73
-
74
- it "initializes scroll_top to 0" do
75
- expect(subject.scroll_top).to eq(0)
76
- end
77
- end
78
- end
79
- end