rroonga 1.2.0 → 1.2.1

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 (159) hide show
  1. data/README.textile +71 -0
  2. data/Rakefile +213 -128
  3. data/TODO +0 -0
  4. data/example/bookmark.rb +12 -12
  5. data/ext/groonga/Makefile +233 -0
  6. data/ext/groonga/extconf.rb +1 -1
  7. data/ext/groonga/rb-grn-column.c +5 -5
  8. data/ext/groonga/rb-grn-index-column.c +31 -0
  9. data/ext/groonga/rb-grn-index-cursor.c +106 -0
  10. data/ext/groonga/rb-grn-logger.c +5 -5
  11. data/ext/groonga/rb-grn-object.c +48 -0
  12. data/ext/groonga/rb-grn-patricia-trie.c +1 -1
  13. data/ext/groonga/rb-grn-plugin.c +32 -0
  14. data/ext/groonga/rb-grn-posting.c +51 -0
  15. data/ext/groonga/rb-grn-table-cursor.c +6 -1
  16. data/ext/groonga/rb-grn-table.c +31 -13
  17. data/ext/groonga/rb-grn.h +21 -3
  18. data/ext/groonga/rb-groonga.c +3 -1
  19. data/lib/groonga.rb +1 -0
  20. data/lib/groonga/dumper.rb +25 -5
  21. data/lib/groonga/expression-builder.rb +2 -2
  22. data/lib/groonga/pagination.rb +99 -7
  23. data/lib/groonga/posting.rb +87 -0
  24. data/lib/groonga/record.rb +118 -11
  25. data/lib/groonga/schema.rb +18 -1
  26. data/test/groonga-test-utils.rb +1 -6
  27. data/test/run-test.rb +13 -28
  28. data/test/test-column.rb +4 -0
  29. data/test/test-database-dumper.rb +53 -10
  30. data/test/test-hash.rb +6 -6
  31. data/test/test-index-cursor.rb +93 -0
  32. data/test/test-plugin.rb +6 -0
  33. data/test/test-record.rb +162 -1
  34. data/test/test-schema-type.rb +6 -0
  35. data/test/test-schema.rb +17 -0
  36. data/test/test-table.rb +7 -2
  37. data/test/test-type.rb +9 -1
  38. metadata +135 -245
  39. data/AUTHORS +0 -5
  40. data/NEWS.ja.rdoc +0 -344
  41. data/NEWS.rdoc +0 -346
  42. data/README.ja.rdoc +0 -68
  43. data/README.rdoc +0 -68
  44. data/example/search/config.ru +0 -230
  45. data/example/search/public/css/groonga.css +0 -122
  46. data/ext/.gitignore +0 -2
  47. data/html/bar.svg +0 -153
  48. data/html/developer.html +0 -151
  49. data/html/developer.svg +0 -469
  50. data/html/download.svg +0 -253
  51. data/html/favicon.ico +0 -0
  52. data/html/favicon.svg +0 -591
  53. data/html/footer.html.erb +0 -33
  54. data/html/head.html.erb +0 -4
  55. data/html/header.html.erb +0 -17
  56. data/html/heading-mark.svg +0 -393
  57. data/html/index.html +0 -243
  58. data/html/install.svg +0 -636
  59. data/html/logo.svg +0 -612
  60. data/html/ranguba.css +0 -342
  61. data/html/readme.svg +0 -256
  62. data/html/tutorial.svg +0 -559
  63. data/license/LGPL +0 -504
  64. data/test-unit-notify/Rakefile +0 -47
  65. data/test-unit-notify/lib/test/unit/notify.rb +0 -104
  66. data/test-unit/COPYING +0 -56
  67. data/test-unit/GPL +0 -340
  68. data/test-unit/PSFL +0 -271
  69. data/test-unit/Rakefile +0 -53
  70. data/test-unit/TODO +0 -5
  71. data/test-unit/bin/testrb +0 -5
  72. data/test-unit/html/bar.svg +0 -153
  73. data/test-unit/html/developer.svg +0 -469
  74. data/test-unit/html/favicon.ico +0 -0
  75. data/test-unit/html/favicon.svg +0 -82
  76. data/test-unit/html/heading-mark.svg +0 -393
  77. data/test-unit/html/index.html +0 -247
  78. data/test-unit/html/index.html.ja +0 -270
  79. data/test-unit/html/install.svg +0 -636
  80. data/test-unit/html/logo.svg +0 -483
  81. data/test-unit/html/test-unit.css +0 -339
  82. data/test-unit/html/tutorial.svg +0 -559
  83. data/test-unit/lib/test/unit.rb +0 -328
  84. data/test-unit/lib/test/unit/assertionfailederror.rb +0 -25
  85. data/test-unit/lib/test/unit/assertions.rb +0 -1334
  86. data/test-unit/lib/test/unit/attribute.rb +0 -125
  87. data/test-unit/lib/test/unit/autorunner.rb +0 -363
  88. data/test-unit/lib/test/unit/collector.rb +0 -36
  89. data/test-unit/lib/test/unit/collector/descendant.rb +0 -23
  90. data/test-unit/lib/test/unit/collector/dir.rb +0 -108
  91. data/test-unit/lib/test/unit/collector/load.rb +0 -144
  92. data/test-unit/lib/test/unit/collector/objectspace.rb +0 -34
  93. data/test-unit/lib/test/unit/color-scheme.rb +0 -106
  94. data/test-unit/lib/test/unit/color.rb +0 -96
  95. data/test-unit/lib/test/unit/diff.rb +0 -740
  96. data/test-unit/lib/test/unit/error.rb +0 -130
  97. data/test-unit/lib/test/unit/exceptionhandler.rb +0 -39
  98. data/test-unit/lib/test/unit/failure.rb +0 -136
  99. data/test-unit/lib/test/unit/fixture.rb +0 -176
  100. data/test-unit/lib/test/unit/notification.rb +0 -129
  101. data/test-unit/lib/test/unit/omission.rb +0 -191
  102. data/test-unit/lib/test/unit/pending.rb +0 -150
  103. data/test-unit/lib/test/unit/priority.rb +0 -180
  104. data/test-unit/lib/test/unit/runner/console.rb +0 -52
  105. data/test-unit/lib/test/unit/runner/emacs.rb +0 -8
  106. data/test-unit/lib/test/unit/runner/tap.rb +0 -8
  107. data/test-unit/lib/test/unit/testcase.rb +0 -483
  108. data/test-unit/lib/test/unit/testresult.rb +0 -121
  109. data/test-unit/lib/test/unit/testsuite.rb +0 -110
  110. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +0 -14
  111. data/test-unit/lib/test/unit/ui/console/testrunner.rb +0 -430
  112. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +0 -63
  113. data/test-unit/lib/test/unit/ui/tap/testrunner.rb +0 -82
  114. data/test-unit/lib/test/unit/ui/testrunner.rb +0 -53
  115. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +0 -77
  116. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +0 -41
  117. data/test-unit/lib/test/unit/util/backtracefilter.rb +0 -42
  118. data/test-unit/lib/test/unit/util/method-owner-finder.rb +0 -28
  119. data/test-unit/lib/test/unit/util/observable.rb +0 -90
  120. data/test-unit/lib/test/unit/util/output.rb +0 -31
  121. data/test-unit/lib/test/unit/util/procwrapper.rb +0 -48
  122. data/test-unit/lib/test/unit/version.rb +0 -7
  123. data/test-unit/sample/adder.rb +0 -13
  124. data/test-unit/sample/subtracter.rb +0 -12
  125. data/test-unit/sample/test_adder.rb +0 -20
  126. data/test-unit/sample/test_subtracter.rb +0 -20
  127. data/test-unit/sample/test_user.rb +0 -23
  128. data/test-unit/test/collector/test-descendant.rb +0 -133
  129. data/test-unit/test/collector/test-load.rb +0 -442
  130. data/test-unit/test/collector/test_dir.rb +0 -406
  131. data/test-unit/test/collector/test_objectspace.rb +0 -100
  132. data/test-unit/test/run-test.rb +0 -15
  133. data/test-unit/test/test-attribute.rb +0 -86
  134. data/test-unit/test/test-color-scheme.rb +0 -69
  135. data/test-unit/test/test-color.rb +0 -47
  136. data/test-unit/test/test-diff.rb +0 -518
  137. data/test-unit/test/test-emacs-runner.rb +0 -60
  138. data/test-unit/test/test-fixture.rb +0 -287
  139. data/test-unit/test/test-notification.rb +0 -33
  140. data/test-unit/test/test-omission.rb +0 -81
  141. data/test-unit/test/test-pending.rb +0 -70
  142. data/test-unit/test/test-priority.rb +0 -119
  143. data/test-unit/test/test-testcase.rb +0 -544
  144. data/test-unit/test/test_assertions.rb +0 -1197
  145. data/test-unit/test/test_error.rb +0 -26
  146. data/test-unit/test/test_failure.rb +0 -33
  147. data/test-unit/test/test_testresult.rb +0 -113
  148. data/test-unit/test/test_testsuite.rb +0 -129
  149. data/test-unit/test/testunit-test-util.rb +0 -14
  150. data/test-unit/test/ui/test_tap.rb +0 -33
  151. data/test-unit/test/ui/test_testrunmediator.rb +0 -20
  152. data/test-unit/test/util/test-method-owner-finder.rb +0 -38
  153. data/test-unit/test/util/test-output.rb +0 -11
  154. data/test-unit/test/util/test_backtracefilter.rb +0 -41
  155. data/test-unit/test/util/test_observable.rb +0 -102
  156. data/test-unit/test/util/test_procwrapper.rb +0 -36
  157. data/test/.gitignore +0 -1
  158. data/text/expression.rdoc +0 -285
  159. data/text/tutorial.ja.rdoc +0 -433
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $VERBOSE = true
4
-
5
- $KCODE = "utf8" unless "".respond_to?(:encoding)
6
-
7
- base_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))
8
- lib_dir = File.join(base_dir, "lib")
9
- test_dir = File.join(base_dir, "test")
10
-
11
- $LOAD_PATH.unshift(lib_dir)
12
-
13
- require 'test/unit'
14
-
15
- exit Test::Unit::AutoRunner.run(true, test_dir)
@@ -1,86 +0,0 @@
1
- class TestUnitAttribute < Test::Unit::TestCase
2
- class TestStack < Test::Unit::TestCase
3
- class << self
4
- def suite
5
- Test::Unit::TestSuite.new(name)
6
- end
7
- end
8
-
9
- class Stack
10
- def initialize
11
- @data = []
12
- end
13
-
14
- def push(data)
15
- @data.push(data)
16
- end
17
-
18
- def peek
19
- @data[-2]
20
- end
21
-
22
- def empty?
23
- @data.empty?
24
- end
25
-
26
- def size
27
- @data.size + 11
28
- end
29
- end
30
-
31
- def setup
32
- @stack = Stack.new
33
- end
34
-
35
- attribute :category, :accessor
36
- def test_peek
37
- @stack.push(1)
38
- @stack.push(2)
39
- assert_equal(2, @stack.peek)
40
- end
41
-
42
- attribute :bug, 1234
43
- def test_bug_1234
44
- assert_equal(0, @stack.size)
45
- end
46
-
47
- def test_no_attributes
48
- assert(@stack.empty?)
49
- @stack.push(1)
50
- assert(!@stack.empty?)
51
- assert_equal(1, @stack.size)
52
- end
53
- end
54
-
55
- def test_set_attributes
56
- test_for_accessor_category = TestStack.new("test_peek")
57
- assert_equal({"category" => :accessor},
58
- test_for_accessor_category.attributes)
59
-
60
- test_for_bug_1234 = TestStack.new("test_bug_1234")
61
- assert_equal({"bug" => 1234}, test_for_bug_1234.attributes)
62
-
63
- test_no_attributes = TestStack.new("test_no_attributes")
64
- assert_equal({}, test_no_attributes.attributes)
65
- end
66
-
67
- def test_callback
68
- changed_attributes = []
69
- observer = Proc.new do |test_case, key, old_value, value, method_name|
70
- changed_attributes << [test_case, key, old_value, value, method_name]
71
- end
72
-
73
- test_case = Class.new(TestStack) do
74
- register_attribute_observer(:bug, &observer)
75
- attribute("bug", 9876, "test_bug_1234")
76
- attribute(:description, "Test for peek", "test_peek")
77
- attribute(:bug, 29, "test_peek")
78
- end
79
-
80
- assert_equal([
81
- [test_case, "bug", 1234, 9876, "test_bug_1234"],
82
- [test_case, "bug", nil, 29, "test_peek"],
83
- ],
84
- changed_attributes)
85
- end
86
- end
@@ -1,69 +0,0 @@
1
- class TestUnitColorScheme < Test::Unit::TestCase
2
- def test_default
3
- assert_equal({
4
- "pass" => color("green", :foreground => false) +
5
- color("white", :bold => true),
6
- "failure" => color("red", :foreground => false) +
7
- color("white", :bold => true),
8
- "pending" => color("magenta", :bold => true),
9
- "omission" => color("blue", :bold => true),
10
- "notification" => color("cyan", :bold => true),
11
- "error" => color("yellow", :bold => true) +
12
- color("black", :foreground => false),
13
- "case" => color("white", :bold => true) +
14
- color("blue", :foreground => false),
15
- "suite" => color("white", :bold => true) +
16
- color("green", :foreground => false),
17
- "diff-inserted-tag" => color("red", :bold => true),
18
- "diff-deleted-tag" => color("green", :bold => true),
19
- "diff-difference-tag" => color("cyan", :bold => true),
20
- "diff-inserted" => color("red", :foreground => false) +
21
- color("white", :bold => true),
22
- "diff-deleted" => color("green", :foreground => false) +
23
- color("white", :bold => true),
24
- },
25
- Test::Unit::ColorScheme.default.to_hash)
26
- end
27
-
28
- def test_register
29
- inverted_scheme_spec = {
30
- "success" => {:name => "red"},
31
- "failure" => {:name => "green"},
32
- }
33
- Test::Unit::ColorScheme["inverted"] = inverted_scheme_spec
34
- assert_equal({
35
- "success" => color("red"),
36
- "failure" => color("green"),
37
- },
38
- Test::Unit::ColorScheme["inverted"].to_hash)
39
- end
40
-
41
- def test_new_with_colors
42
- scheme = Test::Unit::ColorScheme.new(:success => color("blue"),
43
- "failure" => color("green",
44
- :underline => true))
45
- assert_equal({
46
- "success" => color("blue"),
47
- "failure" => color("green", :underline => true),
48
- },
49
- scheme.to_hash)
50
- end
51
-
52
- def test_new_with_spec
53
- scheme = Test::Unit::ColorScheme.new(:success => {
54
- :name => "blue",
55
- :bold => true
56
- },
57
- "failure" => {:name => "green"})
58
- assert_equal({
59
- "success" => color("blue", :bold => true),
60
- "failure" => color("green"),
61
- },
62
- scheme.to_hash)
63
- end
64
-
65
- private
66
- def color(name, options={})
67
- Test::Unit::Color.new(name, options)
68
- end
69
- end
@@ -1,47 +0,0 @@
1
- class TestUnitColor < Test::Unit::TestCase
2
- def test_color_escape_sequence
3
- assert_escape_sequence(["31"], color("red"))
4
- assert_escape_sequence(["32", "1"], color("green", :bold => true))
5
- assert_escape_sequence(["0"], color("reset"))
6
- assert_escape_sequence(["45"], color("magenta", :foreground => false))
7
- end
8
-
9
- def test_mix_color_escape_sequence
10
- assert_escape_sequence(["34", "1"],
11
- mix_color([color("blue"),
12
- color("none", :bold => true)]))
13
- assert_escape_sequence(["34", "1", "4"],
14
- mix_color([color("blue"),
15
- color("none", :bold => true)]) +
16
- color("none", :underline => true))
17
- assert_escape_sequence(["34", "1", "4"],
18
- color("blue") +
19
- color("none", :bold => true) +
20
- color("none", :underline => true))
21
- end
22
-
23
- def test_equal
24
- red = color("red")
25
- red_bold = color("red", :bold => true)
26
-
27
- assert_operator(red, :==, red)
28
- assert_not_equal(red, nil)
29
- assert_equal(red, color("red"))
30
- assert_not_equal(red, red_bold)
31
- end
32
-
33
- private
34
- def color(name, options={})
35
- Test::Unit::Color.new(name, options)
36
- end
37
-
38
- def mix_color(colors)
39
- Test::Unit::MixColor.new(colors)
40
- end
41
-
42
- def assert_escape_sequence(expected, color)
43
- assert_equal(expected, color.sequence)
44
- assert_match(/\e\[(?:\d+;)*\d+m/, color.escape_sequence)
45
- assert_equal(expected, color.escape_sequence[2..-2].split(";"))
46
- end
47
- end
@@ -1,518 +0,0 @@
1
- class TestUnitDiff < Test::Unit::TestCase
2
- def test_binary_search_ranges
3
- assert_found_binary_search_ranges(5, [1..2, 4..5, 7..9])
4
- assert_not_found_binary_search_ranges(3, [1..2, 4..5, 7..9])
5
- end
6
-
7
- def test_to_indexes
8
- assert_to_indexes({"abc def" => [0, 2], "abc" => [1]},
9
- ["abc def", "abc", "abc def"])
10
-
11
- assert_to_indexes({?a => [0, 3], ?b => [1], ?c => [2], ?d => [4]},
12
- "abcad")
13
-
14
- assert_to_indexes({
15
- ?1 => [0, 35],
16
- ?t => [2, 5, 16],
17
- ?e => [3, 14, 31, 38],
18
- ?s => [4, 6, 12, 13, 20, 32, 44],
19
- ?, => [7, 21, 33],
20
- ?0 => [9, 23],
21
- ?a => [11, 26],
22
- ?r => [15, 30],
23
- ?i => [17, 27, 41],
24
- ?o => [18],
25
- ?n => [19, 39, 42],
26
- ?f => [25],
27
- ?l => [28],
28
- ?u => [29],
29
- ?p => [37],
30
- ?d => [40],
31
- ?g => [43],
32
- },
33
- "1 tests, 0 assertions, 0 failures, 1 pendings") do |x|
34
- x == " "[0]
35
- end
36
- end
37
-
38
- def test_longest_match
39
- assert_longest_match([0, 1, 3],
40
- %w(b c d), %w(a b c d x y z),
41
- 0, 2, 0, 7)
42
- assert_longest_match([1, 2, 2],
43
- %w(b c d), %w(a b c d x y z),
44
- 1, 2, 0, 6)
45
- assert_longest_match([0, 0, 0],
46
- %w(a b), %w(c),
47
- 0, 1, 0, 0)
48
- assert_longest_match([1, 0, 2],
49
- %w(q a b x c d), %w(a b y c d f),
50
- 0, 5, 0, 5)
51
- assert_longest_match([4, 3, 2],
52
- %w(q a b x c d), %w(a b y c d f),
53
- 3, 5, 2, 5)
54
-
55
- assert_longest_match([1, 0, 2], "qabxcd", "abycdf", 0, 5, 0, 5)
56
- assert_longest_match([0, 0, 1], "efg", "eg", 0, 2, 0, 1)
57
- assert_longest_match([2, 1, 1], "efg", "eg", 1, 2, 1, 1)
58
- end
59
-
60
- def test_longest_match_with_junk_predicate
61
- assert_longest_match([0, 4, 5], " abcd", "abcd abcd", 0, 4, 0, 8)
62
- assert_longest_match([1, 0, 4], " abcd", "abcd abcd", 0, 4, 0, 8) do |x|
63
- x == ' '[0]
64
- end
65
- end
66
-
67
- def test_matches
68
- assert_matches([[0, 0, 2],
69
- [3, 2, 2]],
70
- %w(a b x c d), %w(a b c d))
71
- assert_matches([[1, 0, 2],
72
- [4, 3, 2]],
73
- %w(q a b x c d), %w(a b y c d f))
74
-
75
- assert_matches([[1, 0, 2],
76
- [4, 3, 2]],
77
- "qabxcd", "abycdf")
78
- assert_matches([[0, 0, 1],
79
- [2, 1, 1]],
80
- "efg", "eg")
81
- end
82
-
83
- def test_matches_with_junk_predicate
84
- assert_matches([[0, 0, 23],
85
- [24, 24, 11],
86
- [36, 36, 9]],
87
- "1 tests, 0 assertions, 1 failures, 0 pendings",
88
- "1 tests, 0 assertions, 0 failures, 1 pendings")
89
-
90
- assert_matches([[0, 0, 1],
91
- [1, 1, 8],
92
- [9, 9, 1],
93
- [10, 10, 13],
94
- [24, 24, 11],
95
- [36, 36, 9]],
96
- "1 tests, 0 assertions, 1 failures, 0 pendings",
97
- "1 tests, 0 assertions, 0 failures, 1 pendings") do |x|
98
- x == " "[0]
99
- end
100
- end
101
-
102
- def test_blocks
103
- assert_blocks([[0, 0, 2],
104
- [3, 2, 2],
105
- [5, 4, 0]],
106
- %w(a b x c d), %w(a b c d))
107
- assert_blocks([[1, 0, 2],
108
- [4, 3, 2],
109
- [6, 6, 0]],
110
- %w(q a b x c d), %w(a b y c d f))
111
-
112
- assert_blocks([[1, 0, 2],
113
- [4, 3, 2],
114
- [6, 6, 0]],
115
- "qabxcd", "abycdf")
116
- assert_blocks([[0, 0, 1],
117
- [2, 1, 1],
118
- [3, 2, 0]],
119
- "efg", "eg")
120
- end
121
-
122
- def test_blocks_with_junk_predicate
123
- assert_blocks([[0, 0, 23],
124
- [24, 24, 11],
125
- [36, 36, 9],
126
- [45, 45, 0]],
127
- "1 tests, 0 assertions, 1 failures, 0 pendings",
128
- "1 tests, 0 assertions, 0 failures, 1 pendings") do |x|
129
- x == " "[0]
130
- end
131
- end
132
-
133
- def test_operations
134
- assert_operations([], %w(), %w())
135
-
136
- assert_operations([[:delete, 0, 1, 0, 0],
137
- [:equal, 1, 3, 0, 2],
138
- [:replace, 3, 4, 2, 3],
139
- [:equal, 4, 6, 3, 5],
140
- [:insert, 6, 6, 5, 6]],
141
- %w(q a b x c d), %w(a b y c d f))
142
-
143
- assert_operations([[:delete, 0, 1, 0, 0],
144
- [:equal, 1, 3, 0, 2],
145
- [:replace, 3, 4, 2, 3],
146
- [:equal, 4, 6, 3, 5],
147
- [:insert, 6, 6, 5, 6]],
148
- "qabxcd", "abycdf")
149
-
150
- assert_operations([[:equal, 0, 23, 0, 23],
151
- [:replace, 23, 24, 23, 24],
152
- [:equal, 24, 35, 24, 35],
153
- [:replace, 35, 36, 35, 36],
154
- [:equal, 36, 45, 36, 45]],
155
- "1 tests, 0 assertions, 1 failures, 0 pendings",
156
- "1 tests, 0 assertions, 0 failures, 1 pendings")
157
-
158
- assert_operations([[:equal, 0, 23, 0, 23],
159
- [:replace, 23, 24, 23, 24],
160
- [:equal, 24, 35, 24, 35],
161
- [:replace, 35, 36, 35, 36],
162
- [:equal, 36, 45, 36, 45]],
163
- "1 tests, 0 assertions, 1 failures, 0 pendings",
164
- "1 tests, 0 assertions, 0 failures, 1 pendings") do |x|
165
- x == " "[0]
166
- end
167
- end
168
-
169
- def test_grouped_operations
170
- assert_grouped_operations([[[:equal, 0, 0, 0, 0]]],
171
- %w(),
172
- %w())
173
-
174
- assert_grouped_operations([[[:equal, 0, 3, 0, 3]]],
175
- %w(a b c),
176
- %w(a b c))
177
-
178
- assert_grouped_operations([[[:equal, 0, 1, 0, 1],
179
- [:replace, 1, 2, 1, 2],
180
- [:equal, 2, 5, 2, 5]],
181
- [[:equal, 8, 11, 8, 11],
182
- [:replace, 11, 12, 11, 12],
183
- [:equal, 12, 13, 12, 13],
184
- [:delete, 13, 16, 13, 13],
185
- [:equal, 16, 17, 13, 14],
186
- [:replace, 17, 18, 14, 15],
187
- [:equal, 18, 20, 15, 17]]],
188
- %w(1 2 3 4 5 6 7 8 9 a b c d e f g h i j k),
189
- %w(1 i 3 4 5 6 7 8 9 a b cX d h iX j k))
190
- end
191
-
192
- def test_ratio
193
- assert_ratio(0.75, "abcd", "bcde")
194
- assert_ratio(0.80, "efg", "eg")
195
- end
196
-
197
- def test_1_length_readable_diff
198
- differ = Test::Unit::Diff::ReadableDiffer.new(["0"], ["1"])
199
- def differ.cut_off_ratio
200
- 0
201
- end
202
- def differ.default_ratio
203
- 0
204
- end
205
- assert_equal("- 0\n" +
206
- "? ^\n" +
207
- "+ 1\n" +
208
- "? ^",
209
- differ.diff.join("\n"))
210
- end
211
-
212
- def test_same_contents_readable_diff
213
- assert_readable_diff(" aaa", ["aaa"], ["aaa"])
214
- assert_readable_diff(" aaa\n" \
215
- " bbb",
216
- ["aaa", "bbb"], ["aaa", "bbb"])
217
- end
218
-
219
- def test_deleted_readable_diff
220
- assert_readable_diff(" aaa\n" \
221
- "- bbb",
222
- ["aaa", "bbb"], ["aaa"])
223
- assert_readable_diff(" aaa\n" \
224
- "- bbb\n" \
225
- "- ccc\n" \
226
- "- ddd",
227
- ["aaa", "bbb", "ccc", "ddd"], ["aaa"])
228
- end
229
-
230
- def test_inserted_readable_diff
231
- assert_readable_diff(" aaa\n" \
232
- "+ bbb\n" \
233
- "+ ccc\n" \
234
- "+ ddd",
235
- ["aaa"], ["aaa", "bbb", "ccc", "ddd"])
236
- end
237
-
238
- def test_replace_readable_diff
239
- assert_readable_diff(" aaa\n" \
240
- "- bbb\n" \
241
- "+ BbB\n" \
242
- " ccc\n" \
243
- "- ddd\n" \
244
- "- efg\n" \
245
- "? -\n" \
246
- "+ eg",
247
- ["aaa", "bbb", "ccc", "ddd", "efg"],
248
- ["aaa", "BbB", "ccc", "eg"])
249
-
250
- assert_readable_diff("- abcd xyz abc\n" \
251
- "? -\n" \
252
- "+ abcd abcd xyz abc\n" \
253
- "? +++++",
254
- [" abcd xyz abc"],
255
- ["abcd abcd xyz abc"])
256
- end
257
-
258
- def test_difference_readable_diff
259
- assert_readable_diff("- 1 tests, 0 assertions, 1 failures, 0 pendings\n" \
260
- "? ^ ^\n" \
261
- "+ 1 tests, 0 assertions, 0 failures, 1 pendings\n" \
262
- "? ^ ^",
263
- ["1 tests, 0 assertions, 1 failures, 0 pendings"],
264
- ["1 tests, 0 assertions, 0 failures, 1 pendings"])
265
- end
266
-
267
- def test_complex_readable_diff
268
- assert_readable_diff(" aaa\n" \
269
- "- bbb\n" \
270
- "- ccc\n" \
271
- "+ \n" \
272
- "+ # \n" \
273
- " ddd",
274
- ["aaa", "bbb", "ccc", "ddd"],
275
- ["aaa", "", " # ", "ddd"])
276
-
277
- assert_readable_diff("- one1\n" \
278
- "? ^\n" \
279
- "+ ore1\n" \
280
- "? ^\n" \
281
- "- two2\n" \
282
- "- three3\n" \
283
- "? - -\n" \
284
- "+ tree\n" \
285
- "+ emu",
286
- ["one1", "two2", "three3"],
287
- ["ore1", "tree", "emu"])
288
- end
289
-
290
- def test_empty_readable_diff
291
- assert_readable_diff("", [""], [""])
292
- end
293
-
294
- def test_unified_diff
295
- assert_unified_diff("",
296
- ["one", "two", "three"],
297
- ["one", "two", "three"],
298
- "content 1",
299
- "content 2")
300
-
301
- assert_unified_diff("--- Original Sat Jan 26 23:30:50 1991\n" \
302
- "+++ Current Fri Jun 06 10:20:52 2003\n" \
303
- "@@ -1,4 +1,4 @@\n" \
304
- "+zero\n" \
305
- " one\n" \
306
- "-two\n" \
307
- "-three\n" \
308
- "+tree\n" \
309
- " four",
310
- ["one", "two", "three", "four"],
311
- ["zero", "one", "tree", "four"],
312
- "Original Sat Jan 26 23:30:50 1991",
313
- "Current Fri Jun 06 10:20:52 2003",
314
- :show_context => false)
315
-
316
- from = File.read(__FILE__).split(/\n/)
317
- to = from.dup
318
- target_line = __LINE__
319
- to[target_line - 1, 1] = []
320
- context = " def test_unified_diff"
321
- summary = "@@ -#{target_line - 3},7 +#{target_line - 3},6 @@ #{context}"
322
- assert_unified_diff((["--- revision 10",
323
- "+++ revision 11",
324
- summary] +
325
- from[target_line - 4, 3].collect {|line| " #{line}"} +
326
- ["-#{from[target_line - 1]}"] +
327
- from[target_line, 3].collect {|line| " #{line}"}
328
- ).join("\n"),
329
- from, to,
330
- "revision 10",
331
- "revision 11")
332
- end
333
-
334
- def test_empty_unified_diff
335
- assert_unified_diff("", [""], [""], "From", "To")
336
- assert_unified_diff("", [], [], "From", "To")
337
- end
338
-
339
- def test_diff_lines
340
- assert_diff_lines(["- ddd",
341
- "- efg",
342
- "? -",
343
- "+ eg"],
344
- ["aaa", "bbb", "ccc", "ddd", "efg"],
345
- ["aaa", "BbB", "ccc", "eg"],
346
- 3, 5, 3, 4)
347
- end
348
-
349
- def test_diff_line
350
- assert_diff_line(["- abcDefghiJkl",
351
- "? ^ ^ ^",
352
- "+ abcdefGhijkl",
353
- "? ^ ^ ^"],
354
- "abcDefghiJkl",
355
- "abcdefGhijkl")
356
-
357
- assert_diff_line(["- bcDefghiJklx",
358
- "? ^ ^ ^ -",
359
- "+ abcdefGhijkl",
360
- "? + ^ ^ ^"],
361
- "bcDefghiJklx",
362
- "abcdefGhijkl")
363
- end
364
-
365
- def test_empty_diff_line
366
- assert_diff_line(["- ",
367
- "+ "],
368
- "", "")
369
- end
370
-
371
- def test_format_diff_point
372
- assert_format_diff_point(["- \tabcDefghiJkl",
373
- "? \t ^ ^ ^",
374
- "+ \t\tabcdefGhijkl",
375
- "? \t ^ ^ ^"],
376
- "\tabcDefghiJkl",
377
- "\t\tabcdefGhijkl",
378
- " ^ ^ ^ ",
379
- "+ ^ ^ ^ ")
380
- assert_format_diff_point(["- efg",
381
- "? ^",
382
- "+ eg"],
383
- "efg",
384
- "eg",
385
- " ^",
386
- "")
387
- end
388
-
389
- def test_interesting_line
390
- from = ["class X",
391
- " def find(x=0)",
392
- " body",
393
- " end",
394
- "end"]
395
- to = ["def xxx",
396
- " raise 'not call me'",
397
- "end"]
398
- assert_interesting_line(" def find(x=0)",
399
- from, to,
400
- 2, 1)
401
- assert_interesting_line("def xxx",
402
- from, to,
403
- 2, 0)
404
- assert_interesting_line("class X",
405
- from, to,
406
- 0, 0)
407
- end
408
-
409
- private
410
- def assert_found_binary_search_ranges(numeric, ranges)
411
- assert_true(Test::Unit::Diff::UTF8Line.send(:binary_search_ranges,
412
- numeric,
413
- ranges))
414
- end
415
-
416
- def assert_not_found_binary_search_ranges(numeric, ranges)
417
- assert_false(Test::Unit::Diff::UTF8Line.send(:binary_search_ranges,
418
- numeric,
419
- ranges))
420
- end
421
-
422
- def assert_to_indexes(expected, to, &junk_predicate)
423
- matcher = Test::Unit::Diff::SequenceMatcher.new([""], to, &junk_predicate)
424
- assert_equal(expected, matcher.instance_variable_get("@to_indexes"))
425
- end
426
-
427
- def assert_find_best_match_position(expected, from, to,
428
- from_start, from_end,
429
- to_start, to_end, &junk_predicate)
430
- matcher = Test::Unit::Diff::SequenceMatcher.new(from, to, &junk_predicate)
431
- assert_equal(expected, matcher.send(:find_best_match_position,
432
- from_start, from_end,
433
- to_start, to_end))
434
- end
435
-
436
- def assert_longest_match(expected, from, to,
437
- from_start, from_end,
438
- to_start, to_end, &junk_predicate)
439
- matcher = Test::Unit::Diff::SequenceMatcher.new(from, to, &junk_predicate)
440
- assert_equal(expected, matcher.longest_match(from_start, from_end,
441
- to_start, to_end))
442
- end
443
-
444
- def assert_matches(expected, from, to, &junk_predicate)
445
- matcher = Test::Unit::Diff::SequenceMatcher.new(from, to, &junk_predicate)
446
- assert_equal(expected, matcher.send(:matches))
447
- end
448
-
449
- def assert_blocks(expected, from, to, &junk_predicate)
450
- matcher = Test::Unit::Diff::SequenceMatcher.new(from, to, &junk_predicate)
451
- assert_equal(expected, matcher.blocks)
452
- end
453
-
454
- def assert_operations(expected, from, to, &junk_predicate)
455
- matcher = Test::Unit::Diff::SequenceMatcher.new(from, to, &junk_predicate)
456
- assert_equal(expected, matcher.operations)
457
- end
458
-
459
- def assert_grouped_operations(expected, from, to)
460
- matcher = Test::Unit::Diff::SequenceMatcher.new(from, to)
461
- assert_equal(expected, matcher.grouped_operations)
462
- end
463
-
464
- def assert_ratio(expected, from, to)
465
- matcher = Test::Unit::Diff::SequenceMatcher.new(from, to)
466
- assert_in_delta(expected, 0.001, matcher.ratio)
467
- end
468
-
469
- def assert_readable_diff(expected, from, to)
470
- assert_equal(expected,
471
- Test::Unit::Diff.readable(from.join("\n"), to.join("\n")))
472
- end
473
-
474
- def assert_unified_diff(expected, from, to, from_label, to_label, options={})
475
- options = options.merge(:from_label => from_label,
476
- :to_label => to_label)
477
- assert_equal(expected,
478
- Test::Unit::Diff.unified(from.join("\n"), to.join("\n"),
479
- options))
480
- end
481
-
482
- def assert_diff_lines(expected, from, to,
483
- from_start, from_end,
484
- to_start, to_end)
485
- differ = Test::Unit::Diff::ReadableDiffer.new(from, to)
486
- result = []
487
- differ.instance_variable_set("@result", result)
488
- differ.send(:diff_lines,
489
- from_start, from_end,
490
- to_start, to_end)
491
- assert_equal(expected, result)
492
- end
493
-
494
- def assert_diff_line(expected, from_line, to_line)
495
- differ = Test::Unit::Diff::ReadableDiffer.new([""], [""])
496
- result = []
497
- differ.instance_variable_set("@result", result)
498
- differ.send(:diff_line, from_line, to_line)
499
- assert_equal(expected, result)
500
- end
501
-
502
- def assert_format_diff_point(expected, from_line, to_line, from_tags, to_tags)
503
- differ = Test::Unit::Diff::ReadableDiffer.new([""], [""])
504
- result = []
505
- differ.instance_variable_set("@result", result)
506
- differ.send(:format_diff_point,
507
- from_line, to_line,
508
- from_tags, to_tags)
509
- assert_equal(expected, result)
510
- end
511
-
512
- def assert_interesting_line(expected, from, to, from_start, to_start)
513
- differ = Test::Unit::Diff::UnifiedDiffer.new(from, to)
514
- assert_equal(expected, differ.send(:find_interesting_line,
515
- from_start, to_start,
516
- :define_line?))
517
- end
518
- end