rroonga 0.9.4-x86-mingw32 → 0.9.5-x86-mingw32

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 (153) hide show
  1. data/NEWS.ja.rdoc +29 -0
  2. data/NEWS.rdoc +29 -0
  3. data/Rakefile +6 -6
  4. data/ext/groonga/rb-grn-array.c +1 -1
  5. data/ext/groonga/rb-grn-context.c +15 -28
  6. data/ext/groonga/rb-grn-exception.c +46 -1
  7. data/ext/groonga/rb-grn-expression.c +22 -13
  8. data/ext/groonga/rb-grn-fix-size-column.c +2 -8
  9. data/ext/groonga/rb-grn-hash.c +8 -1
  10. data/ext/groonga/rb-grn-object.c +1 -1
  11. data/ext/groonga/rb-grn-patricia-trie.c +23 -1
  12. data/ext/groonga/rb-grn-table-key-support.c +22 -0
  13. data/ext/groonga/rb-grn-table.c +37 -5
  14. data/ext/groonga/rb-grn-utils.c +20 -2
  15. data/ext/groonga/rb-grn.h +1 -1
  16. data/ext/groonga/rb-groonga.c +76 -38
  17. data/extconf.rb +17 -1
  18. data/html/developer.html +32 -7
  19. data/html/footer.html.erb +5 -0
  20. data/html/heading-mark.svg +393 -0
  21. data/html/index.html +33 -3
  22. data/lib/1.8/groonga.so +0 -0
  23. data/lib/1.9/groonga.so +0 -0
  24. data/lib/groonga.rb +3 -7
  25. data/lib/groonga/context.rb +2 -13
  26. data/lib/groonga/expression-builder.rb +273 -67
  27. data/lib/groonga/pagination.rb +143 -0
  28. data/lib/groonga/record.rb +2 -0
  29. data/lib/groonga/schema.rb +140 -29
  30. data/pkg/rroonga-0.9.5/NEWS.ja.rdoc +156 -0
  31. data/pkg/rroonga-0.9.5/NEWS.rdoc +158 -0
  32. data/pkg/rroonga-0.9.5/README.ja.rdoc +65 -0
  33. data/pkg/rroonga-0.9.5/README.rdoc +66 -0
  34. data/pkg/rroonga-0.9.5/text/TUTORIAL.ja.rdoc +394 -0
  35. data/pkg/rroonga-0.9.5/text/expression.rdoc +285 -0
  36. data/rroonga-build.rb +2 -2
  37. data/test-unit/Rakefile +40 -0
  38. data/test-unit/TODO +5 -0
  39. data/test-unit/bin/testrb +5 -0
  40. data/test-unit/html/classic.html +15 -0
  41. data/test-unit/html/index.html +25 -0
  42. data/test-unit/html/index.html.ja +27 -0
  43. data/test-unit/lib/test/unit.rb +323 -0
  44. data/test-unit/lib/test/unit/assertionfailederror.rb +25 -0
  45. data/test-unit/lib/test/unit/assertions.rb +1230 -0
  46. data/test-unit/lib/test/unit/attribute.rb +125 -0
  47. data/test-unit/lib/test/unit/autorunner.rb +360 -0
  48. data/test-unit/lib/test/unit/collector.rb +36 -0
  49. data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
  50. data/test-unit/lib/test/unit/collector/dir.rb +108 -0
  51. data/test-unit/lib/test/unit/collector/load.rb +144 -0
  52. data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
  53. data/test-unit/lib/test/unit/color-scheme.rb +102 -0
  54. data/test-unit/lib/test/unit/color.rb +96 -0
  55. data/test-unit/lib/test/unit/diff.rb +724 -0
  56. data/test-unit/lib/test/unit/error.rb +130 -0
  57. data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
  58. data/test-unit/lib/test/unit/failure.rb +136 -0
  59. data/test-unit/lib/test/unit/fixture.rb +176 -0
  60. data/test-unit/lib/test/unit/notification.rb +129 -0
  61. data/test-unit/lib/test/unit/omission.rb +191 -0
  62. data/test-unit/lib/test/unit/pending.rb +150 -0
  63. data/test-unit/lib/test/unit/priority.rb +180 -0
  64. data/test-unit/lib/test/unit/runner/console.rb +52 -0
  65. data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
  66. data/test-unit/lib/test/unit/runner/tap.rb +8 -0
  67. data/test-unit/lib/test/unit/testcase.rb +476 -0
  68. data/test-unit/lib/test/unit/testresult.rb +89 -0
  69. data/test-unit/lib/test/unit/testsuite.rb +110 -0
  70. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
  71. data/test-unit/lib/test/unit/ui/console/testrunner.rb +466 -0
  72. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +63 -0
  73. data/test-unit/lib/test/unit/ui/tap/testrunner.rb +92 -0
  74. data/test-unit/lib/test/unit/ui/testrunner.rb +28 -0
  75. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
  76. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  77. data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
  78. data/test-unit/lib/test/unit/util/method-owner-finder.rb +28 -0
  79. data/test-unit/lib/test/unit/util/observable.rb +90 -0
  80. data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
  81. data/test-unit/lib/test/unit/version.rb +7 -0
  82. data/test-unit/sample/adder.rb +13 -0
  83. data/test-unit/sample/subtracter.rb +12 -0
  84. data/test-unit/sample/test_adder.rb +20 -0
  85. data/test-unit/sample/test_subtracter.rb +20 -0
  86. data/test-unit/sample/test_user.rb +23 -0
  87. data/test-unit/test/collector/test-descendant.rb +133 -0
  88. data/test-unit/test/collector/test-load.rb +442 -0
  89. data/test-unit/test/collector/test_dir.rb +406 -0
  90. data/test-unit/test/collector/test_objectspace.rb +100 -0
  91. data/test-unit/test/run-test.rb +15 -0
  92. data/test-unit/test/test-attribute.rb +86 -0
  93. data/test-unit/test/test-color-scheme.rb +67 -0
  94. data/test-unit/test/test-color.rb +47 -0
  95. data/test-unit/test/test-diff.rb +518 -0
  96. data/test-unit/test/test-emacs-runner.rb +60 -0
  97. data/test-unit/test/test-fixture.rb +287 -0
  98. data/test-unit/test/test-notification.rb +33 -0
  99. data/test-unit/test/test-omission.rb +81 -0
  100. data/test-unit/test/test-pending.rb +70 -0
  101. data/test-unit/test/test-priority.rb +119 -0
  102. data/test-unit/test/test-testcase.rb +544 -0
  103. data/test-unit/test/test_assertions.rb +1151 -0
  104. data/test-unit/test/test_error.rb +26 -0
  105. data/test-unit/test/test_failure.rb +33 -0
  106. data/test-unit/test/test_testresult.rb +113 -0
  107. data/test-unit/test/test_testsuite.rb +129 -0
  108. data/test-unit/test/testunit-test-util.rb +14 -0
  109. data/test-unit/test/ui/test_testrunmediator.rb +20 -0
  110. data/test-unit/test/util/test-method-owner-finder.rb +38 -0
  111. data/test-unit/test/util/test_backtracefilter.rb +41 -0
  112. data/test-unit/test/util/test_observable.rb +102 -0
  113. data/test-unit/test/util/test_procwrapper.rb +36 -0
  114. data/test/groonga-test-utils.rb +3 -2
  115. data/test/run-test.rb +14 -2
  116. data/test/test-column.rb +7 -7
  117. data/test/test-context-select.rb +34 -11
  118. data/test/test-exception.rb +3 -0
  119. data/test/test-expression-builder.rb +11 -0
  120. data/test/test-expression.rb +3 -6
  121. data/test/test-gqtp.rb +3 -5
  122. data/test/test-pagination.rb +249 -0
  123. data/test/test-record.rb +36 -8
  124. data/test/test-remote.rb +11 -4
  125. data/test/test-schema-create-table.rb +251 -0
  126. data/test/test-schema.rb +4 -24
  127. data/test/test-table-offset-and-limit.rb +3 -5
  128. data/test/test-table-select-mecab.rb +80 -0
  129. data/test/test-table-select-weight.rb +104 -0
  130. data/test/test-table.rb +22 -4
  131. data/test/test-version.rb +1 -1
  132. data/text/TUTORIAL.ja.rdoc +2 -0
  133. data/text/expression.rdoc +1 -0
  134. data/vendor/local/bin/grntest.exe +0 -0
  135. data/vendor/local/bin/groonga.exe +0 -0
  136. data/vendor/local/bin/libgroonga-0.dll +0 -0
  137. data/vendor/local/include/{groonga.h → groonga/groonga.h} +93 -32
  138. data/vendor/local/lib/groonga/modules/functions/cast.dll +0 -0
  139. data/vendor/local/lib/groonga/modules/functions/cast.la +41 -0
  140. data/vendor/local/lib/pkgconfig/groonga.pc +12 -0
  141. data/vendor/local/share/groonga/admin_html/css/admin.css +104 -0
  142. data/vendor/local/share/groonga/admin_html/css/ui-lightness/jquery-ui-1.8.1.custom.css +486 -0
  143. data/vendor/local/share/groonga/admin_html/index.html +1355 -0
  144. data/vendor/local/share/groonga/admin_html/js/jquery-1.4.2.min.js +154 -0
  145. data/vendor/local/share/groonga/admin_html/js/jquery-ui-1.8.1.custom.min.js +756 -0
  146. data/vendor/local/share/groonga/munin/plugins/groonga_cpu_load +47 -0
  147. data/vendor/local/share/groonga/munin/plugins/groonga_cpu_time +57 -0
  148. data/vendor/local/share/groonga/munin/plugins/groonga_disk +162 -0
  149. data/vendor/local/share/groonga/munin/plugins/groonga_memory +51 -0
  150. data/vendor/local/share/groonga/munin/plugins/groonga_n_records +110 -0
  151. data/vendor/local/share/groonga/munin/plugins/groonga_query_performance +133 -0
  152. data/vendor/local/share/groonga/munin/plugins/groonga_status +84 -0
  153. metadata +126 -36
@@ -0,0 +1,26 @@
1
+ # Author:: Nathaniel Talbott.
2
+ # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
+ # License:: Ruby license.
4
+
5
+ require 'test/unit'
6
+
7
+ module Test
8
+ module Unit
9
+ class TC_Error < TestCase
10
+ TF_Exception = Struct.new('TF_Exception', :message, :backtrace)
11
+ def test_display
12
+ ex = TF_Exception.new("message1\nmessage2", ['line1', 'line2'])
13
+ e = Error.new("name", ex)
14
+ assert_equal("name: #{TF_Exception.name}: message1", e.short_display)
15
+ assert_equal(<<EOM.strip, e.long_display)
16
+ Error:
17
+ name:
18
+ Struct::TF_Exception: message1
19
+ message2
20
+ line1
21
+ line2
22
+ EOM
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,33 @@
1
+ # Author:: Nathaniel Talbott.
2
+ # Copyright:: Copyright (c) 2003 Nathaniel Talbott. All rights reserved.
3
+ # License:: Ruby license.
4
+
5
+ require 'test/unit'
6
+ require 'test/unit/failure'
7
+
8
+ module Test::Unit
9
+ class TestFailure < TestCase
10
+ def test_display
11
+ f = Failure.new("name", [%q{location:1 in 'l'}], "message1\nmessage2")
12
+ assert_equal("name: message1", f.short_display)
13
+ assert_equal(<<EOM.strip, f.long_display)
14
+ Failure:
15
+ name [location:1]:
16
+ message1
17
+ message2
18
+ EOM
19
+
20
+ f = Failure.new("name", [%q{location1:2 in 'l1'}, 'location2:1', %q{location3:3 in 'l3'}], "message1\nmessage2")
21
+ assert_equal("name: message1", f.short_display)
22
+ assert_equal(<<EOM.strip, f.long_display)
23
+ Failure:
24
+ name
25
+ [location1:2 in 'l1'
26
+ location2:1
27
+ location3:3 in 'l3']:
28
+ message1
29
+ message2
30
+ EOM
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,113 @@
1
+ # Author:: Nathaniel Talbott.
2
+ # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
+ # License:: Ruby license.
4
+
5
+ require 'test/unit/testcase'
6
+ require 'test/unit/testresult'
7
+
8
+ module Test
9
+ module Unit
10
+ class TC_TestResult < TestCase
11
+ def setup
12
+ @my_result = TestResult.new
13
+ @my_result.add_assertion()
14
+ @failure = "failure"
15
+ @my_result.add_failure(@failure)
16
+ @error = "error"
17
+ @my_result.add_error(@error)
18
+ end
19
+
20
+ def test_result_changed_notification
21
+ called1 = false
22
+ @my_result.add_listener(TestResult::CHANGED) do |result|
23
+ assert_equal(@my_result, result)
24
+ called1 = true
25
+ end
26
+ @my_result.add_assertion
27
+ assert_true(called1)
28
+
29
+ called1, called2 = false, false
30
+ @my_result.add_listener(TestResult::CHANGED) do |result|
31
+ assert_equal(@my_result, result)
32
+ called2 = true
33
+ end
34
+ @my_result.add_assertion
35
+ assert_equal([true, true], [called1, called2])
36
+
37
+ called1, called2 = false, false
38
+ @my_result.add_failure("")
39
+ assert_equal([true, true], [called1, called2])
40
+
41
+ called1, called2 = false, false
42
+ @my_result.add_error("")
43
+ assert_equal([true, true], [called1, called2])
44
+
45
+ called1, called2 = false, false
46
+ @my_result.add_run
47
+ assert_equal([true, true], [called1, called2])
48
+ end
49
+
50
+ def test_fault_notification
51
+ called1 = false
52
+ fault = "fault"
53
+ @my_result.add_listener(TestResult::FAULT) do |passed_fault|
54
+ assert_equal(fault, passed_fault)
55
+ called1 = true
56
+ end
57
+
58
+ @my_result.add_assertion
59
+ assert_false(called1)
60
+
61
+ @my_result.add_failure(fault)
62
+ assert_true(called1)
63
+
64
+ called1, called2 = false, false
65
+ @my_result.add_listener(TestResult::FAULT) do |passed_fault|
66
+ assert_equal(fault, passed_fault)
67
+ called2 = true
68
+ end
69
+
70
+ @my_result.add_assertion
71
+ assert_equal([false, false], [called1, called2])
72
+
73
+ called1, called2 = false, false
74
+ @my_result.add_failure(fault)
75
+ assert_equal([true, true], [called1, called2])
76
+
77
+ called1, called2 = false, false
78
+ @my_result.add_error(fault)
79
+ assert_equal([true, true], [called1, called2])
80
+
81
+ called1, called2 = false, false
82
+ @my_result.add_run
83
+ assert_equal([false, false], [called1, called2])
84
+ end
85
+
86
+ def test_passed?
87
+ result = TestResult.new
88
+ assert_true(result.passed?)
89
+
90
+ result.add_assertion
91
+ assert_true(result.passed?)
92
+
93
+ result.add_run
94
+ assert_true(result.passed?)
95
+
96
+ result.add_failure("")
97
+ assert_false(result.passed?)
98
+
99
+ result = TestResult.new
100
+ result.add_error("")
101
+ assert_false(result.passed?)
102
+ end
103
+
104
+ def test_faults
105
+ assert_equal([@failure, @error], @my_result.faults)
106
+
107
+ notification = "notification"
108
+ @my_result.add_notification(notification)
109
+ assert_equal([@failure, @error, notification], @my_result.faults)
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,129 @@
1
+ # Author:: Nathaniel Talbott.
2
+ # Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
3
+ # License:: Ruby license.
4
+
5
+ require 'test/unit'
6
+
7
+ module Test
8
+ module Unit
9
+ class TC_TestSuite < TestCase
10
+ def setup
11
+ @testcase1 = Class.new(TestCase) do
12
+ def test_succeed1
13
+ assert_block { true }
14
+ end
15
+ def test_fail
16
+ assert_block { false }
17
+ end
18
+ end
19
+
20
+ @testcase2 = Class.new(TestCase) do
21
+ def test_succeed2
22
+ assert_block { true }
23
+ end
24
+ def test_error
25
+ raise
26
+ end
27
+ end
28
+ end
29
+
30
+ def test_add
31
+ s = TestSuite.new
32
+ assert_equal(s, s << self.class.new("test_add"))
33
+ end
34
+
35
+ def test_delete
36
+ s = TestSuite.new
37
+ t1 = self.class.new("test_delete")
38
+ s << t1
39
+ t2 = self.class.new("test_add")
40
+ s << t2
41
+ assert_equal(t1, s.delete(t1))
42
+ assert_nil(s.delete(t1))
43
+ assert_equal(TestSuite.new << t2, s)
44
+ end
45
+
46
+ def test_size
47
+ suite = TestSuite.new
48
+ suite2 = TestSuite.new
49
+ suite2 << self.class.new("test_size")
50
+ suite << suite2
51
+ suite << self.class.new("test_size")
52
+ assert_equal(2, suite.size, "The count should be correct")
53
+ end
54
+
55
+ def test_run
56
+ progress = []
57
+ suite = @testcase1.suite
58
+ result = TestResult.new
59
+ suite.run(result) { |*values| progress << values }
60
+
61
+ assert_equal(2, result.run_count, "Should have had four test runs")
62
+ assert_equal(1, result.failure_count, "Should have had one test failure")
63
+ assert_equal(0, result.error_count, "Should have had one test error")
64
+ assert_equal([[TestSuite::STARTED, suite.name],
65
+ [TestCase::STARTED, "test_fail(#{suite.name})"],
66
+ [TestCase::FINISHED, "test_fail(#{suite.name})"],
67
+ [TestCase::STARTED, "test_succeed1(#{suite.name})"],
68
+ [TestCase::FINISHED, "test_succeed1(#{suite.name})"],
69
+ [TestSuite::FINISHED, suite.name]],
70
+ progress, "Should have had the correct progress")
71
+
72
+ suite = TestSuite.new
73
+ suite << @testcase1.suite
74
+ suite << @testcase2.suite
75
+ result = TestResult.new
76
+ progress = []
77
+ suite.run(result) { |*values| progress << values }
78
+
79
+ assert_equal(4, result.run_count, "Should have had four test runs")
80
+ assert_equal(1, result.failure_count, "Should have had one test failure")
81
+ assert_equal(1, result.error_count, "Should have had one test error")
82
+ assert_equal(14, progress.size, "Should have had the correct number of progress calls")
83
+ end
84
+
85
+ def test_empty?
86
+ assert(TestSuite.new.empty?, "A new test suite should be empty?")
87
+ assert(!@testcase2.suite.empty?, "A test suite with tests should not be empty")
88
+ end
89
+
90
+ def test_equality
91
+ suite1 = TestSuite.new
92
+ suite2 = TestSuite.new
93
+ assert_equal(suite1, suite2)
94
+ assert_equal(suite2, suite1)
95
+
96
+ suite1 = TestSuite.new('name')
97
+ assert_not_equal(suite1, suite2)
98
+ assert_not_equal(suite2, suite1)
99
+
100
+ suite2 = TestSuite.new('name')
101
+ assert_equal(suite1, suite2)
102
+ assert_equal(suite2, suite1)
103
+
104
+ suite1 << 'test'
105
+ assert_not_equal(suite1, suite2)
106
+ assert_not_equal(suite2, suite1)
107
+
108
+ suite2 << 'test'
109
+ assert_equal(suite1, suite2)
110
+ assert_equal(suite2, suite1)
111
+
112
+ suite2 = Object.new
113
+ class << suite2
114
+ def name
115
+ 'name'
116
+ end
117
+ def tests
118
+ ['test']
119
+ end
120
+ end
121
+ assert_not_equal(suite1, suite2)
122
+ assert_not_equal(suite2, suite1)
123
+
124
+ assert_not_equal(suite1, Object.new)
125
+ assert_not_equal(Object.new, suite1)
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,14 @@
1
+ module TestUnitTestUtil
2
+ private
3
+ def assert_fault_messages(expected, faults)
4
+ assert_equal(expected, faults.collect {|fault| fault.message})
5
+ end
6
+
7
+ def _run_test(test_case, name)
8
+ result = Test::Unit::TestResult.new
9
+ test = test_case.new(name)
10
+ yield(test) if block_given?
11
+ test.run(result) {}
12
+ result
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ require 'test/unit/ui/testrunnermediator'
2
+
3
+ class TestUnitUIMediator < Test::Unit::TestCase
4
+ def test_run_suite_with_interrupt_exception
5
+ test_case = Class.new(Test::Unit::TestCase) do
6
+ def test_raise_interrupt
7
+ raise Interrupt, "from test"
8
+ end
9
+ end
10
+ mediator = Test::Unit::UI::TestRunnerMediator.new(test_case.suite)
11
+ finished = false
12
+ mediator.add_listener(Test::Unit::UI::TestRunnerMediator::FINISHED) do
13
+ finished = true
14
+ end
15
+ assert_raise(Interrupt) do
16
+ mediator.run_suite
17
+ end
18
+ assert(finished)
19
+ end
20
+ end
@@ -0,0 +1,38 @@
1
+ require 'test/unit'
2
+
3
+ require 'test/unit/util/method-owner-finder'
4
+
5
+ class TestUnitMethodOwnerFinder < Test::Unit::TestCase
6
+ def test_find
7
+ assert_equal(Exception, find(RuntimeError.new, :inspect))
8
+ assert_equal(Exception, find(Exception.new, :inspect))
9
+
10
+ anonymous_class = Class.new do
11
+ end
12
+ assert_equal(Kernel, find(anonymous_class.new, :inspect))
13
+
14
+ anonymous_parent_class = Class.new do
15
+ def inspect
16
+ super + " by anonymous parent class"
17
+ end
18
+ end
19
+ anonymous_sub_class = Class.new(anonymous_parent_class) do
20
+ end
21
+ assert_equal(anonymous_parent_class, find(anonymous_sub_class.new, :inspect))
22
+
23
+ anonymous_module = Module.new do
24
+ def inspect
25
+ super + " by anonymous module"
26
+ end
27
+ end
28
+ anonymous_include_class = Class.new do
29
+ include anonymous_module
30
+ end
31
+ assert_equal(anonymous_module, find(anonymous_include_class.new, :inspect))
32
+ end
33
+
34
+ private
35
+ def find(object, method_name)
36
+ Test::Unit::Util::MethodOwnerFinder.find(object, method_name)
37
+ end
38
+ end
@@ -0,0 +1,41 @@
1
+ require 'test/unit'
2
+
3
+ require 'test/unit/util/backtracefilter'
4
+
5
+ module Test::Unit::Util
6
+ class TestBacktraceFilter < Test::Unit::TestCase
7
+ include BacktraceFilter
8
+
9
+ def test_filter_backtrace
10
+ backtrace = [%q{C:\some\old\path/test/unit/assertions.rb:44:in 'assert'},
11
+ %q{tc_thing.rb:4:in 'a'},
12
+ %q{tc_thing.rb:4:in 'test_stuff'},
13
+ %q{C:\some\old\path/test/unit/testcase.rb:44:in 'send'},
14
+ %q{C:\some\old\path\test\unit\testcase.rb:44:in 'run'},
15
+ %q{C:\some\old\path\test\unit.rb:44:in 'run'},
16
+ %q{tc_thing.rb:3}]
17
+ assert_equal(backtrace[1..2], filter_backtrace(backtrace, %q{C:\some\old\path\test\unit}), "Should filter out all TestUnit-specific lines")
18
+
19
+ backtrace = [%q{tc_thing.rb:4:in 'a'},
20
+ %q{tc_thing.rb:4:in 'test_stuff'},
21
+ %q{tc_thing.rb:3}]
22
+ assert_equal(backtrace, filter_backtrace(backtrace, %q{C:\some\old\path\test\unit}), "Shouldn't filter too much")
23
+
24
+ backtrace = [%q{C:\some\old\path/test/unit/assertions.rb:44:in 'assert'},
25
+ %q{tc_thing.rb:4:in 'a'},
26
+ %q{tc_thing.rb:4:in 'test_stuff'},
27
+ %q{tc_thing.rb:3}]
28
+ assert_equal(backtrace[1..3], filter_backtrace(backtrace, %q{C:\some\old\path\test\unit}), "Should filter out all TestUnit-specific lines")
29
+
30
+ backtrace = [%q{C:\some\old\path/test/unit/assertions.rb:44:in 'assert'},
31
+ %q{C:\some\old\path/test/unit/testcase.rb:44:in 'send'},
32
+ %q{C:\some\old\path\test\unit\testcase.rb:44:in 'run'},
33
+ %q{C:\some\old\path\test\unit.rb:44:in 'run'}]
34
+ assert_equal(backtrace, filter_backtrace(backtrace, %q{C:\some\old\path\test\unit}), "Should filter out all TestUnit-specific lines")
35
+ end
36
+
37
+ def test_nil_backtrace
38
+ assert_equal(["No backtrace"], filter_backtrace(nil))
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,102 @@
1
+ # Author:: Nathaniel Talbott.
2
+ # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
+ # License:: Ruby license.
4
+
5
+ require 'test/unit/util/observable'
6
+
7
+ module Test
8
+ module Unit
9
+ module Util
10
+ class TC_Observable < TestCase
11
+
12
+ class TF_Observable
13
+ include Observable
14
+ end
15
+
16
+ def setup
17
+ @observable = TF_Observable.new
18
+ end
19
+
20
+ def test_simple_observation
21
+ assert_raises(ArgumentError, "add_listener should throw an exception if no callback is supplied") do
22
+ @observable.add_listener(:property, "a")
23
+ end
24
+
25
+ heard = false
26
+ callback = proc { heard = true }
27
+ assert_equal("a", @observable.add_listener(:property, "a", &callback), "add_listener should return the listener that was added")
28
+
29
+ count = 0
30
+ @observable.instance_eval do
31
+ count = notify_listeners(:property)
32
+ end
33
+ assert_equal(1, count, "notify_listeners should have returned the number of listeners that were notified")
34
+ assert(heard, "Should have heard the property changed")
35
+
36
+ heard = false
37
+ assert_equal(callback, @observable.remove_listener(:property, "a"), "remove_listener should return the callback")
38
+
39
+ count = 1
40
+ @observable.instance_eval do
41
+ count = notify_listeners(:property)
42
+ end
43
+ assert_equal(0, count, "notify_listeners should have returned the number of listeners that were notified")
44
+ assert(!heard, "Should not have heard the property change")
45
+ end
46
+
47
+ def test_value_observation
48
+ value = nil
49
+ @observable.add_listener(:property, "a") do |passed_value|
50
+ value = passed_value
51
+ end
52
+ count = 0
53
+ @observable.instance_eval do
54
+ count = notify_listeners(:property, "stuff")
55
+ end
56
+ assert_equal(1, count, "Should have update the correct number of listeners")
57
+ assert_equal("stuff", value, "Should have received the value as an argument to the listener")
58
+ end
59
+
60
+ def test_multiple_value_observation
61
+ values = []
62
+ @observable.add_listener(:property, "a") do |first_value, second_value|
63
+ values = [first_value, second_value]
64
+ end
65
+ count = 0
66
+ @observable.instance_eval do
67
+ count = notify_listeners(:property, "stuff", "more stuff")
68
+ end
69
+ assert_equal(1, count, "Should have update the correct number of listeners")
70
+ assert_equal(["stuff", "more stuff"], values, "Should have received the value as an argument to the listener")
71
+ end
72
+
73
+ def test_add_remove_with_default_listener
74
+ assert_raises(ArgumentError, "add_listener should throw an exception if no callback is supplied") do
75
+ @observable.add_listener(:property)
76
+ end
77
+
78
+ heard = false
79
+ callback = proc { heard = true }
80
+ assert_equal(callback, @observable.add_listener(:property, &callback), "add_listener should return the listener that was added")
81
+
82
+ count = 0
83
+ @observable.instance_eval do
84
+ count = notify_listeners(:property)
85
+ end
86
+ assert_equal(1, count, "notify_listeners should have returned the number of listeners that were notified")
87
+ assert(heard, "Should have heard the property changed")
88
+
89
+ heard = false
90
+ assert_equal(callback, @observable.remove_listener(:property, callback), "remove_listener should return the callback")
91
+
92
+ count = 1
93
+ @observable.instance_eval do
94
+ count = notify_listeners(:property)
95
+ end
96
+ assert_equal(0, count, "notify_listeners should have returned the number of listeners that were notified")
97
+ assert(!heard, "Should not have heard the property change")
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end