shoes-core 4.0.0.pre7 → 4.0.0.pre8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/lib/shoes/arc.rb +10 -13
  3. data/lib/shoes/arrow.rb +1 -11
  4. data/lib/shoes/background.rb +0 -3
  5. data/lib/shoes/border.rb +0 -3
  6. data/lib/shoes/button.rb +4 -1
  7. data/lib/shoes/check_button.rb +0 -1
  8. data/lib/shoes/common/art_element.rb +21 -0
  9. data/lib/shoes/common/background_element.rb +10 -0
  10. data/lib/shoes/common/clickable.rb +2 -0
  11. data/lib/shoes/common/rotate.rb +1 -2
  12. data/lib/shoes/common/ui_element.rb +10 -1
  13. data/lib/shoes/core/version.rb +1 -1
  14. data/lib/shoes/download.rb +47 -29
  15. data/lib/shoes/dsl.rb +99 -40
  16. data/lib/shoes/font.rb +0 -4
  17. data/lib/shoes/http_request.rb +91 -0
  18. data/lib/shoes/image.rb +0 -1
  19. data/lib/shoes/input_box.rb +0 -1
  20. data/lib/shoes/internal_app.rb +1 -1
  21. data/lib/shoes/line.rb +25 -11
  22. data/lib/shoes/link.rb +10 -4
  23. data/lib/shoes/list_box.rb +0 -1
  24. data/lib/shoes/mock/app.rb +6 -0
  25. data/lib/shoes/mock/clickable.rb +3 -0
  26. data/lib/shoes/mock/font.rb +0 -4
  27. data/lib/shoes/oval.rb +3 -13
  28. data/lib/shoes/progress.rb +0 -1
  29. data/lib/shoes/rect.rb +1 -11
  30. data/lib/shoes/shape.rb +16 -8
  31. data/lib/shoes/slot.rb +2 -1
  32. data/lib/shoes/star.rb +8 -11
  33. data/lib/shoes/text_block.rb +0 -1
  34. data/lib/shoes/ui/picker.rb +29 -8
  35. data/lib/shoes/version.rb +1 -1
  36. metadata +8 -231
  37. data/Guardfile +0 -5
  38. data/Rakefile +0 -1
  39. data/bin/shoes-stub +0 -62
  40. data/ext/install/Rakefile +0 -39
  41. data/ext/install/shoes.bat +0 -17
  42. data/lib/rubygems_plugin.rb +0 -24
  43. data/shoes-core.gemspec +0 -22
  44. data/spec/shoes/animation_spec.rb +0 -71
  45. data/spec/shoes/app_spec.rb +0 -454
  46. data/spec/shoes/arc_spec.rb +0 -52
  47. data/spec/shoes/arrow_spec.rb +0 -28
  48. data/spec/shoes/background_spec.rb +0 -47
  49. data/spec/shoes/border_spec.rb +0 -46
  50. data/spec/shoes/builtin_methods_spec.rb +0 -122
  51. data/spec/shoes/button_spec.rb +0 -55
  52. data/spec/shoes/check_spec.rb +0 -36
  53. data/spec/shoes/color_spec.rb +0 -429
  54. data/spec/shoes/common/attachable_spec.rb +0 -32
  55. data/spec/shoes/common/inspect_spec.rb +0 -26
  56. data/spec/shoes/common/remove_spec.rb +0 -37
  57. data/spec/shoes/common/rotate_spec.rb +0 -13
  58. data/spec/shoes/common/style_normalizer_spec.rb +0 -28
  59. data/spec/shoes/common/style_spec.rb +0 -197
  60. data/spec/shoes/common/translate_spec.rb +0 -27
  61. data/spec/shoes/configuration_spec.rb +0 -51
  62. data/spec/shoes/constants_spec.rb +0 -39
  63. data/spec/shoes/dialog_spec.rb +0 -169
  64. data/spec/shoes/dimension_spec.rb +0 -451
  65. data/spec/shoes/dimensions_spec.rb +0 -868
  66. data/spec/shoes/download_spec.rb +0 -198
  67. data/spec/shoes/flow_spec.rb +0 -132
  68. data/spec/shoes/font_spec.rb +0 -36
  69. data/spec/shoes/framework_learning_spec.rb +0 -31
  70. data/spec/shoes/gradient_spec.rb +0 -31
  71. data/spec/shoes/helpers/fake_absolute_element.rb +0 -31
  72. data/spec/shoes/helpers/fake_element.rb +0 -25
  73. data/spec/shoes/helpers/inspect_helpers.rb +0 -5
  74. data/spec/shoes/helpers/sample17_helper.rb +0 -65
  75. data/spec/shoes/image_spec.rb +0 -69
  76. data/spec/shoes/images/shoe.jpg +0 -0
  77. data/spec/shoes/input_box_spec.rb +0 -80
  78. data/spec/shoes/integration_spec.rb +0 -19
  79. data/spec/shoes/internal_app_spec.rb +0 -148
  80. data/spec/shoes/keypress_spec.rb +0 -11
  81. data/spec/shoes/keyrelease_spec.rb +0 -11
  82. data/spec/shoes/line_spec.rb +0 -120
  83. data/spec/shoes/link_spec.rb +0 -149
  84. data/spec/shoes/list_box_spec.rb +0 -87
  85. data/spec/shoes/logger/ruby_spec.rb +0 -8
  86. data/spec/shoes/logger_spec.rb +0 -45
  87. data/spec/shoes/oval_spec.rb +0 -25
  88. data/spec/shoes/packager_spec.rb +0 -25
  89. data/spec/shoes/point_spec.rb +0 -99
  90. data/spec/shoes/progress_spec.rb +0 -54
  91. data/spec/shoes/radio_spec.rb +0 -32
  92. data/spec/shoes/rect_spec.rb +0 -40
  93. data/spec/shoes/renamed_delegate_spec.rb +0 -69
  94. data/spec/shoes/shape_spec.rb +0 -119
  95. data/spec/shoes/shared_examples/button.rb +0 -6
  96. data/spec/shoes/shared_examples/changeable.rb +0 -26
  97. data/spec/shoes/shared_examples/clickable.rb +0 -5
  98. data/spec/shoes/shared_examples/common_methods.rb +0 -35
  99. data/spec/shoes/shared_examples/dimensions.rb +0 -32
  100. data/spec/shoes/shared_examples/dsl.rb +0 -44
  101. data/spec/shoes/shared_examples/dsl/animate.rb +0 -29
  102. data/spec/shoes/shared_examples/dsl/arc.rb +0 -45
  103. data/spec/shoes/shared_examples/dsl/background.rb +0 -26
  104. data/spec/shoes/shared_examples/dsl/border.rb +0 -10
  105. data/spec/shoes/shared_examples/dsl/button.rb +0 -5
  106. data/spec/shoes/shared_examples/dsl/cap.rb +0 -6
  107. data/spec/shoes/shared_examples/dsl/check.rb +0 -11
  108. data/spec/shoes/shared_examples/dsl/edit_box.rb +0 -8
  109. data/spec/shoes/shared_examples/dsl/edit_line.rb +0 -8
  110. data/spec/shoes/shared_examples/dsl/editable_element.rb +0 -29
  111. data/spec/shoes/shared_examples/dsl/fill.rb +0 -27
  112. data/spec/shoes/shared_examples/dsl/flow.rb +0 -15
  113. data/spec/shoes/shared_examples/dsl/gradient.rb +0 -62
  114. data/spec/shoes/shared_examples/dsl/image.rb +0 -21
  115. data/spec/shoes/shared_examples/dsl/line.rb +0 -9
  116. data/spec/shoes/shared_examples/dsl/nofill.rb +0 -6
  117. data/spec/shoes/shared_examples/dsl/nostroke.rb +0 -6
  118. data/spec/shoes/shared_examples/dsl/oval.rb +0 -88
  119. data/spec/shoes/shared_examples/dsl/pattern.rb +0 -34
  120. data/spec/shoes/shared_examples/dsl/progress.rb +0 -7
  121. data/spec/shoes/shared_examples/dsl/rect.rb +0 -92
  122. data/spec/shoes/shared_examples/dsl/rgb.rb +0 -28
  123. data/spec/shoes/shared_examples/dsl/shape.rb +0 -61
  124. data/spec/shoes/shared_examples/dsl/star.rb +0 -110
  125. data/spec/shoes/shared_examples/dsl/stroke.rb +0 -30
  126. data/spec/shoes/shared_examples/dsl/strokewidth.rb +0 -19
  127. data/spec/shoes/shared_examples/dsl/style.rb +0 -32
  128. data/spec/shoes/shared_examples/dsl/text_elements.rb +0 -84
  129. data/spec/shoes/shared_examples/dsl/video.rb +0 -5
  130. data/spec/shoes/shared_examples/dsl_app_context.rb +0 -11
  131. data/spec/shoes/shared_examples/hover.rb +0 -78
  132. data/spec/shoes/shared_examples/parent.rb +0 -6
  133. data/spec/shoes/shared_examples/scroll.rb +0 -41
  134. data/spec/shoes/shared_examples/shared_element_method.rb +0 -60
  135. data/spec/shoes/shared_examples/slot.rb +0 -441
  136. data/spec/shoes/shared_examples/state.rb +0 -26
  137. data/spec/shoes/shared_examples/style.rb +0 -77
  138. data/spec/shoes/slot_spec.rb +0 -176
  139. data/spec/shoes/sound_spec.rb +0 -16
  140. data/spec/shoes/span_spec.rb +0 -112
  141. data/spec/shoes/spec_helper.rb +0 -24
  142. data/spec/shoes/stack_spec.rb +0 -79
  143. data/spec/shoes/star_spec.rb +0 -49
  144. data/spec/shoes/text_block_dimensions_spec.rb +0 -77
  145. data/spec/shoes/text_block_spec.rb +0 -314
  146. data/spec/shoes/text_spec.rb +0 -22
  147. data/spec/shoes/ui/picker_spec.rb +0 -69
  148. data/spec/shoes/url_spec.rb +0 -67
  149. data/spec/shoes/widget_spec.rb +0 -78
  150. data/spec/shoes_spec.rb +0 -41
  151. data/spec/spec_helper.rb +0 -27
@@ -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
@@ -1,21 +0,0 @@
1
- shared_examples_for "image DSL method" do
2
- let(:path) { Shoes::DIR + '/static/shoes-icon.png' }
3
- let(:opts) { {} }
4
- let(:image) { dsl.image path, opts }
5
-
6
- it 'should set the path' do
7
- expect(image.file_path).to eq(path)
8
- end
9
-
10
- context 'with :top and :left style attributes' do
11
- let(:opts) { {left: 55, top: 66} }
12
-
13
- it 'should set the left' do
14
- expect(image.left).to eq(55)
15
- end
16
-
17
- it 'should set the top' do
18
- expect(image.top).to eq(66)
19
- end
20
- end
21
- end