wxruby3 0.9.0.pre.rc.1 → 0.9.0.pre.rc.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +73 -22
  3. data/README.md +40 -8
  4. data/assets/hello_button-macos.png +0 -0
  5. data/assets/hello_button-msw.png +0 -0
  6. data/assets/hello_button_clicked-macos.png +0 -0
  7. data/assets/hello_button_clicked-msw.png +0 -0
  8. data/assets/hello_button_clicked_combi.png +0 -0
  9. data/assets/hello_world-macos.png +0 -0
  10. data/assets/hello_world-msw.png +0 -0
  11. data/assets/hello_world_combi.png +0 -0
  12. data/ext/wxruby3/swig/wx.i +2 -0
  13. data/lib/wx/core/brush.rb +6 -0
  14. data/lib/wx/core/event_loop.rb +7 -0
  15. data/lib/wx/core/evthandler.rb +12 -2
  16. data/lib/wx/core/font.rb +22 -14
  17. data/lib/wx/core/helpprovider.rb +2 -2
  18. data/lib/wx/core/image.rb +33 -0
  19. data/lib/wx/core/listctrl.rb +17 -13
  20. data/lib/wx/core/log.rb +90 -0
  21. data/lib/wx/core/menu.rb +5 -0
  22. data/lib/wx/core/pen.rb +6 -0
  23. data/lib/wx/core/window.rb +28 -1
  24. data/lib/wx/doc/app.rb +40 -0
  25. data/lib/wx/doc/bitmap.rb +11 -15
  26. data/lib/wx/doc/brush.rb +17 -0
  27. data/lib/wx/doc/event_loop.rb +7 -0
  28. data/lib/wx/doc/extra/00_starting.md +6 -6
  29. data/lib/wx/doc/extra/02_lifecycles.md +9 -8
  30. data/lib/wx/doc/extra/09_exceptions.md +1 -1
  31. data/lib/wx/doc/extra/11_drawing_and_dc.md +4 -4
  32. data/lib/wx/doc/font.rb +27 -0
  33. data/lib/wx/doc/functions.rb +51 -23
  34. data/lib/wx/doc/gc_dc.rb +1 -1
  35. data/lib/wx/doc/image.rb +42 -12
  36. data/lib/wx/doc/list_ctrl.rb +32 -0
  37. data/lib/wx/doc/log.rb +28 -0
  38. data/lib/wx/doc/pen.rb +17 -0
  39. data/lib/wx/doc/prt/printer_dc.rb +2 -2
  40. data/lib/wx/doc/radio_box.rb +20 -0
  41. data/lib/wx/doc/scaled_dc.rb +1 -1
  42. data/lib/wx/doc/text_validator.rb +12 -0
  43. data/lib/wx/doc/window.rb +27 -0
  44. data/lib/wx/keyword_defs.rb +77 -76
  45. data/lib/wx/prt/keyword_defs.rb +5 -1
  46. data/lib/wx/version.rb +1 -1
  47. data/rakelib/install.rb +17 -6
  48. data/rakelib/lib/config/linux.rb +4 -2
  49. data/rakelib/lib/config/macosx.rb +120 -1
  50. data/rakelib/lib/config/mingw.rb +6 -1
  51. data/rakelib/lib/config/unixish.rb +26 -11
  52. data/rakelib/lib/config.rb +15 -6
  53. data/rakelib/lib/core/mapping.rb +15 -10
  54. data/rakelib/lib/core/package.rb +4 -1
  55. data/rakelib/lib/core/spec.rb +23 -12
  56. data/rakelib/lib/core/spec_helper.rb +6 -0
  57. data/rakelib/lib/director/app.rb +30 -1
  58. data/rakelib/lib/director/aui_toolbar.rb +41 -0
  59. data/rakelib/lib/director/brush.rb +10 -1
  60. data/rakelib/lib/director/combobox.rb +1 -1
  61. data/rakelib/lib/director/context_help_button.rb +23 -0
  62. data/rakelib/lib/director/dialog.rb +33 -2
  63. data/rakelib/lib/director/event_loop.rb +26 -0
  64. data/rakelib/lib/director/font.rb +12 -3
  65. data/rakelib/lib/director/functions.rb +44 -48
  66. data/rakelib/lib/director/help_provider.rb +8 -10
  67. data/rakelib/lib/director/hyperlink_event.rb +22 -0
  68. data/rakelib/lib/director/image.rb +32 -0
  69. data/rakelib/lib/director/list_ctrl.rb +3 -2
  70. data/rakelib/lib/director/log.rb +64 -4
  71. data/rakelib/lib/director/menu.rb +0 -3
  72. data/rakelib/lib/director/menu_bar.rb +3 -0
  73. data/rakelib/lib/director/pen.rb +10 -1
  74. data/rakelib/lib/director/popup_window.rb +18 -0
  75. data/rakelib/lib/director/radio_box.rb +15 -4
  76. data/rakelib/lib/director/searchctrl.rb +2 -1
  77. data/rakelib/lib/director/static_box.rb +1 -1
  78. data/rakelib/lib/director/styled_text_ctrl.rb +1 -1
  79. data/rakelib/lib/director/text_entry.rb +30 -0
  80. data/rakelib/lib/director/text_validator.rb +8 -2
  81. data/rakelib/lib/director/textctrl.rb +1 -1
  82. data/rakelib/lib/director/variant.rb +17 -4
  83. data/rakelib/lib/director/window.rb +37 -1
  84. data/rakelib/lib/extractor/function.rb +7 -7
  85. data/rakelib/lib/extractor/variable.rb +6 -6
  86. data/rakelib/lib/generate/doc/aui_manager.yaml +21 -0
  87. data/rakelib/lib/generate/doc/context_help_button.yaml +16 -0
  88. data/rakelib/lib/generate/doc/event_blocker.yaml +27 -0
  89. data/rakelib/lib/generate/doc/event_filter.yaml +47 -0
  90. data/rakelib/lib/generate/doc/file_dialog.yaml +68 -0
  91. data/rakelib/lib/generate/doc/font.yaml +29 -0
  92. data/rakelib/lib/generate/doc/frame.yaml +23 -0
  93. data/rakelib/lib/generate/doc/fs_file.yaml +11 -0
  94. data/rakelib/lib/generate/doc/gdi_common.yaml +36 -0
  95. data/rakelib/lib/generate/doc/graphics_context.yaml +34 -0
  96. data/rakelib/lib/generate/doc/gui_event_loop.yaml +12 -0
  97. data/rakelib/lib/generate/doc/help_controller.yaml +24 -0
  98. data/rakelib/lib/generate/doc/icon.yaml +11 -0
  99. data/rakelib/lib/generate/doc/image.yaml +87 -0
  100. data/rakelib/lib/generate/doc/keyboard_state.yaml +19 -0
  101. data/rakelib/lib/generate/doc/list_ctrl.yaml +77 -0
  102. data/rakelib/lib/generate/doc/locale.yaml +12 -0
  103. data/rakelib/lib/generate/doc/log.yaml +86 -0
  104. data/rakelib/lib/generate/doc/mdi_frame.yaml +12 -0
  105. data/rakelib/lib/generate/doc/memory_dc.yaml +42 -0
  106. data/rakelib/lib/generate/doc/menu.yaml +17 -0
  107. data/rakelib/lib/generate/doc/menu_item.yaml +43 -0
  108. data/rakelib/lib/generate/doc/message_dialog.yaml +36 -0
  109. data/rakelib/lib/generate/doc/non_owned_window.yaml +14 -0
  110. data/rakelib/lib/generate/doc/notebook.yaml +18 -0
  111. data/rakelib/lib/generate/doc/pen.yaml +11 -0
  112. data/rakelib/lib/generate/doc/picker_base.yaml +19 -0
  113. data/rakelib/lib/generate/doc/platform_info.yaml +15 -0
  114. data/rakelib/lib/generate/doc/property_sheet_dialog.yaml +26 -0
  115. data/rakelib/lib/generate/doc/scroll_bar.yaml +11 -0
  116. data/rakelib/lib/generate/doc/scrolled_canvas.yaml +37 -0
  117. data/rakelib/lib/generate/doc/scrolled_control.yaml +37 -0
  118. data/rakelib/lib/generate/doc/scrolled_window.yaml +37 -0
  119. data/rakelib/lib/generate/doc/sizer.yaml +69 -0
  120. data/rakelib/lib/generate/doc/splash_screen.yaml +18 -0
  121. data/rakelib/lib/generate/doc/static_box.yaml +52 -0
  122. data/rakelib/lib/generate/doc/static_box_sizer.yaml +22 -0
  123. data/rakelib/lib/generate/doc/svg_file_dc.yaml +11 -0
  124. data/rakelib/lib/generate/doc/text_ctrl.yaml +19 -0
  125. data/rakelib/lib/generate/doc/text_entry.yaml +42 -0
  126. data/rakelib/lib/generate/doc/text_entry_dialog.yaml +17 -0
  127. data/rakelib/lib/generate/doc/timer_event.yaml +28 -0
  128. data/rakelib/lib/generate/doc/tool_bar.yaml +35 -0
  129. data/rakelib/lib/generate/doc/top_level_window.yaml +23 -0
  130. data/rakelib/lib/generate/doc/validator.yaml +12 -0
  131. data/rakelib/lib/generate/doc/variant.yaml +29 -0
  132. data/rakelib/lib/generate/doc/window.yaml +249 -0
  133. data/rakelib/lib/generate/doc/wizard_page_simple.yaml +14 -0
  134. data/rakelib/lib/generate/doc/xml_node.yaml +7 -0
  135. data/rakelib/lib/generate/doc/xml_resource.yaml +27 -0
  136. data/rakelib/lib/generate/doc.rb +36 -2
  137. data/rakelib/lib/generate/interface.rb +11 -10
  138. data/rakelib/lib/specs/interfaces.rb +5 -1
  139. data/rakelib/lib/swig_runner.rb +37 -0
  140. data/samples/aui/aui.rb +432 -363
  141. data/samples/propgrid/propgrid.rb +3 -0
  142. data/samples/sampler/editor.rb +33 -25
  143. data/samples/sampler/sample.rb +2 -2
  144. data/samples/sampler/stc_editor.rb +4 -2
  145. data/tests/lib/item_container_tests.rb +82 -0
  146. data/tests/lib/text_entry_tests.rb +80 -0
  147. data/tests/lib/wxapp_runner.rb +12 -0
  148. data/tests/lib/wxframe_runner.rb +89 -4
  149. data/tests/test_art.rb +9 -0
  150. data/tests/test_box_sizer.rb +161 -0
  151. data/tests/test_ext_controls.rb +28 -0
  152. data/tests/test_font.rb +239 -0
  153. data/tests/test_grid_sizer.rb +148 -0
  154. data/tests/test_intl.rb +5 -1
  155. data/tests/test_list_ctrl.rb +53 -0
  156. data/tests/test_log.rb +163 -0
  157. data/tests/test_std_controls.rb +321 -37
  158. data/tests/test_timer.rb +95 -0
  159. data/tests/test_window.rb +340 -0
  160. metadata +85 -2
@@ -1,31 +1,31 @@
1
1
 
2
2
  require_relative './lib/wxframe_runner'
3
+ require_relative './lib/text_entry_tests'
4
+ require_relative './lib/item_container_tests'
3
5
 
4
6
  class ButtonTests < WxRuby::Test::GUITests
5
7
 
6
8
  def setup
7
9
  super
8
- @button = Wx::Button.new(test_frame, name: 'Button')
9
- Wx.get_app.yield
10
+ @button = Wx::Button.new(test_frame, label: 'Button')
10
11
  end
11
12
 
12
13
  def cleanup
13
14
  @button.destroy
14
- Wx.get_app.yield
15
15
  super
16
16
  end
17
17
 
18
18
  attr_reader :button
19
19
 
20
- if Wx.has_feature?(:USE_UIACTIONSIMULATOR)
20
+ if has_ui_simulator?
21
21
 
22
22
  def test_click
23
23
  count = count_events(button, :evt_button) do
24
24
  sim = Wx::UIActionSimulator.new
25
25
 
26
- # We move in slightly to account for window decorations, we need to yield
26
+ # We move in to the middle of the widget, we need to yield
27
27
  # after every Wx::UIActionSimulator action to keep everything working in GTK
28
- sim.mouse_move(button.get_screen_position + Wx::Point.new(10, 10))
28
+ sim.mouse_move(button.get_screen_position + (button.size / 2))
29
29
  Wx.get_app.yield
30
30
 
31
31
  sim.mouse_click
@@ -40,9 +40,9 @@ class ButtonTests < WxRuby::Test::GUITests
40
40
  count = count_events(button, :evt_button) do
41
41
  sim = Wx::UIActionSimulator.new
42
42
 
43
- # We move in slightly to account for window decorations, we need to yield
43
+ # We move in to the middle of the widget, we need to yield
44
44
  # after every Wx::UIActionSimulator action to keep everything working in GTK
45
- sim.mouse_move(button.get_screen_position + Wx::Point.new(10, 10))
45
+ sim.mouse_move(button.get_screen_position + (button.size / 2))
46
46
  Wx.get_app.yield
47
47
 
48
48
  sim.mouse_click
@@ -52,7 +52,7 @@ class ButtonTests < WxRuby::Test::GUITests
52
52
  assert_equal(0, count)
53
53
  end
54
54
 
55
- end # wxUSE_UIACTIONSIMULATOR
55
+ end # has_ui_simulator?
56
56
 
57
57
  def test_bitmap
58
58
  # We start with no bitmaps
@@ -91,57 +91,341 @@ end
91
91
 
92
92
  class TextCtrlTests < WxRuby::Test::GUITests
93
93
 
94
+ include TextEntryTests
95
+
94
96
  def setup
95
97
  super
96
98
  @text = Wx::TextCtrl.new(test_frame, name: 'Text')
97
- Wx.get_app.yield
98
99
  end
99
100
 
100
101
  def cleanup
101
102
  @text.destroy
102
- Wx.get_app.yield
103
103
  super
104
104
  end
105
105
 
106
106
  attr_reader :text
107
+ alias :text_entry :text
107
108
 
109
+ def test_text
110
+ assert_equal('', text.get_value)
111
+ end
108
112
 
109
- if Wx.has_feature?(:USE_UIACTIONSIMULATOR)
113
+ if has_ui_simulator?
114
+ def test_max_length
115
+ sim = Wx::UIActionSimulator.new
110
116
 
111
- def test_text
112
- assert_equal('', text.get_value)
113
- sim = Wx::UIActionSimulator.new
117
+ updates = count_events(text_entry, :evt_text) do |c_upd|
118
+ maxlen_count = count_events(text_entry, :evt_text_maxlen) do |c_maxlen|
119
+ # set focus to text_entry text_entry
120
+ text_entry.set_focus
121
+ Wx.get_app.yield
114
122
 
115
- updates = count_events(text, :evt_text) do |c_upd|
116
- maxlen_count = count_events(text, :evt_text_maxlen) do |c_maxlen|
117
- # set focus to text control
118
- text.set_focus
119
- Wx.get_app.yield
123
+ sim.text('Hello')
124
+ Wx.get_app.yield
120
125
 
121
- sim.text('Hello')
122
- Wx.get_app.yield
126
+ assert_equal('Hello', text_entry.get_value)
127
+ assert_equal(5, c_upd.count)
123
128
 
124
- assert_equal('Hello', text.get_value)
125
- assert_equal(5, c_upd.count)
129
+ text_entry.set_max_length(10)
130
+ sim.text('World')
131
+ Wx.get_app.yield
126
132
 
127
- text.set_max_length(10)
128
- sim.text('World')
129
- Wx.get_app.yield
133
+ assert_equal('HelloWorld', text_entry.get_value)
134
+ assert_equal(10, c_upd.count)
135
+ assert_equal(0, c_maxlen.count)
130
136
 
131
- assert_equal('HelloWorld', text.get_value)
132
- assert_equal(10, c_upd.count)
133
- assert_equal(0, c_maxlen.count)
137
+ sim.text('!')
138
+ Wx.get_app.yield
134
139
 
135
- sim.text('!')
136
- Wx.get_app.yield
137
-
138
- assert_equal('HelloWorld', text.get_value)
139
- assert_equal(10, c_upd.count)
140
- assert_equal(1, c_maxlen.count)
141
- end
140
+ assert_equal('HelloWorld', text_entry.get_value)
141
+ assert_equal(10, c_upd.count)
142
+ assert_equal(1, c_maxlen.count)
142
143
  end
143
144
  end
145
+ end
146
+
147
+ end # has_ui_simulator?
148
+
149
+ end
150
+
151
+ class ComboBoxTests < WxRuby::Test::GUITests
152
+
153
+ include TextEntryTests
144
154
 
155
+ def setup
156
+ super
157
+ @combo = Wx::ComboBox.new(test_frame, name: 'ComboBox', choices: %w[One Two Three])
158
+ @combo.clear
159
+ end
160
+
161
+ def cleanup
162
+ @combo.destroy
163
+ super
145
164
  end
146
165
 
166
+ attr_reader :combo
167
+ alias :text_entry :combo
168
+
169
+ def test_combo
170
+ assert_equal('', combo.get_value)
171
+ end
172
+
173
+ end
174
+
175
+ class CheckBoxTests < WxRuby::Test::GUITests
176
+
177
+ def setup
178
+ super
179
+ @check = Wx::CheckBox.new(test_frame, label: 'Check Box')
180
+ end
181
+
182
+ def cleanup
183
+ @check.destroy
184
+ super
185
+ end
186
+
187
+ def create_checkbox(style)
188
+ @check.destroy
189
+ @check = nil
190
+ @check = Wx::CheckBox.new(test_frame, label: 'Check Box', style: style)
191
+ end
192
+
193
+ attr_reader :check
194
+
195
+ def test_check
196
+ count = count_events(check, :evt_checkbox) do
197
+ assert(!check.checked?)
198
+
199
+ check.set_value(true)
200
+
201
+ assert(check.checked?)
202
+
203
+ check.set_value(false)
204
+
205
+ assert(!check.checked?)
206
+
207
+ check.set3state_value(Wx::CheckBoxState::CHK_CHECKED)
208
+
209
+ assert(check.checked?)
210
+
211
+ check.set3state_value(Wx::CheckBoxState::CHK_UNCHECKED)
212
+
213
+ assert(!check.checked?)
214
+
215
+ end
216
+
217
+ assert_equal(0, count) # should not have emitted any events
218
+ end
219
+
220
+ def test_third_state
221
+
222
+ create_checkbox(Wx::CHK_3STATE)
223
+
224
+ assert_equal(Wx::CheckBoxState::CHK_UNCHECKED, check.get3state_value)
225
+ assert(check.is3state)
226
+ assert(!check.is3rd_state_allowed_for_user)
227
+
228
+ check.value = true
229
+
230
+ assert_equal(Wx::CheckBoxState::CHK_CHECKED, check.get3state_value)
231
+
232
+ check.set3state_value(Wx::CheckBoxState::CHK_UNDETERMINED)
233
+
234
+ assert_equal(Wx::CheckBoxState::CHK_UNDETERMINED, check.get3state_value)
235
+ end
236
+
237
+ def test_third_state_user
238
+
239
+ create_checkbox(Wx::CHK_3STATE | Wx::CHK_ALLOW_3RD_STATE_FOR_USER)
240
+
241
+ assert_equal(Wx::CheckBoxState::CHK_UNCHECKED, check.get3state_value)
242
+ assert(check.is3state)
243
+ assert(check.is3rd_state_allowed_for_user)
244
+
245
+ check.value = true
246
+
247
+ assert_equal(Wx::CheckBoxState::CHK_CHECKED, check.get3state_value)
248
+
249
+ check.set3state_value(Wx::CheckBoxState::CHK_UNDETERMINED)
250
+
251
+ assert_equal(Wx::CheckBoxState::CHK_UNDETERMINED, check.get3state_value)
252
+ end
253
+
254
+ def test_invalid_style
255
+
256
+ # prints assertion warning and creates default checkbox
257
+ assert_with_assertion_failure { create_checkbox(Wx::CHK_3STATE | Wx::CHK_2STATE) }
258
+
259
+ end
260
+
261
+ end
262
+
263
+
264
+ class RadioBoxTests < WxRuby::Test::GUITests
265
+
266
+ def setup
267
+ super
268
+ @radiobox = Wx::RadioBox.new(test_frame, label: 'Radio Box', choices: ['item 0', 'item 1', 'item 2'])
269
+ end
270
+
271
+ def cleanup
272
+ @radiobox.destroy
273
+ super
274
+ end
275
+
276
+ attr_reader :radiobox
277
+
278
+ def test_find_string
279
+ assert_equal(Wx::NOT_FOUND, radiobox.find_string('Not An Item'))
280
+ assert_equal(1, radiobox.find_string('item 1'))
281
+ assert_equal(2, radiobox.find_string('ITEM 2'))
282
+ assert_equal(Wx::NOT_FOUND, radiobox.find_string('ITEM 2', true))
283
+ end
284
+
285
+ def test_show
286
+ radiobox.show(false)
287
+
288
+ assert(!radiobox.is_item_shown(0))
289
+
290
+ radiobox.show_item(1, true)
291
+
292
+ assert(!radiobox.is_item_shown(0))
293
+ assert(radiobox.is_item_shown(1))
294
+ assert(!radiobox.is_item_shown(2))
295
+
296
+ radiobox.show(true)
297
+
298
+ assert(radiobox.is_item_shown(0))
299
+ assert(radiobox.is_item_shown(1))
300
+ assert(radiobox.is_item_shown(2))
301
+
302
+ radiobox.show_item(0, false)
303
+
304
+ assert(!radiobox.is_item_shown(0))
305
+ assert(radiobox.is_item_shown(1))
306
+ assert(radiobox.is_item_shown(2))
307
+ end
308
+
309
+ def test_selection
310
+ # by default first item selected
311
+ assert_equal(0, radiobox.get_selection)
312
+ assert_equal('item 0', radiobox.get_string_selection)
313
+
314
+ radiobox.set_selection(1)
315
+
316
+ assert_equal(1, radiobox.get_selection)
317
+ assert_equal('item 1', radiobox.get_string_selection)
318
+
319
+ radiobox.string_selection = 'item 2'
320
+
321
+ assert_equal(2, radiobox.selection)
322
+ assert_equal('item 2', radiobox.string_selection)
323
+ end
324
+
325
+ def test_set_string
326
+ radiobox.set_string(0, 'new item 0')
327
+ radiobox.set_string(2, '')
328
+
329
+ assert_equal('new item 0', radiobox.get_string(0))
330
+ assert_equal('', radiobox.string(2))
331
+ end
332
+
333
+ def test_count
334
+ assert_equal(3, radiobox.get_count)
335
+ assert(!radiobox.empty?)
336
+ end
337
+
338
+ def test_help_text
339
+ assert(radiobox.get_item_help_text(1).empty?)
340
+
341
+ radiobox.set_item_help_text(1, 'Item 1 Help')
342
+
343
+ assert_equal('Item 1 Help', radiobox.get_item_help_text(1))
344
+
345
+ radiobox.set_item_help_text(1, '')
346
+
347
+ assert(radiobox.get_item_help_text(1).empty?)
348
+ end
349
+
350
+ end
351
+
352
+ class ChoiceTests < WxRuby::Test::GUITests
353
+
354
+ include ItemContainerTests
355
+
356
+ def setup
357
+ super
358
+ @choice = Wx::Choice.new(test_frame, name: 'Choice')
359
+ end
360
+
361
+ def cleanup
362
+ @choice.destroy
363
+ super
364
+ end
365
+
366
+ attr_reader :choice
367
+ alias :container :choice
368
+
369
+ def test_choice
370
+ assert_equal(Wx::NOT_FOUND, choice.get_selection)
371
+ end
372
+
373
+ end
374
+
375
+ class GaugeTests < WxRuby::Test::GUITests
376
+
377
+ def setup
378
+ super
379
+ @gauge = Wx::Gauge.new(test_frame, range: 100)
380
+ end
381
+
382
+ def cleanup
383
+ test_frame.destroy_children
384
+ super
385
+ end
386
+
387
+ attr_reader :gauge
388
+
389
+ def test_direction
390
+ #We should default to a horizontal gauge
391
+ assert(!gauge.is_vertical)
392
+
393
+ gauge.destroy
394
+ @gauge = Wx::Gauge.new(test_frame, range: 100, style: Wx::GA_VERTICAL)
395
+
396
+ assert(gauge.vertical?)
397
+
398
+ gauge.destroy
399
+ @gauge = Wx::Gauge.new(test_frame, range: 100, style: Wx::GA_HORIZONTAL)
400
+
401
+ assert(!gauge.vertical?)
402
+ end
403
+
404
+ def test_range
405
+ assert_equal(100, gauge.get_range)
406
+
407
+ gauge.set_range(50)
408
+
409
+ assert_equal(50, gauge.get_range)
410
+
411
+ gauge.set_range(0)
412
+
413
+ assert_equal(0, gauge.range)
414
+ end
415
+
416
+ def test_value
417
+ assert_equal(0, gauge.get_value)
418
+
419
+ gauge.set_value(50)
420
+
421
+ assert_equal(50, gauge.value)
422
+
423
+ gauge.value = 0
424
+
425
+ assert_equal(0, gauge.get_value)
426
+
427
+ gauge.set_value(100)
428
+
429
+ assert_equal(100, gauge.value)
430
+ end
147
431
  end
@@ -0,0 +1,95 @@
1
+
2
+ require_relative './lib/wxapp_runner'
3
+
4
+ class TimerTests < Test::Unit::TestCase
5
+
6
+ class TimerCounterHandler < Wx::EvtHandler
7
+
8
+ def initialize
9
+ super
10
+ @count = 0
11
+ evt_timer Wx::ID_ANY, :on_timer
12
+ end
13
+
14
+ attr_reader :count
15
+
16
+ private
17
+
18
+ def on_timer(_evt)
19
+ @count += 1
20
+ tick
21
+ end
22
+
23
+ def tick
24
+ # noop
25
+ end
26
+
27
+ end
28
+
29
+ def test_one_shot
30
+
31
+ handler = Class.new(TimerCounterHandler) do
32
+ def initialize(loop)
33
+ super()
34
+ @loop = loop
35
+ end
36
+
37
+ def run
38
+ @timer = Wx::Timer.new(self)
39
+ @timer.start(200, true)
40
+ @loop.run
41
+ end
42
+
43
+ def tick
44
+ @timer.stop
45
+ @loop.exit
46
+ end
47
+ end.new(Wx::EventLoop.new)
48
+
49
+ handler.run
50
+
51
+ assert_equal(1, handler.count)
52
+ end
53
+
54
+ def test_multiple
55
+
56
+
57
+ handler = Class.new(TimerCounterHandler) do
58
+ def initialize(loop)
59
+ super()
60
+ @loop = loop
61
+ end
62
+
63
+ def run
64
+ @timer = Wx::Timer.new(self)
65
+ @timer.start(100)
66
+ # run for 2 seconds
67
+ @tm_end = Time.now + 2
68
+ @loop.run
69
+ end
70
+
71
+ def tick
72
+ # exit after 2 seconds
73
+ unless Time.now < @tm_end
74
+ @timer.stop
75
+ @loop.exit
76
+ end
77
+ end
78
+ end.new(Wx::EventLoop.new)
79
+
80
+
81
+ handler.run
82
+
83
+ # we can't count on getting exactly 20 ticks but we shouldn't get more
84
+ # than this
85
+ num_ticks = handler.count
86
+ assert( num_ticks <= 20 )
87
+
88
+ # and we should get a decent number of them but if the system is very
89
+ # loaded (as happens with build bot slaves running a couple of builds in
90
+ # parallel actually) it may be much less than 20 so just check that we get
91
+ # more than one
92
+ assert( num_ticks > 1 )
93
+ end
94
+
95
+ end