shoes-swt 4.0.0.pre2
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.
- checksums.yaml +7 -0
- data/CHANGELOG +84 -0
- data/Gemfile +24 -0
- data/Guardfile +11 -0
- data/LICENSE +31 -0
- data/README.md +201 -0
- data/lib/shoes/swt.rb +118 -0
- data/lib/shoes/swt/animation.rb +46 -0
- data/lib/shoes/swt/app.rb +314 -0
- data/lib/shoes/swt/arc.rb +71 -0
- data/lib/shoes/swt/background.rb +41 -0
- data/lib/shoes/swt/border.rb +41 -0
- data/lib/shoes/swt/button.rb +18 -0
- data/lib/shoes/swt/check.rb +14 -0
- data/lib/shoes/swt/check_button.rb +19 -0
- data/lib/shoes/swt/color.rb +49 -0
- data/lib/shoes/swt/color_factory.rb +32 -0
- data/lib/shoes/swt/common/child.rb +16 -0
- data/lib/shoes/swt/common/clickable.rb +68 -0
- data/lib/shoes/swt/common/container.rb +28 -0
- data/lib/shoes/swt/common/fill.rb +38 -0
- data/lib/shoes/swt/common/painter.rb +92 -0
- data/lib/shoes/swt/common/painter_updates_position.rb +12 -0
- data/lib/shoes/swt/common/remove.rb +30 -0
- data/lib/shoes/swt/common/resource.rb +29 -0
- data/lib/shoes/swt/common/selection_listener.rb +14 -0
- data/lib/shoes/swt/common/stroke.rb +42 -0
- data/lib/shoes/swt/common/update_position.rb +15 -0
- data/lib/shoes/swt/common/visibility.rb +13 -0
- data/lib/shoes/swt/dialog.rb +90 -0
- data/lib/shoes/swt/disposed_protection.rb +23 -0
- data/lib/shoes/swt/download.rb +24 -0
- data/lib/shoes/swt/font.rb +32 -0
- data/lib/shoes/swt/gradient.rb +92 -0
- data/lib/shoes/swt/image.rb +128 -0
- data/lib/shoes/swt/image_pattern.rb +31 -0
- data/lib/shoes/swt/input_box.rb +73 -0
- data/lib/shoes/swt/key_listener.rb +145 -0
- data/lib/shoes/swt/line.rb +60 -0
- data/lib/shoes/swt/link.rb +31 -0
- data/lib/shoes/swt/link_segment.rb +111 -0
- data/lib/shoes/swt/list_box.rb +48 -0
- data/lib/shoes/swt/mouse_move_listener.rb +67 -0
- data/lib/shoes/swt/oval.rb +52 -0
- data/lib/shoes/swt/progress.rb +35 -0
- data/lib/shoes/swt/radio.rb +29 -0
- data/lib/shoes/swt/radio_group.rb +54 -0
- data/lib/shoes/swt/rect.rb +30 -0
- data/lib/shoes/swt/rect_painter.rb +23 -0
- data/lib/shoes/swt/redrawing_aspect.rb +123 -0
- data/lib/shoes/swt/shape.rb +133 -0
- data/lib/shoes/swt/shoes_layout.rb +43 -0
- data/lib/shoes/swt/slot.rb +39 -0
- data/lib/shoes/swt/sound.rb +119 -0
- data/lib/shoes/swt/star.rb +50 -0
- data/lib/shoes/swt/support/jl1.0.1.jar +0 -0
- data/lib/shoes/swt/support/jogg-0.0.7.jar +0 -0
- data/lib/shoes/swt/support/jorbis-0.0.15.jar +0 -0
- data/lib/shoes/swt/support/log4j-1.2.16.jar +0 -0
- data/lib/shoes/swt/support/mp3spi1.9.5.jar +0 -0
- data/lib/shoes/swt/support/tritonus_share.jar +0 -0
- data/lib/shoes/swt/support/vorbisspi1.0.3.jar +0 -0
- data/lib/shoes/swt/swt_button.rb +56 -0
- data/lib/shoes/swt/text_block.rb +124 -0
- data/lib/shoes/swt/text_block/centered_text_segment.rb +22 -0
- data/lib/shoes/swt/text_block/cursor_painter.rb +53 -0
- data/lib/shoes/swt/text_block/fitter.rb +212 -0
- data/lib/shoes/swt/text_block/painter.rb +47 -0
- data/lib/shoes/swt/text_block/text_font_factory.rb +50 -0
- data/lib/shoes/swt/text_block/text_segment.rb +108 -0
- data/lib/shoes/swt/text_block/text_segment_collection.rb +160 -0
- data/lib/shoes/swt/text_block/text_style_factory.rb +88 -0
- data/lib/shoes/swt/timer.rb +19 -0
- data/lib/shoes/swt/tooling/leak_hunter.rb +35 -0
- data/lib/shoes/swt/version.rb +5 -0
- data/manifests/common.rb +34 -0
- data/manifests/shoes-swt.rb +29 -0
- data/shoes-swt.gemspec +24 -0
- data/spec/code_coverage.rb +14 -0
- data/spec/shoes/animation_spec.rb +65 -0
- data/spec/shoes/app_spec.rb +484 -0
- data/spec/shoes/arc_spec.rb +51 -0
- data/spec/shoes/background_spec.rb +53 -0
- data/spec/shoes/border_spec.rb +47 -0
- data/spec/shoes/builtin_methods_spec.rb +110 -0
- data/spec/shoes/button_spec.rb +44 -0
- data/spec/shoes/check_spec.rb +35 -0
- data/spec/shoes/cli_spec.rb +15 -0
- data/spec/shoes/color_spec.rb +408 -0
- data/spec/shoes/common/inspect_spec.rb +26 -0
- data/spec/shoes/common/remove_spec.rb +38 -0
- data/spec/shoes/common/style_normalizer_spec.rb +28 -0
- data/spec/shoes/common/style_spec.rb +147 -0
- data/spec/shoes/configuration_spec.rb +36 -0
- data/spec/shoes/constants_spec.rb +38 -0
- data/spec/shoes/dialog_spec.rb +163 -0
- data/spec/shoes/dimension_spec.rb +407 -0
- data/spec/shoes/dimensions_spec.rb +837 -0
- data/spec/shoes/download_spec.rb +142 -0
- data/spec/shoes/flow_spec.rb +133 -0
- data/spec/shoes/font_spec.rb +37 -0
- data/spec/shoes/framework_learning_spec.rb +30 -0
- data/spec/shoes/gradient_spec.rb +32 -0
- data/spec/shoes/helpers/fake_element.rb +17 -0
- data/spec/shoes/helpers/inspect_helpers.rb +5 -0
- data/spec/shoes/helpers/sample17_helper.rb +66 -0
- data/spec/shoes/image_spec.rb +49 -0
- data/spec/shoes/images/shoe.jpg +0 -0
- data/spec/shoes/input_box_spec.rb +80 -0
- data/spec/shoes/integration_spec.rb +20 -0
- data/spec/shoes/internal_app_spec.rb +141 -0
- data/spec/shoes/keypress_spec.rb +11 -0
- data/spec/shoes/keyrelease_spec.rb +12 -0
- data/spec/shoes/line_spec.rb +49 -0
- data/spec/shoes/link_spec.rb +105 -0
- data/spec/shoes/list_box_spec.rb +74 -0
- data/spec/shoes/logger/ruby_spec.rb +8 -0
- data/spec/shoes/logger_spec.rb +45 -0
- data/spec/shoes/oval_spec.rb +24 -0
- data/spec/shoes/point_spec.rb +71 -0
- data/spec/shoes/progress_spec.rb +54 -0
- data/spec/shoes/radio_spec.rb +32 -0
- data/spec/shoes/rect_spec.rb +39 -0
- data/spec/shoes/renamed_delegate_spec.rb +70 -0
- data/spec/shoes/shape_spec.rb +95 -0
- data/spec/shoes/shared_examples/button.rb +6 -0
- data/spec/shoes/shared_examples/changeable.rb +26 -0
- data/spec/shoes/shared_examples/clickable.rb +5 -0
- data/spec/shoes/shared_examples/common_methods.rb +35 -0
- data/spec/shoes/shared_examples/dimensions.rb +32 -0
- data/spec/shoes/shared_examples/dsl.rb +44 -0
- data/spec/shoes/shared_examples/dsl/animate.rb +29 -0
- data/spec/shoes/shared_examples/dsl/arc.rb +45 -0
- data/spec/shoes/shared_examples/dsl/background.rb +26 -0
- data/spec/shoes/shared_examples/dsl/border.rb +10 -0
- data/spec/shoes/shared_examples/dsl/button.rb +5 -0
- data/spec/shoes/shared_examples/dsl/cap.rb +6 -0
- data/spec/shoes/shared_examples/dsl/check.rb +11 -0
- data/spec/shoes/shared_examples/dsl/edit_box.rb +8 -0
- data/spec/shoes/shared_examples/dsl/edit_line.rb +8 -0
- data/spec/shoes/shared_examples/dsl/editable_element.rb +29 -0
- data/spec/shoes/shared_examples/dsl/fill.rb +27 -0
- data/spec/shoes/shared_examples/dsl/flow.rb +15 -0
- data/spec/shoes/shared_examples/dsl/gradient.rb +62 -0
- data/spec/shoes/shared_examples/dsl/image.rb +21 -0
- data/spec/shoes/shared_examples/dsl/line.rb +9 -0
- data/spec/shoes/shared_examples/dsl/nofill.rb +6 -0
- data/spec/shoes/shared_examples/dsl/nostroke.rb +6 -0
- data/spec/shoes/shared_examples/dsl/oval.rb +88 -0
- data/spec/shoes/shared_examples/dsl/pattern.rb +34 -0
- data/spec/shoes/shared_examples/dsl/progress.rb +7 -0
- data/spec/shoes/shared_examples/dsl/rect.rb +92 -0
- data/spec/shoes/shared_examples/dsl/rgb.rb +26 -0
- data/spec/shoes/shared_examples/dsl/shape.rb +21 -0
- data/spec/shoes/shared_examples/dsl/star.rb +48 -0
- data/spec/shoes/shared_examples/dsl/stroke.rb +30 -0
- data/spec/shoes/shared_examples/dsl/strokewidth.rb +19 -0
- data/spec/shoes/shared_examples/dsl/style.rb +32 -0
- data/spec/shoes/shared_examples/dsl/text_elements.rb +81 -0
- data/spec/shoes/shared_examples/dsl/video.rb +5 -0
- data/spec/shoes/shared_examples/dsl_app_context.rb +8 -0
- data/spec/shoes/shared_examples/hover_leave.rb +11 -0
- data/spec/shoes/shared_examples/parent.rb +6 -0
- data/spec/shoes/shared_examples/scroll.rb +41 -0
- data/spec/shoes/shared_examples/shared_element_method.rb +60 -0
- data/spec/shoes/shared_examples/slot.rb +331 -0
- data/spec/shoes/shared_examples/state.rb +19 -0
- data/spec/shoes/shared_examples/style.rb +82 -0
- data/spec/shoes/slot_spec.rb +130 -0
- data/spec/shoes/sound_spec.rb +15 -0
- data/spec/shoes/span_spec.rb +112 -0
- data/spec/shoes/spec_helper.rb +24 -0
- data/spec/shoes/stack_spec.rb +79 -0
- data/spec/shoes/star_spec.rb +31 -0
- data/spec/shoes/text_block_dimensions_spec.rb +75 -0
- data/spec/shoes/text_block_spec.rb +270 -0
- data/spec/shoes/url_spec.rb +68 -0
- data/spec/shoes/widget_spec.rb +70 -0
- data/spec/shoes_spec.rb +44 -0
- data/spec/spec_helper.rb +18 -0
- data/spec/swt_shoes/animation_spec.rb +86 -0
- data/spec/swt_shoes/app_spec.rb +84 -0
- data/spec/swt_shoes/arc_spec.rb +103 -0
- data/spec/swt_shoes/background_spec.rb +67 -0
- data/spec/swt_shoes/border_spec.rb +52 -0
- data/spec/swt_shoes/button_spec.rb +101 -0
- data/spec/swt_shoes/check_spec.rb +28 -0
- data/spec/swt_shoes/color_factory_spec.rb +49 -0
- data/spec/swt_shoes/color_spec.rb +67 -0
- data/spec/swt_shoes/common/painter_spec.rb +49 -0
- data/spec/swt_shoes/common/remove_spec.rb +53 -0
- data/spec/swt_shoes/configuration_spec.rb +12 -0
- data/spec/swt_shoes/dialog_spec.rb +106 -0
- data/spec/swt_shoes/disposed_protection_spec.rb +49 -0
- data/spec/swt_shoes/flow_spec.rb +36 -0
- data/spec/swt_shoes/font_spec.rb +33 -0
- data/spec/swt_shoes/gradient_spec.rb +31 -0
- data/spec/swt_shoes/image_pattern_spec.rb +35 -0
- data/spec/swt_shoes/image_spec.rb +100 -0
- data/spec/swt_shoes/input_box_spec.rb +116 -0
- data/spec/swt_shoes/integration_spec.rb +27 -0
- data/spec/swt_shoes/key_listener_spec.rb +325 -0
- data/spec/swt_shoes/line_spec.rb +49 -0
- data/spec/swt_shoes/link_segment_spec.rb +120 -0
- data/spec/swt_shoes/link_spec.rb +54 -0
- data/spec/swt_shoes/list_box_spec.rb +56 -0
- data/spec/swt_shoes/minimal.png +0 -0
- data/spec/swt_shoes/mouse_move_listener_spec.rb +123 -0
- data/spec/swt_shoes/oval_spec.rb +51 -0
- data/spec/swt_shoes/progress_spec.rb +44 -0
- data/spec/swt_shoes/radio_group_spec.rb +73 -0
- data/spec/swt_shoes/radio_spec.rb +56 -0
- data/spec/swt_shoes/rect_painter_spec.rb +45 -0
- data/spec/swt_shoes/rect_spec.rb +19 -0
- data/spec/swt_shoes/shape_spec.rb +84 -0
- data/spec/swt_shoes/shared_examples/button.rb +21 -0
- data/spec/swt_shoes/shared_examples/clickable.rb +85 -0
- data/spec/swt_shoes/shared_examples/movable.rb +36 -0
- data/spec/swt_shoes/shared_examples/paintable.rb +7 -0
- data/spec/swt_shoes/shared_examples/painter.rb +83 -0
- data/spec/swt_shoes/shared_examples/pattern.rb +32 -0
- data/spec/swt_shoes/shared_examples/removable.rb +41 -0
- data/spec/swt_shoes/shared_examples/swt_app_context.rb +23 -0
- data/spec/swt_shoes/shared_examples/visibility.rb +15 -0
- data/spec/swt_shoes/shell_control_listener_spec.rb +23 -0
- data/spec/swt_shoes/slot_spec.rb +24 -0
- data/spec/swt_shoes/sound.rb +10 -0
- data/spec/swt_shoes/spec_helper.rb +31 -0
- data/spec/swt_shoes/star_spec.rb +47 -0
- data/spec/swt_shoes/text_block/centered_text_segment_spec.rb +16 -0
- data/spec/swt_shoes/text_block/cursor_painter_spec.rb +120 -0
- data/spec/swt_shoes/text_block/fitter_spec.rb +213 -0
- data/spec/swt_shoes/text_block/painter_spec.rb +212 -0
- data/spec/swt_shoes/text_block/text_font_factory_spec.rb +40 -0
- data/spec/swt_shoes/text_block/text_segment_collection_spec.rb +256 -0
- data/spec/swt_shoes/text_block/text_segment_spec.rb +135 -0
- data/spec/swt_shoes/text_block_spec.rb +199 -0
- metadata +496 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
require 'swt_shoes/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Shoes::Swt::Button do
|
|
4
|
+
include_context "swt app"
|
|
5
|
+
|
|
6
|
+
let(:text) { "TEXT" }
|
|
7
|
+
let(:dsl) { double('dsl', app: shoes_app, text: text, blk: block, element_width: 100, element_height: 200).as_null_object }
|
|
8
|
+
let(:block) { proc {} }
|
|
9
|
+
let(:real) { double('real', disposed?: false).as_null_object }
|
|
10
|
+
|
|
11
|
+
subject { Shoes::Swt::Button.new dsl, parent }
|
|
12
|
+
|
|
13
|
+
before :each do
|
|
14
|
+
allow(parent).to receive(:real)
|
|
15
|
+
allow(parent).to receive(:dsl){double(contents: [])}
|
|
16
|
+
allow(dsl).to receive(:width=)
|
|
17
|
+
allow(dsl).to receive(:height=)
|
|
18
|
+
allow(::Swt::Widgets::Button).to receive(:new) { real }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it_behaves_like "buttons"
|
|
22
|
+
it_behaves_like "movable element", 140, 300
|
|
23
|
+
it_behaves_like "removable native element"
|
|
24
|
+
it_behaves_like "updating visibility"
|
|
25
|
+
|
|
26
|
+
describe "#initialize" do
|
|
27
|
+
it "sets text on real element" do
|
|
28
|
+
expect(real).to receive(:set_text).with(text)
|
|
29
|
+
subject
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe 'size' do
|
|
33
|
+
let(:width) {50}
|
|
34
|
+
let(:height) {20}
|
|
35
|
+
let(:size) {double 'real size', x: width, y: height}
|
|
36
|
+
let(:real) {double('button real', size: size, pack: true).as_null_object}
|
|
37
|
+
|
|
38
|
+
before :each do
|
|
39
|
+
allow(parent).to receive(:real)
|
|
40
|
+
allow(parent).to receive(:dsl){double(contents: [])}
|
|
41
|
+
allow(::Swt::Widgets::Button).to receive(:new) { real }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def dsl_for_dimensions(width, height)
|
|
45
|
+
double('dsl', element_width: width, element_height: height, text: text).as_null_object
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def with_dimensions_real_should_be(input_width, input_height,
|
|
49
|
+
expected_width, expected_height)
|
|
50
|
+
dsl = dsl_for_dimensions input_width, input_height
|
|
51
|
+
expect(dsl).to receive(:element_width=).with(expected_width) unless input_width
|
|
52
|
+
expect(dsl).to receive(:element_height=).with(expected_height) unless input_height
|
|
53
|
+
Shoes::Swt::Button.new dsl, parent
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'uses only real when width and height are not specified' do
|
|
57
|
+
with_dimensions_real_should_be nil, nil, real.size.x, real.size.y
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it 'uses the real height and specified width if specified' do
|
|
61
|
+
with_dimensions_real_should_be 110, nil, 110, real.size.y
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it 'uses the real width and specified height if specified' do
|
|
65
|
+
with_dimensions_real_should_be nil, 220, real.size.x, 220
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it 'uses both specified values' do
|
|
69
|
+
with_dimensions_real_should_be 130, 220, 130, 220
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it 'sends set_text to the real before packing it #452' do
|
|
73
|
+
expect(real).to receive(:set_text).ordered
|
|
74
|
+
expect(real).to receive(:pack).ordered
|
|
75
|
+
subject
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
describe 'eval block' do
|
|
81
|
+
it 'calls the block' do
|
|
82
|
+
expect(block).to receive(:call).with(dsl)
|
|
83
|
+
subject.eval_block block
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe 'click' do
|
|
88
|
+
it 'adds listener to real object' do
|
|
89
|
+
expect(real).to receive(:addSelectionListener)
|
|
90
|
+
subject.click block
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it 'passes dsl object to block' do
|
|
94
|
+
expect(real).to receive(:addSelectionListener).once do |&blk|
|
|
95
|
+
expect(block).to receive(:call).with(dsl)
|
|
96
|
+
blk.call
|
|
97
|
+
end
|
|
98
|
+
subject.click block
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'swt_shoes/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Shoes::Swt::Check do
|
|
4
|
+
include_context "swt app"
|
|
5
|
+
|
|
6
|
+
let(:text) { "TEXT" }
|
|
7
|
+
let(:dsl) { double('dsl',
|
|
8
|
+
:app => shoes_app, :visible? => true,
|
|
9
|
+
:left => 42, :top => 66,
|
|
10
|
+
:element_left => 42, element_top: 66,
|
|
11
|
+
:width => 100, :width= => true,
|
|
12
|
+
:element_width => 100, element_height: 200,
|
|
13
|
+
:height => 200, :height= => true,
|
|
14
|
+
blk: block, contents: []) }
|
|
15
|
+
let(:block) { proc {} }
|
|
16
|
+
let(:real) { double('real').as_null_object }
|
|
17
|
+
|
|
18
|
+
subject { Shoes::Swt::Check.new dsl, parent }
|
|
19
|
+
|
|
20
|
+
before :each do
|
|
21
|
+
allow(::Swt::Widgets::Button).to receive(:new) { real }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it_behaves_like "buttons"
|
|
25
|
+
it_behaves_like "movable element"
|
|
26
|
+
it_behaves_like "selectable"
|
|
27
|
+
it_behaves_like "updating visibility"
|
|
28
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'swt_shoes/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Shoes::Swt::ColorFactory do
|
|
4
|
+
let(:blue) { Shoes::COLORS[:blue] }
|
|
5
|
+
let(:gradient) { Shoes::Gradient.new(blue, blue) }
|
|
6
|
+
|
|
7
|
+
subject(:factory) { Shoes::Swt::ColorFactory.new }
|
|
8
|
+
|
|
9
|
+
it "turns Shoes::Color's into Shoes::Swt::Color's" do
|
|
10
|
+
expect(factory.create(blue)).to_not be_nil
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "hands back nil for nil" do
|
|
14
|
+
expect(factory.create(nil)).to be_nil
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "caches colors" do
|
|
18
|
+
first = factory.create(blue)
|
|
19
|
+
second = factory.create(blue)
|
|
20
|
+
|
|
21
|
+
expect(first).to eql(second)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "disposes of colors" do
|
|
25
|
+
color = factory.create(blue)
|
|
26
|
+
expect(color).to receive(:dispose)
|
|
27
|
+
|
|
28
|
+
factory.dispose
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "doesn't cache colors across dispose" do
|
|
32
|
+
color = factory.create(blue)
|
|
33
|
+
factory.dispose
|
|
34
|
+
|
|
35
|
+
new_color = factory.create(blue)
|
|
36
|
+
expect(color).to_not eql(new_color)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "allows gradients through" do
|
|
40
|
+
expect(factory.create(gradient)).to_not be_nil
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "safely disposes of non-disposable elements" do
|
|
44
|
+
factory.create(gradient)
|
|
45
|
+
expect(gradient).to receive(:dispose).never
|
|
46
|
+
|
|
47
|
+
factory.dispose
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
require 'swt_shoes/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Shoes::Swt::Color do
|
|
4
|
+
subject(:color) { Shoes::Swt::Color.create(Shoes::COLORS[:salmon]) }
|
|
5
|
+
|
|
6
|
+
it_behaves_like "an swt pattern"
|
|
7
|
+
|
|
8
|
+
its(:class) { is_expected.to eq(Shoes::Swt::Color) }
|
|
9
|
+
|
|
10
|
+
describe "underlying SWT object" do
|
|
11
|
+
let(:real) { color.real }
|
|
12
|
+
|
|
13
|
+
it "is a native SWT color" do
|
|
14
|
+
expect(real.class).to eq(::Swt::Graphics::Color)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "has same red value as Shoes color" do
|
|
18
|
+
expect(real.red).to eq(250)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "has same green value as Shoes color" do
|
|
22
|
+
expect(real.green).to eq(128)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "has same blue value as Shoes color" do
|
|
26
|
+
expect(real.blue).to eq(114)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe "#apply_as_fill" do
|
|
31
|
+
let(:gc) { double("gc") }
|
|
32
|
+
|
|
33
|
+
it "sets background" do
|
|
34
|
+
allow(gc).to receive(:set_alpha)
|
|
35
|
+
expect(gc).to receive(:set_background).with(color.real)
|
|
36
|
+
color.apply_as_fill(gc)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "sets alpha" do
|
|
40
|
+
allow(gc).to receive(:set_background)
|
|
41
|
+
expect(gc).to receive(:set_alpha)
|
|
42
|
+
color.apply_as_fill(gc, 10, 20, 100, 200)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe Shoes::Swt::NullColor do
|
|
48
|
+
subject(:color) { Shoes::Swt::Color.create(nil) }
|
|
49
|
+
|
|
50
|
+
it { is_expected.to be_instance_of(Shoes::Swt::NullColor) }
|
|
51
|
+
its(:real) { is_expected.to be_nil }
|
|
52
|
+
its(:dsl) { is_expected.to be_nil }
|
|
53
|
+
its(:alpha) { is_expected.to be_nil }
|
|
54
|
+
|
|
55
|
+
describe "pattern interface" do
|
|
56
|
+
let(:gc) { double("graphics context") }
|
|
57
|
+
|
|
58
|
+
it "sends no messages in #apply_as_fill" do
|
|
59
|
+
color.apply_as_fill(gc)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "sends no messages in #apply_as_stroke" do
|
|
63
|
+
color.apply_as_stroke(gc)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'swt_shoes/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Shoes::Swt::Common::Painter do
|
|
4
|
+
let(:object) {double 'object', dsl: dsl}
|
|
5
|
+
let(:dsl) {double 'dsl', visible?: true, positioned?: true}
|
|
6
|
+
let(:event) {double 'paint event', gc: graphics_context}
|
|
7
|
+
let(:graphics_context) { double 'graphics_context',
|
|
8
|
+
set_antialias: nil, set_line_cap: nil,
|
|
9
|
+
set_transform: nil, setTransform: nil }
|
|
10
|
+
let(:transform) { double 'transform', disposed?: false }
|
|
11
|
+
subject {Shoes::Swt::Common::Painter.new object}
|
|
12
|
+
|
|
13
|
+
before do
|
|
14
|
+
allow(::Swt::Transform).to receive(:new) { transform }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#paint_control' do
|
|
18
|
+
it 'should attempts to paint the object' do
|
|
19
|
+
expect(subject).to receive(:paint_object)
|
|
20
|
+
subject.paint_control event
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'does paint the object if it is hidden' do
|
|
24
|
+
allow(dsl).to receive_messages visible?: false
|
|
25
|
+
expect(subject).not_to receive(:paint_object)
|
|
26
|
+
subject.paint_control event
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it 'does not paint the object if it is not positioned' do
|
|
30
|
+
allow(dsl).to receive_messages positioned?: false
|
|
31
|
+
expect(subject).not_to receive(:paint_object)
|
|
32
|
+
subject.paint_control event
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "set_rotate" do
|
|
38
|
+
it "disposes of transform" do
|
|
39
|
+
expect(transform).to receive(:dispose)
|
|
40
|
+
expect(transform).to receive(:translate).at_least(:once)
|
|
41
|
+
expect(transform).to receive(:rotate).at_least(:once)
|
|
42
|
+
|
|
43
|
+
subject.set_rotate graphics_context, 0, 0, 0 do
|
|
44
|
+
#no-op
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'swt_shoes/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Shoes::Swt::Common::Remove do
|
|
4
|
+
let(:clazz) {
|
|
5
|
+
Class.new do
|
|
6
|
+
include Shoes::Swt::Common::Remove
|
|
7
|
+
|
|
8
|
+
attr_reader :app, :real, :dsl
|
|
9
|
+
|
|
10
|
+
def initialize(app, dsl, real = nil)
|
|
11
|
+
@app = app
|
|
12
|
+
@dsl = dsl
|
|
13
|
+
@real = real
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
let(:app) { double("app", clickable_elements: clickable_elements) }
|
|
19
|
+
let(:dsl) { double("dsl") }
|
|
20
|
+
let(:clickable_elements) { [dsl] }
|
|
21
|
+
|
|
22
|
+
subject { clazz.new(app, dsl) }
|
|
23
|
+
|
|
24
|
+
before do
|
|
25
|
+
expect(app).to receive(:remove_paint_listener)
|
|
26
|
+
expect(app).to receive(:remove_listener).at_least(:once)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe "remove" do
|
|
30
|
+
it "cleans up clickable element" do
|
|
31
|
+
subject.remove
|
|
32
|
+
expect(clickable_elements).to be_empty
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe "real disposal" do
|
|
37
|
+
let(:real) { double("real") }
|
|
38
|
+
|
|
39
|
+
subject { clazz.new(app, dsl, real) }
|
|
40
|
+
|
|
41
|
+
it "disposes of real if present" do
|
|
42
|
+
allow(real).to receive(:disposed?) { false }
|
|
43
|
+
expect(real).to receive(:dispose)
|
|
44
|
+
subject.remove
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "doesn't dispose if already done!" do
|
|
48
|
+
allow(real).to receive(:disposed?) { true }
|
|
49
|
+
expect(real).to_not receive(:dispose)
|
|
50
|
+
subject.remove
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
require 'swt_shoes/spec_helper'
|
|
2
|
+
|
|
3
|
+
main_object = self
|
|
4
|
+
|
|
5
|
+
describe Shoes::Swt::Dialog do
|
|
6
|
+
|
|
7
|
+
def double_message_box
|
|
8
|
+
create_double_message_box double(:mb, open: true, :message= => true)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def double_message_box_expecting_message(message)
|
|
12
|
+
double_dialog = double(:mb, open: true)
|
|
13
|
+
expect(double_dialog).to receive(:message=).with(message)
|
|
14
|
+
create_double_message_box double_dialog
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def double_message_box_returning(return_value)
|
|
18
|
+
create_double_message_box double(:mb, :message= => true, open: return_value)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def create_double_message_box(double_dialog)
|
|
22
|
+
allow(::Swt::Widgets::Shell).to receive(:new)
|
|
23
|
+
allow(::Swt::Widgets::MessageBox).to receive_messages(new: double_dialog)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
before :each do
|
|
27
|
+
@dialog = Shoes::Swt::Dialog.new
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
TEXT = 'some random text'
|
|
31
|
+
|
|
32
|
+
describe 'alert' do
|
|
33
|
+
it 'pops up a window containing a short message.' do
|
|
34
|
+
double_message_box_expecting_message TEXT
|
|
35
|
+
@dialog.alert TEXT
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it 'returns nil' do
|
|
39
|
+
double_message_box
|
|
40
|
+
expect(@dialog.alert('Nothing')).to be_nil
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe 'confirm' do
|
|
45
|
+
it 'pops up a window containing a short message.' do
|
|
46
|
+
double_message_box_expecting_message TEXT
|
|
47
|
+
@dialog.confirm TEXT
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it 'is true when YES was pressed' do
|
|
51
|
+
double_message_box_returning ::Swt::SWT::YES
|
|
52
|
+
expect(subject.confirm).to be_truthy
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it 'is false when NO was pressed' do
|
|
56
|
+
double_message_box_returning ::Swt::SWT::NO
|
|
57
|
+
expect(subject.confirm).to be_falsey
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it 'is false when an arbitary number is returned' do
|
|
61
|
+
double_message_box_returning 42
|
|
62
|
+
expect(subject.confirm).to be_falsey
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
describe 'dialog_chooser' do
|
|
67
|
+
it 'responds to it' do
|
|
68
|
+
expect(@dialog).to respond_to :dialog_chooser
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
describe 'ask' do
|
|
73
|
+
it 'responds to it' do
|
|
74
|
+
expect(@dialog).to respond_to :ask
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
describe 'ask_color' do
|
|
79
|
+
it 'responds to it' do
|
|
80
|
+
expect(@dialog).to respond_to :ask_color
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
describe 'on the main object' do
|
|
85
|
+
describe '#alert' do
|
|
86
|
+
|
|
87
|
+
it 'returns nil' do
|
|
88
|
+
double_message_box
|
|
89
|
+
expect(main_object.alert('Something')).to be_nil
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe '#confirm' do
|
|
94
|
+
it 'returns true when YES was clicked' do
|
|
95
|
+
double_message_box_returning ::Swt::SWT::YES
|
|
96
|
+
expect(main_object.confirm('1 + 1 = 2')).to be_truthy
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it 'returns false when NO was clicked' do
|
|
100
|
+
double_message_box_returning ::Swt::SWT::NO
|
|
101
|
+
expect(main_object.confirm('1 + 1 = 3')).to be_falsey
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
end
|