rroonga 1.0.1 → 1.0.2

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 (135) hide show
  1. data/NEWS.ja.rdoc +46 -0
  2. data/NEWS.rdoc +46 -0
  3. data/README.ja.rdoc +2 -2
  4. data/README.rdoc +2 -3
  5. data/Rakefile +148 -11
  6. data/example/bookmark.rb +94 -91
  7. data/ext/groonga/extconf.rb +25 -25
  8. data/ext/groonga/groonga.def +2 -0
  9. data/ext/groonga/mkmf.log +7 -7
  10. data/ext/groonga/rb-grn-column.c +66 -0
  11. data/ext/groonga/rb-grn-context.c +92 -5
  12. data/ext/groonga/rb-grn-database.c +24 -1
  13. data/ext/groonga/rb-grn-exception.c +15 -0
  14. data/ext/groonga/rb-grn-hash.c +2 -2
  15. data/ext/groonga/rb-grn-index-column.c +8 -4
  16. data/ext/groonga/rb-grn-object.c +4 -2
  17. data/ext/groonga/rb-grn-patricia-trie.c +2 -2
  18. data/ext/groonga/rb-grn-snippet.c +1 -0
  19. data/ext/groonga/rb-grn-table-key-support.c +22 -19
  20. data/ext/groonga/rb-grn-table.c +63 -5
  21. data/ext/groonga/rb-grn.h +1 -1
  22. data/ext/groonga/rb-groonga.c +1 -0
  23. data/extconf.rb +1 -1
  24. data/html/developer.html +8 -2
  25. data/html/favicon.ico +0 -0
  26. data/html/favicon.svg +591 -0
  27. data/html/index.html +71 -8
  28. data/html/logo.svg +612 -0
  29. data/html/ranguba.css +92 -7
  30. data/html/readme.svg +256 -0
  31. data/lib/groonga/expression-builder.rb +8 -4
  32. data/lib/groonga/record.rb +77 -7
  33. data/lib/groonga/schema.rb +429 -100
  34. data/rroonga-build.rb +1 -1
  35. data/test/run-test.rb +1 -1
  36. data/test/test-array.rb +4 -0
  37. data/test/test-context.rb +8 -0
  38. data/test/test-database.rb +8 -1
  39. data/test/test-expression-builder.rb +14 -0
  40. data/test/test-fix-size-column.rb +4 -0
  41. data/test/test-hash.rb +10 -4
  42. data/test/test-index-column.rb +11 -0
  43. data/test/test-patricia-trie.rb +7 -1
  44. data/test/test-record.rb +14 -0
  45. data/test/test-remote.rb +3 -2
  46. data/test/test-schema-create-table.rb +32 -2
  47. data/test/test-schema.rb +108 -11
  48. data/test/test-table-select-normalize.rb +7 -3
  49. data/test/test-table-select.rb +12 -0
  50. data/test/test-table.rb +7 -0
  51. data/test/test-variable-size-column.rb +4 -0
  52. data/test-unit/Rakefile +40 -0
  53. data/test-unit/TODO +5 -0
  54. data/test-unit/bin/testrb +5 -0
  55. data/test-unit/html/classic.html +15 -0
  56. data/test-unit/html/index.html +25 -0
  57. data/test-unit/html/index.html.ja +27 -0
  58. data/test-unit/lib/test/unit/assertionfailederror.rb +25 -0
  59. data/test-unit/lib/test/unit/assertions.rb +1230 -0
  60. data/test-unit/lib/test/unit/attribute.rb +125 -0
  61. data/test-unit/lib/test/unit/autorunner.rb +360 -0
  62. data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
  63. data/test-unit/lib/test/unit/collector/dir.rb +108 -0
  64. data/test-unit/lib/test/unit/collector/load.rb +144 -0
  65. data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
  66. data/test-unit/lib/test/unit/collector.rb +36 -0
  67. data/test-unit/lib/test/unit/color-scheme.rb +102 -0
  68. data/test-unit/lib/test/unit/color.rb +96 -0
  69. data/test-unit/lib/test/unit/diff.rb +724 -0
  70. data/test-unit/lib/test/unit/error.rb +130 -0
  71. data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
  72. data/test-unit/lib/test/unit/failure.rb +136 -0
  73. data/test-unit/lib/test/unit/fixture.rb +176 -0
  74. data/test-unit/lib/test/unit/notification.rb +129 -0
  75. data/test-unit/lib/test/unit/omission.rb +191 -0
  76. data/test-unit/lib/test/unit/pending.rb +150 -0
  77. data/test-unit/lib/test/unit/priority.rb +180 -0
  78. data/test-unit/lib/test/unit/runner/console.rb +52 -0
  79. data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
  80. data/test-unit/lib/test/unit/runner/tap.rb +8 -0
  81. data/test-unit/lib/test/unit/testcase.rb +476 -0
  82. data/test-unit/lib/test/unit/testresult.rb +89 -0
  83. data/test-unit/lib/test/unit/testsuite.rb +110 -0
  84. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
  85. data/test-unit/lib/test/unit/ui/console/testrunner.rb +466 -0
  86. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +63 -0
  87. data/test-unit/lib/test/unit/ui/tap/testrunner.rb +92 -0
  88. data/test-unit/lib/test/unit/ui/testrunner.rb +28 -0
  89. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
  90. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  91. data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
  92. data/test-unit/lib/test/unit/util/method-owner-finder.rb +28 -0
  93. data/test-unit/lib/test/unit/util/observable.rb +90 -0
  94. data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
  95. data/test-unit/lib/test/unit/version.rb +7 -0
  96. data/test-unit/lib/test/unit.rb +323 -0
  97. data/test-unit/sample/adder.rb +13 -0
  98. data/test-unit/sample/subtracter.rb +12 -0
  99. data/test-unit/sample/test_adder.rb +20 -0
  100. data/test-unit/sample/test_subtracter.rb +20 -0
  101. data/test-unit/sample/test_user.rb +23 -0
  102. data/test-unit/test/collector/test-descendant.rb +133 -0
  103. data/test-unit/test/collector/test-load.rb +442 -0
  104. data/test-unit/test/collector/test_dir.rb +406 -0
  105. data/test-unit/test/collector/test_objectspace.rb +100 -0
  106. data/test-unit/test/run-test.rb +15 -0
  107. data/test-unit/test/test-attribute.rb +86 -0
  108. data/test-unit/test/test-color-scheme.rb +67 -0
  109. data/test-unit/test/test-color.rb +47 -0
  110. data/test-unit/test/test-diff.rb +518 -0
  111. data/test-unit/test/test-emacs-runner.rb +60 -0
  112. data/test-unit/test/test-fixture.rb +287 -0
  113. data/test-unit/test/test-notification.rb +33 -0
  114. data/test-unit/test/test-omission.rb +81 -0
  115. data/test-unit/test/test-pending.rb +70 -0
  116. data/test-unit/test/test-priority.rb +119 -0
  117. data/test-unit/test/test-testcase.rb +544 -0
  118. data/test-unit/test/test_assertions.rb +1151 -0
  119. data/test-unit/test/test_error.rb +26 -0
  120. data/test-unit/test/test_failure.rb +33 -0
  121. data/test-unit/test/test_testresult.rb +113 -0
  122. data/test-unit/test/test_testsuite.rb +129 -0
  123. data/test-unit/test/testunit-test-util.rb +14 -0
  124. data/test-unit/test/ui/test_testrunmediator.rb +20 -0
  125. data/test-unit/test/util/test-method-owner-finder.rb +38 -0
  126. data/test-unit/test/util/test_backtracefilter.rb +41 -0
  127. data/test-unit/test/util/test_observable.rb +102 -0
  128. data/test-unit/test/util/test_procwrapper.rb +36 -0
  129. data/text/{TUTORIAL.ja.rdoc → tutorial.ja.rdoc} +165 -126
  130. metadata +106 -16
  131. data/html/favicon.xcf +0 -0
  132. data/html/logo.xcf +0 -0
  133. data/license/GPL +0 -340
  134. data/license/RUBY +0 -59
  135. data/pkg-config.rb +0 -333
data/rroonga-build.rb CHANGED
@@ -19,7 +19,7 @@ module RroongaBuild
19
19
  module RequiredGroongaVersion
20
20
  MAJOR = 1
21
21
  MINOR = 0
22
- MICRO = 0
22
+ MICRO = 4
23
23
  VERSION = [MAJOR, MINOR, MICRO]
24
24
  end
25
25
 
data/test/run-test.rb CHANGED
@@ -67,7 +67,7 @@ $LOAD_PATH.unshift(test_dir)
67
67
  require 'groonga-test-utils'
68
68
 
69
69
  pkg_config = File.join(base_dir, "vendor", "local", "lib", "pkgconfig")
70
- PackageConfig.prepend_default_path(pkg_config)
70
+ PKGConfig.add_path(pkg_config)
71
71
 
72
72
  Dir.glob("#{base_dir}/test/**/test{_,-}*.rb") do |file|
73
73
  require file.sub(/\.rb$/, '')
data/test/test-array.rb CHANGED
@@ -18,6 +18,10 @@ class ArrayTest < Test::Unit::TestCase
18
18
 
19
19
  setup :setup_database
20
20
 
21
+ def test_support_key?
22
+ assert_not_predicate(Groonga::Array.create(:name => "Users"), :support_key?)
23
+ end
24
+
21
25
  def test_inspect_size
22
26
  path = @tables_dir + "named.groonga"
23
27
  contain_table = Groonga::Array.create(:name => "name", :path => path.to_s)
data/test/test-context.rb CHANGED
@@ -70,4 +70,12 @@ class ContextTest < Test::Unit::TestCase
70
70
  Groonga::Database.create
71
71
  assert_equal("ShortText", Groonga["ShortText"].name)
72
72
  end
73
+
74
+ def test_support_zlib?
75
+ assert_boolean(Groonga::Context.default.support_zlib?)
76
+ end
77
+
78
+ def test_support_lzo?
79
+ assert_boolean(Groonga::Context.default.support_lzo?)
80
+ end
73
81
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2009 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2009-2010 Kouhei Sutou <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -110,4 +110,11 @@ class DatabaseTest < Test::Unit::TestCase
110
110
  database.clear_lock
111
111
  assert_not_predicate(database, :locked?)
112
112
  end
113
+
114
+ def test_touch
115
+ database = Groonga::Database.create
116
+ assert_nothing_raised do
117
+ database.touch
118
+ end
119
+ end
113
120
  end
@@ -140,6 +140,20 @@ class ExpressionBuilderTest < Test::Unit::TestCase
140
140
  result.collect {|record| record.key["uri"]})
141
141
  end
142
142
 
143
+ def test_record_id_object
144
+ morita = Object.new
145
+ morita_singleton_class = (class << morita; self; end)
146
+ morita_id = @morita.id
147
+ morita_singleton_class.send(:define_method, :record_id) do
148
+ morita_id
149
+ end
150
+ result = @bookmarks.select do |record|
151
+ record["user"] == morita
152
+ end
153
+ assert_equal(["http://groonga.org/", "http://ruby-lang.org/"],
154
+ result.collect {|record| record.key["uri"]})
155
+ end
156
+
143
157
  def test_nested_column
144
158
  result = @bookmarks.select do |record|
145
159
  record[".user.name"] == @morita["name"]
@@ -32,6 +32,10 @@ class FixSizeColumnTest < Test::Unit::TestCase
32
32
  :path => @viewed_column_path.to_s)
33
33
  end
34
34
 
35
+ def test_index_column?
36
+ assert_not_predicate(@viewed, :index_column?)
37
+ end
38
+
35
39
  def test_inspect
36
40
  assert_equal("#<Groonga::FixSizeColumn " +
37
41
  "id: <#{@viewed.id}>, " +
data/test/test-hash.rb CHANGED
@@ -19,6 +19,12 @@ class HashTest < Test::Unit::TestCase
19
19
 
20
20
  setup :setup_database
21
21
 
22
+ def test_support_key?
23
+ assert_predicate(Groonga::Hash.create(:name => "Users",
24
+ :key_type => "ShortText"),
25
+ :support_key?)
26
+ end
27
+
22
28
  def test_delete
23
29
  bookmarks_path = @tables_dir + "bookmarks"
24
30
  bookmarks = Groonga::Hash.create(:name => "Bookmarks",
@@ -77,7 +83,7 @@ class HashTest < Test::Unit::TestCase
77
83
  "id: <#{anonymous_table.id}>, " +
78
84
  "name: (anonymous), " +
79
85
  "path: <#{path}>, " +
80
- "domain: (nil), " +
86
+ "domain: <ShortText>, " +
81
87
  "range: (nil), " +
82
88
  "flags: <>, " +
83
89
  "encoding: <#{encoding.inspect}>, " +
@@ -91,7 +97,7 @@ class HashTest < Test::Unit::TestCase
91
97
  "id: <#{anonymous_table.id}>, " +
92
98
  "name: (anonymous), " +
93
99
  "path: (temporary), " +
94
- "domain: (nil), " +
100
+ "domain: <ShortText>, " +
95
101
  "range: (nil), " +
96
102
  "flags: <>, " +
97
103
  "encoding: <#{encoding.inspect}>, " +
@@ -106,7 +112,7 @@ class HashTest < Test::Unit::TestCase
106
112
  "id: <#{named_table.id}>, " +
107
113
  "name: <Users>, " +
108
114
  "path: <#{path}>, " +
109
- "domain: (nil), " +
115
+ "domain: <ShortText>, " +
110
116
  "range: (nil), " +
111
117
  "flags: <>, " +
112
118
  "encoding: <#{encoding.inspect}>, " +
@@ -120,7 +126,7 @@ class HashTest < Test::Unit::TestCase
120
126
  "id: <#{named_table.id}>, " +
121
127
  "name: (anonymous), " +
122
128
  "path: (temporary), " +
123
- "domain: (nil), " +
129
+ "domain: <ShortText>, " +
124
130
  "range: (nil), " +
125
131
  "flags: <>, " +
126
132
  "encoding: <#{encoding.inspect}>, " +
@@ -22,6 +22,17 @@ class IndexColumnTest < Test::Unit::TestCase
22
22
  setup_database
23
23
  end
24
24
 
25
+ def test_index_column?
26
+ articles = Groonga::Array.create(:name => "Articles")
27
+ articles.define_column("content", "Text")
28
+
29
+ terms = Groonga::Hash.create(:name => "Terms",
30
+ :default_tokenizer => "TokenBigram")
31
+ content_index = terms.define_index_column("content", articles,
32
+ :with_section => true)
33
+ assert_predicate(content_index, :index_column?)
34
+ end
35
+
25
36
  def test_array_set_with_record
26
37
  articles = Groonga::Array.create(:name => "Articles")
27
38
  articles.define_column("content", "Text")
@@ -21,6 +21,12 @@ class PatriciaTrieTest < Test::Unit::TestCase
21
21
 
22
22
  setup :setup_database
23
23
 
24
+ def test_support_key?
25
+ assert_predicate(Groonga::PatriciaTrie.create(:name => "Users",
26
+ :key_type => "ShortText"),
27
+ :support_key?)
28
+ end
29
+
24
30
  def test_encoding
25
31
  assert_equal(Groonga::Encoding.default,
26
32
  Groonga::PatriciaTrie.create.encoding)
@@ -57,7 +63,7 @@ class PatriciaTrieTest < Test::Unit::TestCase
57
63
 
58
64
  def test_add
59
65
  users = Groonga::PatriciaTrie.create(:name => "Users")
60
- users.define_column("address", "<text>")
66
+ users.define_column("address", "Text")
61
67
  me = users.add("me", :address => "me@example.com")
62
68
  assert_equal("me@example.com", me[:address])
63
69
  end
data/test/test-record.rb CHANGED
@@ -164,6 +164,13 @@ class RecordTest < Test::Unit::TestCase
164
164
  assert_true(bookmark.reference_column?("user"))
165
165
  end
166
166
 
167
+ def test_index_column?
168
+ bookmark = @bookmarks.add
169
+ assert_false(bookmark.index_column?("uri"))
170
+ index = @bookmarks_index.add("token")
171
+ assert_true(index.index_column?("content"))
172
+ end
173
+
167
174
  def test_score
168
175
  groonga = @bookmarks.add
169
176
  groonga["content"] = "full text search search search engine."
@@ -268,4 +275,11 @@ class RecordTest < Test::Unit::TestCase
268
275
  groonga = @bookmarks.add(:user => morita, :uri => "http://groonga.org")
269
276
  assert_equal("morita", groonga.user.key)
270
277
  end
278
+
279
+ def test_support_sub_records
280
+ morita = @users.add("morita")
281
+ assert_not_predicate(morita, :support_sub_records?)
282
+ users = @users.select {|record| record.key == "morita"}
283
+ assert_predicate(users.to_a[0], :support_sub_records?)
284
+ end
271
285
  end
data/test/test-remote.rb CHANGED
@@ -47,8 +47,9 @@ class RemoteTest < Test::Unit::TestCase
47
47
  id, result = _context.receive
48
48
  assert_equal(0, id)
49
49
  values = JSON.load(result)
50
- assert_equal(["alloc_count", "cache_hit_rate", "n_queries",
51
- "starttime", "uptime", "version"],
50
+ assert_equal(["alloc_count", "cache_hit_rate", "command_version",
51
+ "default_command_version", "max_command_version",
52
+ "n_queries", "starttime", "uptime", "version"],
52
53
  values.keys.sort)
53
54
  end
54
55
 
@@ -87,7 +87,7 @@ module SchemaCreateTableTests
87
87
  assert_true(context["Posts"].support_sub_records?)
88
88
  end
89
89
 
90
- def test_differnt_sub_records
90
+ def test_different_sub_records
91
91
  Groonga::Schema.create_table("Posts",
92
92
  options(:sub_records => true)) do |table|
93
93
  end
@@ -99,6 +99,35 @@ module SchemaCreateTableTests
99
99
  end
100
100
  end
101
101
 
102
+ def test_same_path
103
+ path = (@tmp_dir + "posts.groonga").to_s
104
+ Groonga::Schema.create_table("Posts", options(:path => path)) do |table|
105
+ end
106
+
107
+ Groonga::Schema.create_table("Posts", options(:path => path)) do |table|
108
+ end
109
+ assert_equal(path, context["Posts"].path)
110
+ end
111
+
112
+ def test_different_path
113
+ path = (@tmp_dir + "posts.groonga").to_s
114
+ Groonga::Schema.create_table("Posts", options(:path => path)) do |table|
115
+ end
116
+
117
+ assert_raise(Groonga::Schema::TableCreationWithDifferentOptions) do
118
+ path = (@tmp_dir + "posts.grn").to_s
119
+ Groonga::Schema.create_table("Posts", options(:path => path)) do |table|
120
+ end
121
+ end
122
+ end
123
+
124
+ def test_default_path
125
+ Groonga::Schema.create_table("Posts", options) do |table|
126
+ end
127
+ assert_equal("#{@database_path}.tables/Posts",
128
+ context["Posts"].path)
129
+ end
130
+
102
131
  private
103
132
  def options(addional_options={})
104
133
  default_options.merge(addional_options)
@@ -118,7 +147,8 @@ module SchemaCreateTableWithKeyTests
118
147
  end
119
148
 
120
149
  def test_differnt_key_type
121
- Groonga::Schema.create_table("Posts", options) do |table|
150
+ Groonga::Schema.create_table("Posts",
151
+ options(:key_type => "Int32")) do |table|
122
152
  end
123
153
 
124
154
  assert_raise(Groonga::Schema::TableCreationWithDifferentOptions) do
data/test/test-schema.rb CHANGED
@@ -28,7 +28,9 @@ class SchemaTest < Test::Unit::TestCase
28
28
  def test_define_hash
29
29
  Groonga::Schema.create_table("Posts", :type => :hash) do |table|
30
30
  end
31
- assert_kind_of(Groonga::Hash, context["Posts"])
31
+ posts = context["Posts"]
32
+ assert_kind_of(Groonga::Hash, posts)
33
+ assert_equal("#{@database_path}.tables/Posts", posts.path)
32
34
  end
33
35
 
34
36
  def test_define_hash_with_full_option
@@ -58,7 +60,9 @@ class SchemaTest < Test::Unit::TestCase
58
60
  def test_define_patricia_trie
59
61
  Groonga::Schema.create_table("Posts", :type => :patricia_trie) do |table|
60
62
  end
61
- assert_kind_of(Groonga::PatriciaTrie, context["Posts"])
63
+ posts = context["Posts"]
64
+ assert_kind_of(Groonga::PatriciaTrie, posts)
65
+ assert_equal("#{@database_path}.tables/Posts", posts.path)
62
66
  end
63
67
 
64
68
  def test_define_patricia_trie_with_full_option
@@ -89,7 +93,9 @@ class SchemaTest < Test::Unit::TestCase
89
93
  def test_define_array
90
94
  Groonga::Schema.create_table("Posts", :type => :array) do |table|
91
95
  end
92
- assert_kind_of(Groonga::Array, context["Posts"])
96
+ posts = context["Posts"]
97
+ assert_kind_of(Groonga::Array, posts)
98
+ assert_equal("#{@database_path}.tables/Posts", posts.path)
93
99
  end
94
100
 
95
101
  def test_define_array_with_full_option
@@ -183,6 +189,16 @@ class SchemaTest < Test::Unit::TestCase
183
189
  assert_equal(context["Time"], context["Posts.last_modified"].range)
184
190
  end
185
191
 
192
+ def test_timestamps
193
+ assert_nil(context["Posts.created_at"])
194
+ assert_nil(context["Posts.updated_at"])
195
+ Groonga::Schema.create_table("Posts") do |table|
196
+ table.timestamps
197
+ end
198
+ assert_equal(context["Time"], context["Posts.created_at"].range)
199
+ assert_equal(context["Time"], context["Posts.updated_at"].range)
200
+ end
201
+
186
202
  def test_short_text_column
187
203
  assert_nil(context["Posts.title"])
188
204
  Groonga::Schema.create_table("Posts") do |table|
@@ -221,9 +237,7 @@ class SchemaTest < Test::Unit::TestCase
221
237
  end
222
238
  assert_not_nil(context["Posts.content"])
223
239
 
224
- Groonga::Schema.change_table("Posts") do |table|
225
- table.remove_column("content")
226
- end
240
+ Groonga::Schema.remove_column("Posts", "content")
227
241
  assert_nil(context["Posts.content"])
228
242
  end
229
243
 
@@ -363,6 +377,48 @@ class SchemaTest < Test::Unit::TestCase
363
377
  end
364
378
  end
365
379
 
380
+ def test_remove_index
381
+ Groonga::Schema.create_table("Posts") do |table|
382
+ table.long_text :content
383
+ end
384
+ Groonga::Schema.create_table("Terms") do |table|
385
+ table.index "Posts.content"
386
+ end
387
+ assert_equal([context["Posts.content"]],
388
+ context["Terms.Posts_content"].sources)
389
+ Groonga::Schema.change_table("Terms") do |table|
390
+ table.remove_index("Posts.content")
391
+ end
392
+ assert_nil(context["Terms.Posts_content"])
393
+ end
394
+
395
+ def test_reference_guess
396
+ Groonga::Schema.define do |schema|
397
+ schema.create_table("Items", :type => :hash) do |table|
398
+ table.short_text("title")
399
+ end
400
+
401
+ schema.create_table("Users", :type => :hash) do |table|
402
+ table.reference("item")
403
+ end
404
+ end
405
+
406
+ assert_equal(context["Items"], context["Users.item"].range)
407
+ end
408
+
409
+ def test_reference_ungeussable
410
+ candidates = ["item", "items", "Items"]
411
+ exception =
412
+ Groonga::Schema::UnguessableReferenceTable.new("item", candidates)
413
+ assert_raise(exception) do
414
+ Groonga::Schema.define do |schema|
415
+ schema.create_table("Users", :type => :hash) do |table|
416
+ table.reference("item")
417
+ end
418
+ end
419
+ end
420
+ end
421
+
366
422
  def test_dump
367
423
  Groonga::Schema.define do |schema|
368
424
  schema.create_table("Posts") do |table|
@@ -370,13 +426,14 @@ class SchemaTest < Test::Unit::TestCase
370
426
  end
371
427
  end
372
428
  assert_equal(<<-EOS, Groonga::Schema.dump)
373
- create_table("Posts") do |table|
429
+ create_table("Posts",
430
+ :force => true) do |table|
374
431
  table.short_text("title")
375
432
  end
376
433
  EOS
377
434
  end
378
435
 
379
- def test_reference_dump
436
+ def test_dump_reference
380
437
  Groonga::Schema.define do |schema|
381
438
  schema.create_table("Items") do |table|
382
439
  table.short_text("title")
@@ -395,16 +452,19 @@ EOS
395
452
  end
396
453
 
397
454
  assert_equal(<<-EOS, Groonga::Schema.dump)
398
- create_table("Comments") do |table|
455
+ create_table("Comments",
456
+ :force => true) do |table|
399
457
  table.text("content")
400
458
  table.time("issued")
401
459
  end
402
460
 
403
- create_table("Items") do |table|
461
+ create_table("Items",
462
+ :force => true) do |table|
404
463
  table.short_text("title")
405
464
  end
406
465
 
407
- create_table("Users") do |table|
466
+ create_table("Users",
467
+ :force => true) do |table|
408
468
  table.short_text("name")
409
469
  end
410
470
 
@@ -415,6 +475,43 @@ end
415
475
  EOS
416
476
  end
417
477
 
478
+ def test_dump_index
479
+ Groonga::Schema.define do |schema|
480
+ schema.create_table("Items",
481
+ :type => :patricia_trie,
482
+ :key_type => "ShortText") do |table|
483
+ table.short_text("title")
484
+ end
485
+
486
+ schema.create_table("Terms",
487
+ :type => :patricia_trie,
488
+ :key_type => "ShortText") do |table|
489
+ table.index("Items", "_key")
490
+ table.index("Items", "title")
491
+ end
492
+ end
493
+
494
+ assert_equal(<<-EOS, Groonga::Schema.dump)
495
+ create_table("Items",
496
+ :type => :patricia_trie,
497
+ :key_type => "ShortText",
498
+ :force => true) do |table|
499
+ table.short_text("title")
500
+ end
501
+
502
+ create_table("Terms",
503
+ :type => :patricia_trie,
504
+ :key_type => "ShortText",
505
+ :force => true) do |table|
506
+ end
507
+
508
+ change_table("Terms") do |table|
509
+ table.index("Items", "_key", :name => "Items__key")
510
+ table.index("Items", "title", :name => "Items_title")
511
+ end
512
+ EOS
513
+ end
514
+
418
515
  def test_explicit_context_create_table
419
516
  context = Groonga::Context.default
420
517
  Groonga::Context.default = nil
@@ -25,11 +25,15 @@ class TableSelectNormalizeTest < Test::Unit::TestCase
25
25
  @comments = Groonga::Array.create(:name => "Comments")
26
26
  @comments.define_column("content", "Text")
27
27
  @comments.define_column("created_at", "Time")
28
- terms = Groonga::PatriciaTrie.create(:name => "Terms",
29
- :default_tokenizer => "TokenBigram",
30
- :key_normalize => true)
28
+ options = {
29
+ :name => "Terms",
30
+ :default_tokenizer => "TokenBigramSplitSymbol",
31
+ :key_normalize => true,
32
+ }
33
+ terms = Groonga::PatriciaTrie.create(options)
31
34
  terms.define_index_column("comment_content", @comments,
32
35
  :with_section => true,
36
+ :with_position => true,
33
37
  :source => "Comments.content")
34
38
  @japanese_comment =
35
39
  @comments.add(:content => "うちのボロTV(アナログ...)はまだ現役です",
@@ -33,7 +33,12 @@ class TableSelectTest < Test::Unit::TestCase
33
33
  :default_tokenizer => "TokenBigram")
34
34
  terms.define_index_column("comment_content", @comments,
35
35
  :with_section => true,
36
+ :with_position => true,
36
37
  :source => "content")
38
+ terms.define_index_column("users_key", @users,
39
+ :with_section => true,
40
+ :with_position => true,
41
+ :source => "_key")
37
42
  @comment1 = @comments.add(:content => "Hello Good-bye!",
38
43
  :created_at => Time.parse("2009-08-09"),
39
44
  :user => "morita")
@@ -147,4 +152,11 @@ class TableSelectTest < Test::Unit::TestCase
147
152
  end
148
153
  assert_equal_select_result([], result)
149
154
  end
155
+
156
+ def test_select_query_key
157
+ result = @users.select do |record|
158
+ record["_key"] =~ "mori"
159
+ end
160
+ assert_equal_select_result([@users["morita"]], result)
161
+ end
150
162
  end
data/test/test-table.rb CHANGED
@@ -594,6 +594,13 @@ class TableTest < Test::Unit::TestCase
594
594
  assert_false(users.have_column?("description"), "description")
595
595
  end
596
596
 
597
+ def test_exist?
598
+ users = Groonga::Hash.create(:name => "Users")
599
+ morita = users.add("morita")
600
+ assert_true(users.exist?(morita.id))
601
+ assert_false(users.exist?(morita.id + 1))
602
+ end
603
+
597
604
  private
598
605
  def create_bookmarks
599
606
  bookmarks = Groonga::Array.create(:name => "Bookmarks")
@@ -50,6 +50,10 @@ class VariableSizeColumnTest < Test::Unit::TestCase
50
50
  @yu = @users.add(:name => "Yutaro Shimamura")
51
51
  end
52
52
 
53
+ def test_index_column?
54
+ assert_not_predicate(@nick_names, :index_column?)
55
+ end
56
+
53
57
  def test_inspect
54
58
  assert_equal("#<Groonga::VariableSizeColumn " +
55
59
  "id: <#{@name.id}>, " +
@@ -0,0 +1,40 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ gem 'rdoc'
5
+ require 'hoe'
6
+ require './lib/test/unit/version.rb'
7
+
8
+ ENV["NODOT"] = "yes"
9
+
10
+ version = Test::Unit::VERSION
11
+ ENV["VERSION"] = version
12
+ Hoe.spec('test-unit') do |p|
13
+ Hoe::Test::SUPPORTED_TEST_FRAMEWORKS[:testunit2] = "test/run-test.rb"
14
+ p.version = version
15
+ p.developer('Kouhei Sutou', 'kou@cozmixng.org')
16
+ p.developer('Ryan Davis', 'ryand-ruby@zenspider.com')
17
+
18
+ # Ex-Parrot:
19
+ # p.developer('Nathaniel Talbott', 'nathaniel@talbott.ws')
20
+ end
21
+
22
+ task :check_manifest => :clean_test_result
23
+ task :check_manifest => :clean_coverage
24
+
25
+ task :clean_test_result do
26
+ test_results = Dir.glob("**/.test-result")
27
+ sh("rm", "-rf", *test_results) unless test_results.empty?
28
+ end
29
+
30
+ task :clean_coverage do
31
+ sh("rm", "-rf", "coverage")
32
+ end
33
+
34
+ task :tag do
35
+ message = "Released Test::Unit #{version}!"
36
+ base = "svn+ssh://#{ENV['USER']}@rubyforge.org/var/svn/test-unit/"
37
+ sh 'svn', 'copy', '-m', message, "#{base}trunk", "#{base}tags/#{version}"
38
+ end
39
+
40
+ # vim: syntax=Ruby
data/test-unit/TODO ADDED
@@ -0,0 +1,5 @@
1
+ * mock.
2
+ * data-driven test.
3
+ * port ruby trunk's assert_equal's intelligent inspection
4
+ when inspected expected and actual are same content
5
+ string.
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ require 'test/unit'
3
+ (r = Test::Unit::AutoRunner.new(true)).process_args(ARGV) or
4
+ abort r.options.banner + " tests..."
5
+ exit r.run
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html>
3
+ <head>
4
+ <title>Test::Unit (Classic)</title>
5
+ </head>
6
+ <body bgcolor="red">
7
+ <p style="text-align: center">
8
+ <img height="161" width="308" src="test-unit-classic.png">
9
+ <br>
10
+ <br>
11
+ <br>
12
+ Read the <a href="classic/test-unit/">rdoc</a>
13
+ </p>
14
+ </body>
15
+ </html>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
6
+ <head>
7
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
8
+ <title>Test::Unit - a Unit Testing Framework for Ruby</title>
9
+ </head>
10
+ <body>
11
+ <h1>Test::Unit - a Unit Testing Framework for Ruby</h1>
12
+ <p>[<a href="index.html.ja">Japanese</a>]</p>
13
+ <ul>
14
+ <li><a href="http://rubyforge.org/projects/test-unit/">Project Page</a></li>
15
+ <li>
16
+ <a href="test-unit/">RDoc</a>
17
+ <!--(<a href="ja/test-unit/">ja</a>)-->
18
+ </li>
19
+ <li>
20
+ <a href="classic.html">Classic</a>
21
+ <!--(<a href="ja/classic.html">ja</a>)-->
22
+ </li>
23
+ </ul>
24
+ </body>
25
+ </html>
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
6
+ <head>
7
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
8
+ <title>Test::Unit - Ruby用単体テストフレームワーク</title>
9
+ </head>
10
+ <body>
11
+ <h1>Test::Unit - Ruby用単体テストフレームワーク</h1>
12
+ <p>[<a href="./">English</a>]</p>
13
+ <ul>
14
+ <li>
15
+ <a href="http://rubyforge.org/projects/test-unit/">プロジェクトページ</a>
16
+ </li>
17
+ <li>
18
+ <!--<a href="ja/test-unit/">RDoc</a>-->
19
+ RDoc(<a href="test-unit/">en</a>)
20
+ </li>
21
+ <li>
22
+ <!--<a href="classic.html.html">Classic</a>-->
23
+ Classic(<a href="classic.html">en</a>)
24
+ </li>
25
+ </ul>
26
+ </body>
27
+ </html>