treetop 1.1.2 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/Rakefile +6 -6
  2. data/doc/images/bottom_background.png +0 -0
  3. data/doc/images/middle_backgound.png +0 -0
  4. data/doc/images/middle_background.png +0 -0
  5. data/doc/images/top_background.png +0 -0
  6. data/doc/index.markdown +13 -8
  7. data/doc/screen.css +52 -0
  8. data/doc/site.html +34 -0
  9. data/doc/site.rb +41 -0
  10. data/examples/lambda_calculus/lambda_calculus.rb +2 -2
  11. data/lib/treetop/bootstrap_gen_1_metagrammar.rb +37 -0
  12. data/lib/treetop/compiler/metagrammar. +0 -0
  13. data/lib/treetop/compiler/metagrammar.rb +20 -9
  14. data/lib/treetop/compiler/metagrammar.treetop +1 -1
  15. data/lib/treetop/compiler/node_classes/declaration_sequence.rb +1 -7
  16. data/lib/treetop/compiler/node_classes/grammar.rb +2 -2
  17. data/lib/treetop/runtime/compiled_parser.rb +15 -2
  18. metadata +12 -74
  19. data/test/compilation_target/target.rb +0 -143
  20. data/test/compilation_target/target.treetop +0 -15
  21. data/test/compilation_target/target_test.rb +0 -56
  22. data/test/compiler/and_predicate_test.rb +0 -33
  23. data/test/compiler/anything_symbol_test.rb +0 -24
  24. data/test/compiler/character_class_test.rb +0 -45
  25. data/test/compiler/choice_test.rb +0 -74
  26. data/test/compiler/circular_compilation_test.rb +0 -20
  27. data/test/compiler/failure_propagation_functional_test.rb +0 -20
  28. data/test/compiler/grammar_compiler_test.rb +0 -58
  29. data/test/compiler/grammar_test.rb +0 -37
  30. data/test/compiler/nonterminal_symbol_test.rb +0 -38
  31. data/test/compiler/not_predicate_test.rb +0 -35
  32. data/test/compiler/one_or_more_test.rb +0 -30
  33. data/test/compiler/optional_test.rb +0 -32
  34. data/test/compiler/parenthesized_expression_test.rb +0 -17
  35. data/test/compiler/parsing_rule_test.rb +0 -30
  36. data/test/compiler/sequence_test.rb +0 -68
  37. data/test/compiler/terminal_symbol_test.rb +0 -35
  38. data/test/compiler/test_grammar.treetop +0 -7
  39. data/test/compiler/zero_or_more_test.rb +0 -51
  40. data/test/composition/a.treetop +0 -11
  41. data/test/composition/b.treetop +0 -11
  42. data/test/composition/c.treetop +0 -10
  43. data/test/composition/d.treetop +0 -10
  44. data/test/composition/grammar_composition_test.rb +0 -23
  45. data/test/parser/syntax_node_test.rb +0 -53
  46. data/test/parser/terminal_parse_failure_test.rb +0 -22
  47. data/test/ruby_extensions/string_test.rb +0 -33
  48. data/test/screw/Rakefile +0 -16
  49. data/test/screw/unit.rb +0 -37
  50. data/test/screw/unit/assertion_failed_error.rb +0 -14
  51. data/test/screw/unit/assertions.rb +0 -615
  52. data/test/screw/unit/auto_runner.rb +0 -227
  53. data/test/screw/unit/collector.rb +0 -45
  54. data/test/screw/unit/collector/dir.rb +0 -107
  55. data/test/screw/unit/collector/objectspace.rb +0 -28
  56. data/test/screw/unit/error.rb +0 -48
  57. data/test/screw/unit/failure.rb +0 -45
  58. data/test/screw/unit/sugar.rb +0 -25
  59. data/test/screw/unit/test_case.rb +0 -176
  60. data/test/screw/unit/test_result.rb +0 -73
  61. data/test/screw/unit/test_suite.rb +0 -70
  62. data/test/screw/unit/ui.rb +0 -4
  63. data/test/screw/unit/ui/console/test_runner.rb +0 -118
  64. data/test/screw/unit/ui/fox/test_runner.rb +0 -268
  65. data/test/screw/unit/ui/gtk/test_runner.rb +0 -416
  66. data/test/screw/unit/ui/gtk2/testrunner.rb +0 -465
  67. data/test/screw/unit/ui/test_runner_mediator.rb +0 -58
  68. data/test/screw/unit/ui/test_runner_utilities.rb +0 -46
  69. data/test/screw/unit/ui/tk/test_runner.rb +0 -260
  70. data/test/screw/unit/util.rb +0 -4
  71. data/test/screw/unit/util/backtrace_filter.rb +0 -40
  72. data/test/screw/unit/util/observable.rb +0 -82
  73. data/test/screw/unit/util/proc_wrapper.rb +0 -48
  74. data/test/test_helper.rb +0 -90
@@ -1,465 +0,0 @@
1
- #--
2
- #
3
- # Author:: Kenta MURATA.
4
- # Copyright:: Copyright (c) 2000-2002 Kenta MURATA. All rights reserved.
5
- # License:: Ruby license.
6
-
7
- require "gtk2"
8
- require "fancy/unit/ui/test_runnermediator"
9
- require "fancy/unit/ui/test_runnerutilities"
10
-
11
- module Screw
12
- module Unit
13
- module UI
14
- module GTK2
15
-
16
- Gtk.init
17
-
18
- class EnhancedLabel < Gtk::Label
19
- def set_text(text)
20
- super(text.gsub(/\n\t/, "\n "))
21
- end
22
- end
23
-
24
- class FaultList < Gtk::TreeView
25
- def initialize
26
- @faults = []
27
- @model = Gtk::ListStore.new(String, String)
28
- super(@model)
29
- column = Gtk::TreeViewColumn.new
30
- column.visible = false
31
- append_column(column)
32
- renderer = Gtk::CellRendererText.new
33
- column = Gtk::TreeViewColumn.new("Failures", renderer, {:text => 1})
34
- append_column(column)
35
- selection.mode = Gtk::SELECTION_SINGLE
36
- set_rules_hint(true)
37
- set_headers_visible(false)
38
- end # def initialize
39
-
40
- def add_fault(fault)
41
- @faults.push(fault)
42
- iter = @model.append
43
- iter.set_value(0, (@faults.length - 1).to_s)
44
- iter.set_value(1, fault.short_display)
45
- end # def add_fault(fault)
46
-
47
- def get_fault(iter)
48
- @faults[iter.get_value(0).to_i]
49
- end # def get_fault
50
-
51
- def clear
52
- model.clear
53
- end # def clear
54
- end
55
-
56
- class TestRunner
57
- extend TestRunnerUtilities
58
-
59
- def lazy_initialize(symbol)
60
- if !instance_eval("defined?(@#{symbol})") then
61
- yield
62
- end
63
- return instance_eval("@#{symbol}")
64
- end
65
- private :lazy_initialize
66
-
67
- def status_entry
68
- lazy_initialize(:status_entry) do
69
- @status_entry = Gtk::Entry.new
70
- @status_entry.editable = false
71
- end
72
- end
73
- private :status_entry
74
-
75
- def status_panel
76
- lazy_initialize(:status_panel) do
77
- @status_panel = Gtk::HBox.new
78
- @status_panel.border_width = 10
79
- @status_panel.pack_start(status_entry, true, true, 0)
80
- end
81
- end
82
- private :status_panel
83
-
84
- def fault_detail_label
85
- lazy_initialize(:fault_detail_label) do
86
- @fault_detail_label = EnhancedLabel.new("")
87
- # style = Gtk::Style.new
88
- # font = Gdk::Font.
89
- # font_load("-*-Courier 10 Pitch-medium-r-normal--*-120-*-*-*-*-*-*")
90
- # style.set_font(font)
91
- # @fault_detail_label.style = style
92
- @fault_detail_label.justify = Gtk::JUSTIFY_LEFT
93
- @fault_detail_label.wrap = false
94
- end
95
- end
96
- private :fault_detail_label
97
-
98
- def inner_detail_sub_panel
99
- lazy_initialize(:inner_detail_sub_panel) do
100
- @inner_detail_sub_panel = Gtk::HBox.new
101
- @inner_detail_sub_panel.pack_start(fault_detail_label, false, false, 0)
102
- end
103
- end
104
- private :inner_detail_sub_panel
105
-
106
- def outer_detail_sub_panel
107
- lazy_initialize(:outer_detail_sub_panel) do
108
- @outer_detail_sub_panel = Gtk::VBox.new
109
- @outer_detail_sub_panel.pack_start(inner_detail_sub_panel, false, false, 0)
110
- end
111
- end
112
- private :outer_detail_sub_panel
113
-
114
- def detail_scrolled_window
115
- lazy_initialize(:detail_scrolled_window) do
116
- @detail_scrolled_window = Gtk::ScrolledWindow.new
117
- @detail_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
118
- @detail_scrolled_window.
119
- set_size_request(400, @detail_scrolled_window.allocation.height)
120
- @detail_scrolled_window.add_with_viewport(outer_detail_sub_panel)
121
- end
122
- end
123
- private :detail_scrolled_window
124
-
125
- def detail_panel
126
- lazy_initialize(:detail_panel) do
127
- @detail_panel = Gtk::HBox.new
128
- @detail_panel.border_width = 10
129
- @detail_panel.pack_start(detail_scrolled_window, true, true, 0)
130
- end
131
- end
132
- private :detail_panel
133
-
134
- def fault_list
135
- lazy_initialize(:fault_list) do
136
- @fault_list = FaultList.new
137
- end
138
- end
139
- private :fault_list
140
-
141
- def list_scrolled_window
142
- lazy_initialize(:list_scrolled_window) do
143
- @list_scrolled_window = Gtk::ScrolledWindow.new
144
- @list_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
145
- @list_scrolled_window.
146
- set_size_request(@list_scrolled_window.allocation.width, 150)
147
- @list_scrolled_window.add_with_viewport(fault_list)
148
- end
149
- end
150
- private :list_scrolled_window
151
-
152
- def list_panel
153
- lazy_initialize(:list_panel) do
154
- @list_panel = Gtk::HBox.new
155
- @list_panel.border_width = 10
156
- @list_panel.pack_start(list_scrolled_window, true, true, 0)
157
- end
158
- end
159
- private :list_panel
160
-
161
- def error_count_label
162
- lazy_initialize(:error_count_label) do
163
- @error_count_label = Gtk::Label.new("0")
164
- @error_count_label.justify = Gtk::JUSTIFY_LEFT
165
- end
166
- end
167
- private :error_count_label
168
-
169
- def failure_count_label
170
- lazy_initialize(:failure_count_label) do
171
- @failure_count_label = Gtk::Label.new("0")
172
- @failure_count_label.justify = Gtk::JUSTIFY_LEFT
173
- end
174
- end
175
- private :failure_count_label
176
-
177
- def assertion_count_label
178
- lazy_initialize(:assertion_count_label) do
179
- @assertion_count_label = Gtk::Label.new("0")
180
- @assertion_count_label.justify = Gtk::JUSTIFY_LEFT
181
- end
182
- end
183
- private :assertion_count_label
184
-
185
- def run_count_label
186
- lazy_initialize(:run_count_label) do
187
- @run_count_label = Gtk::Label.new("0")
188
- @run_count_label.justify = Gtk::JUSTIFY_LEFT
189
- end
190
- end
191
- private :run_count_label
192
-
193
- def info_panel
194
- lazy_initialize(:info_panel) do
195
- @info_panel = Gtk::HBox.new(false, 0)
196
- @info_panel.border_width = 10
197
- @info_panel.pack_start(Gtk::Label.new("Runs:"), false, false, 0)
198
- @info_panel.pack_start(run_count_label, true, false, 0)
199
- @info_panel.pack_start(Gtk::Label.new("Assertions:"), false, false, 0)
200
- @info_panel.pack_start(assertion_count_label, true, false, 0)
201
- @info_panel.pack_start(Gtk::Label.new("Failures:"), false, false, 0)
202
- @info_panel.pack_start(failure_count_label, true, false, 0)
203
- @info_panel.pack_start(Gtk::Label.new("Errors:"), false, false, 0)
204
- @info_panel.pack_start(error_count_label, true, false, 0)
205
- end
206
- end # def info_panel
207
- private :info_panel
208
-
209
- def green_style
210
- lazy_initialize(:green_style) do
211
- @green_style = Gtk::Style.new
212
- @green_style.set_bg(Gtk::STATE_PRELIGHT, 0x0000, 0xFFFF, 0x0000)
213
- end
214
- end # def green_style
215
- private :green_style
216
-
217
- def red_style
218
- lazy_initialize(:red_style) do
219
- @red_style = Gtk::Style.new
220
- @red_style.set_bg(Gtk::STATE_PRELIGHT, 0xFFFF, 0x0000, 0x0000)
221
- end
222
- end # def red_style
223
- private :red_style
224
-
225
- def test_progress_bar
226
- lazy_initialize(:test_progress_bar) {
227
- @test_progress_bar = Gtk::ProgressBar.new
228
- @test_progress_bar.fraction = 0.0
229
- @test_progress_bar.
230
- set_size_request(@test_progress_bar.allocation.width,
231
- info_panel.size_request[1])
232
- @test_progress_bar.style = green_style
233
- }
234
- end # def test_progress_bar
235
- private :test_progress_bar
236
-
237
- def progress_panel
238
- lazy_initialize(:progress_panel) do
239
- @progress_panel = Gtk::HBox.new(false, 10)
240
- @progress_panel.border_width = 10
241
- @progress_panel.pack_start(test_progress_bar, true, true, 0)
242
- end
243
- end # def progress_panel
244
-
245
- def run_button
246
- lazy_initialize(:run_button) do
247
- @run_button = Gtk::Button.new("Run")
248
- end
249
- end # def run_button
250
-
251
- def suite_name_entry
252
- lazy_initialize(:suite_name_entry) do
253
- @suite_name_entry = Gtk::Entry.new
254
- @suite_name_entry.editable = false
255
- end
256
- end # def suite_name_entry
257
- private :suite_name_entry
258
-
259
- def suite_panel
260
- lazy_initialize(:suite_panel) do
261
- @suite_panel = Gtk::HBox.new(false, 10)
262
- @suite_panel.border_width = 10
263
- @suite_panel.pack_start(Gtk::Label.new("Suite:"), false, false, 0)
264
- @suite_panel.pack_start(suite_name_entry, true, true, 0)
265
- @suite_panel.pack_start(run_button, false, false, 0)
266
- end
267
- end # def suite_panel
268
- private :suite_panel
269
-
270
- def main_panel
271
- lazy_initialize(:main_panel) do
272
- @main_panel = Gtk::VBox.new(false, 0)
273
- @main_panel.pack_start(suite_panel, false, false, 0)
274
- @main_panel.pack_start(progress_panel, false, false, 0)
275
- @main_panel.pack_start(info_panel, false, false, 0)
276
- @main_panel.pack_start(list_panel, false, false, 0)
277
- @main_panel.pack_start(detail_panel, true, true, 0)
278
- @main_panel.pack_start(status_panel, false, false, 0)
279
- end
280
- end # def main_panel
281
- private :main_panel
282
-
283
- def main_window
284
- lazy_initialize(:main_window) do
285
- @main_window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
286
- @main_window.set_title("Screw::Unit TestRunner")
287
- @main_window.set_default_size(800, 600)
288
- @main_window.set_resizable(true)
289
- @main_window.add(main_panel)
290
- end
291
- end # def main_window
292
- private :main_window
293
-
294
- def setup_ui
295
- main_window.signal_connect("destroy", nil) { stop }
296
- main_window.show_all
297
- fault_list.selection.signal_connect("changed", nil) do
298
- |selection, data|
299
- if selection.selected then
300
- show_fault(fault_list.get_fault(selection.selected))
301
- else
302
- clear_fault
303
- end
304
- end
305
- end # def setup_ui
306
- private :setup_ui
307
-
308
- def output_status(string)
309
- status_entry.set_text(string)
310
- end # def output_status(string)
311
- private :output_status
312
-
313
- def finished(elapsed_time)
314
- test_progress_bar.fraction = 1.0
315
- output_status("Finished in #{elapsed_time} seconds")
316
- end # def finished(elapsed_time)
317
- private :finished
318
-
319
- def test_started(test_name)
320
- output_status("Running #{test_name}...")
321
- end # def test_started(test_name)
322
- private :test_started
323
-
324
- def started(result)
325
- @result = result
326
- output_status("Started...")
327
- end # def started(result)
328
- private :started
329
-
330
- def test_finished(result)
331
- test_progress_bar.fraction += 1.0 / @count
332
- end # def test_finished(result)
333
-
334
- def result_changed(result)
335
- run_count_label.label = result.run_count.to_s
336
- assertion_count_label.label = result.assertion_count.to_s
337
- failure_count_label.label = result.failure_count.to_s
338
- error_count_label.label = result.error_count.to_s
339
- end # def result_changed(result)
340
- private :result_changed
341
-
342
- def clear_fault
343
- raw_show_fault("")
344
- end # def clear_fault
345
- private :clear_fault
346
-
347
- def raw_show_fault(string)
348
- fault_detail_label.set_text(string)
349
- outer_detail_sub_panel.queue_resize
350
- end # def raw_show_fault(string)
351
- private :raw_show_fault
352
-
353
- def show_fault(fault)
354
- raw_show_fault(fault.long_display)
355
- end # def show_fault(fault)
356
- private :show_fault
357
-
358
- def add_fault(fault)
359
- if not @red then
360
- test_progress_bar.style = red_style
361
- @red = true
362
- end
363
- fault_list.add_fault(fault)
364
- end # def add_fault(fault)
365
- private :add_fault
366
-
367
- def reset_ui(count)
368
- test_progress_bar.style = green_style
369
- test_progress_bar.fraction = 0.0
370
- @count = count + 1
371
- @red = false
372
-
373
- run_count_label.set_text("0")
374
- assertion_count_label.set_text("0")
375
- failure_count_label.set_text("0")
376
- error_count_label.set_text("0")
377
-
378
- fault_list.clear
379
- end # def reset_ui(count)
380
- private :reset_ui
381
-
382
- def stop
383
- Gtk.main_quit
384
- end # def stop
385
- private :stop
386
-
387
- def run_test
388
- @runner.raise(@restart_signal)
389
- end
390
- private :run_test
391
-
392
- def start_ui
393
- @viewer.run
394
- running = false
395
- begin
396
- loop do
397
- if (running ^= true)
398
- run_button.child.text = "Stop"
399
- @mediator.run_suite
400
- else
401
- run_button.child.text = "Run"
402
- @viewer.join
403
- break
404
- end
405
- end
406
- rescue @restart_signal
407
- retry
408
- rescue
409
- end
410
- end # def start_ui
411
- private :start_ui
412
-
413
- def attach_to_mediator
414
- run_button.signal_connect("clicked", nil) { run_test }
415
- @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui))
416
- @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
417
- @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
418
- @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
419
- @mediator.add_listener(TestResult::CHANGED, &method(:result_changed))
420
- @mediator.add_listener(TestCase::STARTED, &method(:test_started))
421
- @mediator.add_listener(TestCase::FINISHED, &method(:test_finished))
422
- end # def attach_to_mediator
423
- private :attach_to_mediator
424
-
425
- def setup_mediator
426
- @mediator = TestRunnerMediator.new(@suite)
427
- suite_name = @suite.to_s
428
- if @suite.kind_of?(Module) then
429
- suite_name = @suite.name
430
- end
431
- suite_name_entry.set_text(suite_name)
432
- end # def setup_mediator
433
- private :setup_mediator
434
-
435
- def start
436
- setup_mediator
437
- setup_ui
438
- attach_to_mediator
439
- start_ui
440
- @result
441
- end # def start
442
-
443
- def initialize(suite, output_level = NORMAL)
444
- if suite.respond_to?(:suite) then
445
- @suite = suite.suite
446
- else
447
- @suite = suite
448
- end
449
- @result = nil
450
-
451
- @runner = Thread.current
452
- @restart_signal = Class.new(Exception)
453
- @viewer = Thread.start do
454
- @runner.join rescue @runner.run
455
- Gtk.main
456
- end
457
- @viewer.join rescue nil # wait deadlock to handshake
458
- end # def initialize(suite)
459
-
460
- end # class TestRunner
461
-
462
- end # module GTK2
463
- end # module UI
464
- end # module Unit
465
- end # module Screw