activegroonga 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +55 -0
- data/Rakefile +45 -165
- data/{license/LGPL → doc/text/lgpl.txt} +0 -0
- data/doc/text/news.textile +60 -0
- data/doc/text/tutorial.textile +3 -0
- data/lib/active_groonga/base.rb +50 -2
- data/lib/active_groonga/railtie.rb +6 -5
- data/lib/active_groonga/railties/groonga.rake +8 -4
- data/lib/active_groonga/result_set.rb +133 -8
- data/lib/active_groonga/version.rb +1 -1
- data/test/active-groonga-test-utils.rb +6 -0
- data/test/run-test.rb +11 -24
- data/test/test-base.rb +10 -4
- data/test/test-result-set.rb +121 -9
- metadata +90 -138
- data/AUTHORS +0 -1
- data/NEWS.ja.rdoc +0 -46
- data/NEWS.rdoc +0 -46
- data/README.ja.rdoc +0 -52
- data/README.rdoc +0 -52
- data/test-unit-notify/Rakefile +0 -47
- data/test-unit-notify/lib/test/unit/notify.rb +0 -104
- data/test-unit/COPYING +0 -56
- data/test-unit/GPL +0 -340
- data/test-unit/PSFL +0 -271
- data/test-unit/Rakefile +0 -53
- data/test-unit/TODO +0 -5
- data/test-unit/bin/testrb +0 -5
- data/test-unit/html/bar.svg +0 -153
- data/test-unit/html/developer.svg +0 -469
- data/test-unit/html/favicon.ico +0 -0
- data/test-unit/html/favicon.svg +0 -82
- data/test-unit/html/heading-mark.svg +0 -393
- data/test-unit/html/index.html +0 -247
- data/test-unit/html/index.html.ja +0 -270
- data/test-unit/html/install.svg +0 -636
- data/test-unit/html/logo.svg +0 -483
- data/test-unit/html/test-unit.css +0 -339
- data/test-unit/html/tutorial.svg +0 -559
- data/test-unit/lib/test/unit.rb +0 -328
- data/test-unit/lib/test/unit/assertionfailederror.rb +0 -25
- data/test-unit/lib/test/unit/assertions.rb +0 -1334
- data/test-unit/lib/test/unit/attribute.rb +0 -125
- data/test-unit/lib/test/unit/autorunner.rb +0 -363
- data/test-unit/lib/test/unit/collector.rb +0 -36
- data/test-unit/lib/test/unit/collector/descendant.rb +0 -23
- data/test-unit/lib/test/unit/collector/dir.rb +0 -108
- data/test-unit/lib/test/unit/collector/load.rb +0 -144
- data/test-unit/lib/test/unit/collector/objectspace.rb +0 -34
- data/test-unit/lib/test/unit/color-scheme.rb +0 -106
- data/test-unit/lib/test/unit/color.rb +0 -96
- data/test-unit/lib/test/unit/diff.rb +0 -740
- data/test-unit/lib/test/unit/error.rb +0 -130
- data/test-unit/lib/test/unit/exceptionhandler.rb +0 -39
- data/test-unit/lib/test/unit/failure.rb +0 -136
- data/test-unit/lib/test/unit/fixture.rb +0 -176
- data/test-unit/lib/test/unit/notification.rb +0 -129
- data/test-unit/lib/test/unit/omission.rb +0 -191
- data/test-unit/lib/test/unit/pending.rb +0 -150
- data/test-unit/lib/test/unit/priority.rb +0 -180
- data/test-unit/lib/test/unit/runner/console.rb +0 -52
- data/test-unit/lib/test/unit/runner/emacs.rb +0 -8
- data/test-unit/lib/test/unit/runner/tap.rb +0 -8
- data/test-unit/lib/test/unit/testcase.rb +0 -483
- data/test-unit/lib/test/unit/testresult.rb +0 -121
- data/test-unit/lib/test/unit/testsuite.rb +0 -110
- data/test-unit/lib/test/unit/ui/console/outputlevel.rb +0 -14
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +0 -430
- data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +0 -63
- data/test-unit/lib/test/unit/ui/tap/testrunner.rb +0 -82
- data/test-unit/lib/test/unit/ui/testrunner.rb +0 -53
- data/test-unit/lib/test/unit/ui/testrunnermediator.rb +0 -77
- data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +0 -41
- data/test-unit/lib/test/unit/util/backtracefilter.rb +0 -42
- data/test-unit/lib/test/unit/util/method-owner-finder.rb +0 -28
- data/test-unit/lib/test/unit/util/observable.rb +0 -90
- data/test-unit/lib/test/unit/util/output.rb +0 -31
- data/test-unit/lib/test/unit/util/procwrapper.rb +0 -48
- data/test-unit/lib/test/unit/version.rb +0 -7
- data/test-unit/sample/adder.rb +0 -13
- data/test-unit/sample/subtracter.rb +0 -12
- data/test-unit/sample/test_adder.rb +0 -20
- data/test-unit/sample/test_subtracter.rb +0 -20
- data/test-unit/sample/test_user.rb +0 -23
- data/test-unit/test/collector/test-descendant.rb +0 -133
- data/test-unit/test/collector/test-load.rb +0 -442
- data/test-unit/test/collector/test_dir.rb +0 -406
- data/test-unit/test/collector/test_objectspace.rb +0 -100
- data/test-unit/test/run-test.rb +0 -15
- data/test-unit/test/test-attribute.rb +0 -86
- data/test-unit/test/test-color-scheme.rb +0 -69
- data/test-unit/test/test-color.rb +0 -47
- data/test-unit/test/test-diff.rb +0 -518
- data/test-unit/test/test-emacs-runner.rb +0 -60
- data/test-unit/test/test-fixture.rb +0 -287
- data/test-unit/test/test-notification.rb +0 -33
- data/test-unit/test/test-omission.rb +0 -81
- data/test-unit/test/test-pending.rb +0 -70
- data/test-unit/test/test-priority.rb +0 -119
- data/test-unit/test/test-testcase.rb +0 -544
- data/test-unit/test/test_assertions.rb +0 -1197
- data/test-unit/test/test_error.rb +0 -26
- data/test-unit/test/test_failure.rb +0 -33
- data/test-unit/test/test_testresult.rb +0 -113
- data/test-unit/test/test_testsuite.rb +0 -129
- data/test-unit/test/testunit-test-util.rb +0 -14
- data/test-unit/test/ui/test_tap.rb +0 -33
- data/test-unit/test/ui/test_testrunmediator.rb +0 -20
- data/test-unit/test/util/test-method-owner-finder.rb +0 -38
- data/test-unit/test/util/test-output.rb +0 -11
- data/test-unit/test/util/test_backtracefilter.rb +0 -41
- data/test-unit/test/util/test_observable.rb +0 -102
- data/test-unit/test/util/test_procwrapper.rb +0 -36
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2010 Kouhei Sutou <kou@clear-code.com>
|
1
|
+
# Copyright (C) 2010-2011 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
|
@@ -23,14 +23,15 @@ module ActiveGroonga
|
|
23
23
|
class Railtie < Rails::Railtie
|
24
24
|
config.active_groonga = ActiveSupport::OrderedOptions.new
|
25
25
|
|
26
|
-
config.
|
27
|
-
|
28
|
-
|
26
|
+
config.app_generators.orm(:active_groonga,
|
27
|
+
:migration => true,
|
28
|
+
:timestamps => true)
|
29
29
|
|
30
30
|
config.before_configuration do
|
31
31
|
application_config = Rails.application.config
|
32
32
|
application_config.extend(Railties::Configurable)
|
33
|
-
application_config.paths.
|
33
|
+
application_config.paths.add("config/groonga",
|
34
|
+
:with => "config/groonga.yml")
|
34
35
|
end
|
35
36
|
|
36
37
|
rake_tasks do
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
#
|
3
|
-
# Copyright (C) 2010 Kouhei Sutou <kou@clear-code.com>
|
3
|
+
# Copyright (C) 2010-2011 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
#
|
5
5
|
# This library is free software; you can redistribute it and/or
|
6
6
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -121,15 +121,16 @@ namespace :groonga do
|
|
121
121
|
desc('Load the seed data from db/groonga/seeds/#{RAILS_ENV}.grn, ' +
|
122
122
|
'db/groonga/seeds/#{RAILS_ENV}.rb, db/groonga/seeds.grn or ' +
|
123
123
|
'db/groonga/seeds.rb')
|
124
|
-
task :seed => :
|
124
|
+
task :seed => :environment do
|
125
125
|
base_dir = Rails.root + "db" + "groonga"
|
126
126
|
candidates = [base_dir + "seeds" + "#{Rails.env}.grn",
|
127
127
|
base_dir + "seeds" + "#{Rails.env}.rb",
|
128
128
|
base_dir + "seeds.grn",
|
129
129
|
base_dir + "seeds.rb"]
|
130
130
|
seed_file_path = candidates.find(&:exist?)
|
131
|
-
|
132
|
-
|
131
|
+
extension = nil
|
132
|
+
extension = seed_file_path.extname if seed_file_path
|
133
|
+
case extension
|
133
134
|
when /\A\.grn\z/i
|
134
135
|
ActiveGroonga::Base.database.ensure_available
|
135
136
|
context = ActiveGroonga::Base.context
|
@@ -143,6 +144,9 @@ namespace :groonga do
|
|
143
144
|
end
|
144
145
|
when /\A\.rb\z/i
|
145
146
|
load(seed_file_path)
|
147
|
+
when nil
|
148
|
+
candidate_paths = candidates.collect(&:to_s)
|
149
|
+
raise "seed file doesn't exist. candidates: #{candidate_paths.inspect}"
|
146
150
|
else
|
147
151
|
raise "unsupported seed file type: <#{seed_file_path}>"
|
148
152
|
end
|
@@ -27,21 +27,122 @@ module ActiveGroonga
|
|
27
27
|
@expression = @records.expression
|
28
28
|
end
|
29
29
|
@n_records = options[:n_records] || @records.size
|
30
|
+
@default_sort_keys = options[:default_sort_keys]
|
31
|
+
@default_limit = options[:default_limit]
|
30
32
|
compute_n_key_nested
|
31
33
|
end
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
+
# Paginates the result set.
|
36
|
+
#
|
37
|
+
# @overload paginate(sort_keys, options={})
|
38
|
+
# @param [Array<Array<String, Symbol>>] sort_keys
|
39
|
+
# The array of sort key for paginating. Each sort
|
40
|
+
# key is an array of sort key column name and order.
|
41
|
+
# @option options [Integer] :size The page size.
|
42
|
+
# {Base.limit} is used as the default value.
|
43
|
+
# @option options [Integer] :page The target page.
|
44
|
+
# The page is 1 origin not 0 origin. 1 is used as
|
45
|
+
# the default value.
|
46
|
+
# @return [ResultSet] paginated result set.
|
47
|
+
#
|
48
|
+
# @example
|
49
|
+
# result_set = User.all
|
50
|
+
# # Paginates by sorting by "name" column value in
|
51
|
+
# # ascending order. The paginated result set has
|
52
|
+
# # less than or equal 10 records. And the returned
|
53
|
+
# # page is user requested page. If user doesn't
|
54
|
+
# # specify page, the first page is returned.
|
55
|
+
# result_set.paginate([["name", :ascending]],
|
56
|
+
# :size => 10,
|
57
|
+
# :page => param[:page])
|
58
|
+
#
|
59
|
+
# @overload paginate(options={})
|
60
|
+
# @option options [Integer] :size The page size.
|
61
|
+
# {Base.limit} is used as the default value.
|
62
|
+
# @option options [Integer] :page The target page.
|
63
|
+
# 1 is used as the default value.
|
64
|
+
# @return [ResultSet] paginated result set.
|
65
|
+
#
|
66
|
+
# @example
|
67
|
+
# # The default sort keys.
|
68
|
+
# User.sort_keys = [["name", :ascending]]
|
69
|
+
# result_set = User.all
|
70
|
+
# # Paginates by sorting by "name" column value in
|
71
|
+
# # ascending order because it is the default sort
|
72
|
+
# # keys. The paginated result set has
|
73
|
+
# # less than or equal 10 records. And the returned
|
74
|
+
# # page is user requested page. If user doesn't
|
75
|
+
# # specify page, the first page is returned.
|
76
|
+
# result_set.paginate(:size => 10,
|
77
|
+
# :page => param[:page])
|
78
|
+
#
|
79
|
+
# {Base.sort_keys} is used as the sort keys.
|
80
|
+
def paginate(sort_keys=nil, options={})
|
81
|
+
if sort_keys.is_a?(Hash) and options.empty?
|
82
|
+
options = sort_keys
|
83
|
+
sort_keys = nil
|
84
|
+
end
|
85
|
+
options[:size] = normalize_limit(options[:size])
|
86
|
+
options[:page] = normalize_page(options[:page])
|
87
|
+
sort_keys = normalize_sort_keys(sort_keys)
|
35
88
|
records = @records.paginate(sort_keys, options)
|
36
|
-
set =
|
37
|
-
:expression => @expression)
|
89
|
+
set = create_result_set(records)
|
38
90
|
set.extend(PaginationProxy)
|
39
91
|
set
|
40
92
|
end
|
41
93
|
|
42
|
-
|
43
|
-
|
44
|
-
|
94
|
+
# Sorts the result set.
|
95
|
+
#
|
96
|
+
# @overload sort(keys, options={})
|
97
|
+
# @param [Array<Array<String, Symbol>>] keys
|
98
|
+
# The array of sort key for sort. Each sort
|
99
|
+
# key is an array of sort key column name and order.
|
100
|
+
# @option options [Integer] :limit The max number of records.
|
101
|
+
# {Base.limit} is used as the default value.
|
102
|
+
# If {Base.limit} is nil, all records are returned.
|
103
|
+
# @option options [Integer] :offset The record start offset.
|
104
|
+
# Offset is 0-origin not 1-origin.
|
105
|
+
# The default value is 0.
|
106
|
+
# @return [ResultSet] sorted result set.
|
107
|
+
#
|
108
|
+
# @example
|
109
|
+
# result_set = User.all
|
110
|
+
# # Sorts by "name" column value in
|
111
|
+
# # ascending order. The sorted result set has
|
112
|
+
# # from the 5th records to the 14th records.
|
113
|
+
# result_set.paginate([["name", :ascending]],
|
114
|
+
# :limit => 10,
|
115
|
+
# :offset => 4)
|
116
|
+
#
|
117
|
+
# @overload sort(options={})
|
118
|
+
# @option options [Integer] :limit The max number of records.
|
119
|
+
# {Base.limit} is used as the default value.
|
120
|
+
# If {Base.limit} is nil, all records are returned.
|
121
|
+
# @option options [Integer] :offset The record start offset.
|
122
|
+
# Offset is 0-origin not 1-origin.
|
123
|
+
# The default value is 0.
|
124
|
+
# @return [ResultSet] sorted result set.
|
125
|
+
#
|
126
|
+
# @example
|
127
|
+
# # The default sort keys.
|
128
|
+
# User.sort_keys = [["name", :ascending]]
|
129
|
+
# result_set = User.all
|
130
|
+
# # Sorts by "name" column value in
|
131
|
+
# # ascending order because it is the default sort
|
132
|
+
# # keys. The sorted result set has
|
133
|
+
# # from the 5th records to the 14th records.
|
134
|
+
# result_set.paginate(:limit => 10,
|
135
|
+
# :offset => 4)
|
136
|
+
#
|
137
|
+
# {Base.sort_keys} is used as the sort keys.
|
138
|
+
def sort(keys=nil, options={})
|
139
|
+
if keys.is_a?(Hash) and options.empty?
|
140
|
+
options = keys
|
141
|
+
keys = nil
|
142
|
+
end
|
143
|
+
keys = normalize_sort_keys(keys)
|
144
|
+
options[:limit] = normalize_limit(options[:limit]) || @n_records
|
145
|
+
create_result_set(@records.sort(keys, options))
|
45
146
|
end
|
46
147
|
|
47
148
|
def group(key)
|
@@ -82,7 +183,18 @@ module ActiveGroonga
|
|
82
183
|
end
|
83
184
|
end
|
84
185
|
|
85
|
-
def
|
186
|
+
def normalize_limit(limit)
|
187
|
+
unless limit.blank?
|
188
|
+
begin
|
189
|
+
Integer(limit)
|
190
|
+
rescue
|
191
|
+
limit = nil
|
192
|
+
end
|
193
|
+
end
|
194
|
+
limit || @default_limit
|
195
|
+
end
|
196
|
+
|
197
|
+
def normalize_page(page)
|
86
198
|
if page.blank?
|
87
199
|
1
|
88
200
|
else
|
@@ -94,6 +206,19 @@ module ActiveGroonga
|
|
94
206
|
end
|
95
207
|
end
|
96
208
|
|
209
|
+
def normalize_sort_keys(keys)
|
210
|
+
keys = @default_sort_keys if keys.blank?
|
211
|
+
keys = [["_id", :ascending]] if keys.blank?
|
212
|
+
keys
|
213
|
+
end
|
214
|
+
|
215
|
+
def create_result_set(records)
|
216
|
+
self.class.new(records, @klass,
|
217
|
+
:default_sort_keys => @default_sort_keys,
|
218
|
+
:default_limit => @default_limit,
|
219
|
+
:expression => @expression)
|
220
|
+
end
|
221
|
+
|
97
222
|
module PaginationProxy
|
98
223
|
Groonga::Pagination.instance_methods.each do |method_name|
|
99
224
|
define_method(method_name) do
|
@@ -208,6 +208,12 @@ module ActiveGroongaTestUtils
|
|
208
208
|
"fulltext search engine",
|
209
209
|
"<html><body>groonga</body></html>")
|
210
210
|
|
211
|
+
@bookmark_records[:rroonga] =
|
212
|
+
create_bookmark(@user_records[:daijiro],
|
213
|
+
"http://groonga.rubyforge.org/",
|
214
|
+
"The Ruby bindings for groonga",
|
215
|
+
"<html><body>rroonga</body></html>")
|
216
|
+
|
211
217
|
@bookmark_records[:cutter] =
|
212
218
|
create_bookmark(@user_records[:gunyarakun],
|
213
219
|
"http://cutter.sourceforge.net/",
|
data/test/run-test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
#
|
3
|
-
# Copyright (C) 2009-
|
3
|
+
# Copyright (C) 2009-2011 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
#
|
5
5
|
# This library is free software; you can redistribute it and/or
|
6
6
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -20,21 +20,12 @@
|
|
20
20
|
require 'pathname'
|
21
21
|
require 'shellwords'
|
22
22
|
|
23
|
+
require "rubygems"
|
24
|
+
gem "test-unit"
|
25
|
+
require "test/unit"
|
26
|
+
require "test/unit/notify"
|
27
|
+
|
23
28
|
base_dir = Pathname(__FILE__).dirname.parent.expand_path
|
24
|
-
test_unit_dir = base_dir + "test-unit"
|
25
|
-
test_unit_notify_dir = base_dir + "test-unit-notify"
|
26
|
-
test_unit_repository_base = "http://test-unit.rubyforge.org/svn"
|
27
|
-
unless test_unit_dir.exist?
|
28
|
-
system("svn", "co", "#{test_unit_repository_base}/trunk",
|
29
|
-
test_unit_dir.to_s)
|
30
|
-
end
|
31
|
-
unless test_unit_notify_dir.exist?
|
32
|
-
test_unit_notify_repository = "#{test_unit_repository_base}/extensions/test-unit-notify/trunk/"
|
33
|
-
system("svn", "co",
|
34
|
-
test_unit_notify_repository.to_s,
|
35
|
-
test_unit_notify_dir.to_s) or exit(false)
|
36
|
-
system("svn", "up", test_unit_dir.to_s) or exit(false)
|
37
|
-
end
|
38
29
|
|
39
30
|
rroonga_dir = base_dir.parent + "rroonga"
|
40
31
|
lib_dir = base_dir + "lib"
|
@@ -55,16 +46,9 @@ if rroonga_dir.exist?
|
|
55
46
|
$LOAD_PATH.unshift(rroonga_dir + "lib")
|
56
47
|
end
|
57
48
|
|
58
|
-
$LOAD_PATH.unshift(test_unit_notify_dir + "lib")
|
59
|
-
$LOAD_PATH.unshift(test_unit_dir + "lib")
|
60
|
-
|
61
49
|
ENV["TEST_UNIT_MAX_DIFF_TARGET_STRING_SIZE"] = "10000"
|
62
50
|
|
63
|
-
|
64
|
-
require 'test/unit/notify'
|
65
|
-
|
66
|
-
ARGV.unshift("--priority-mode")
|
67
|
-
ARGV.unshift("--notify")
|
51
|
+
Test::Unit::Priority.enable
|
68
52
|
|
69
53
|
$LOAD_PATH.unshift(lib_dir)
|
70
54
|
|
@@ -75,4 +59,7 @@ Dir.glob("test/**/test{_,-}*.rb") do |file|
|
|
75
59
|
require file.sub(/\.rb$/, '')
|
76
60
|
end
|
77
61
|
|
78
|
-
|
62
|
+
success = Test::Unit::AutoRunner.run do |runner|
|
63
|
+
runner.runner_options[:show_detail_immediately] = true
|
64
|
+
end
|
65
|
+
exit(success)
|
data/test/test-base.rb
CHANGED
@@ -19,7 +19,9 @@ class TestBase < Test::Unit::TestCase
|
|
19
19
|
|
20
20
|
def test_select
|
21
21
|
bookmarks = Bookmark.select
|
22
|
-
assert_equal(["http://groonga.org/",
|
22
|
+
assert_equal(["http://groonga.org/",
|
23
|
+
"http://groonga.rubyforge.org/",
|
24
|
+
"http://cutter.sourceforge.net/"].sort,
|
23
25
|
bookmarks.collect(&:uri).sort)
|
24
26
|
end
|
25
27
|
|
@@ -158,14 +160,17 @@ class TestBase < Test::Unit::TestCase
|
|
158
160
|
bookmarks = Bookmark.select do |record|
|
159
161
|
record.user == daijiro
|
160
162
|
end
|
161
|
-
assert_equal([Bookmark.find(@bookmark_records[:groonga].id),
|
163
|
+
assert_equal([Bookmark.find(@bookmark_records[:groonga].id),
|
164
|
+
Bookmark.find(@bookmark_records[:rroonga].id),
|
165
|
+
google],
|
162
166
|
bookmarks.to_a)
|
163
167
|
end
|
164
168
|
|
165
169
|
def test_find_reference_by_id
|
166
170
|
daijiro = @user_records[:daijiro]
|
167
171
|
bookmarks = Bookmark.select {|record| record.user == daijiro}
|
168
|
-
assert_equal([Bookmark.find(@bookmark_records[:groonga])
|
172
|
+
assert_equal([Bookmark.find(@bookmark_records[:groonga]),
|
173
|
+
Bookmark.find(@bookmark_records[:rroonga])],
|
169
174
|
bookmarks.to_a)
|
170
175
|
end
|
171
176
|
|
@@ -225,7 +230,8 @@ class TestBase < Test::Unit::TestCase
|
|
225
230
|
end
|
226
231
|
target =~ "groonga"
|
227
232
|
end
|
228
|
-
assert_equal([["http://groonga.org/", 10]
|
233
|
+
assert_equal([["http://groonga.org/", 10],
|
234
|
+
["http://groonga.rubyforge.org/", 5]],
|
229
235
|
bookmarks.collect {|bookmark| [bookmark.uri, bookmark.score]})
|
230
236
|
end
|
231
237
|
end
|
data/test/test-result-set.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2010 Kouhei Sutou <kou@clear-code.com>
|
1
|
+
# Copyright (C) 2010-2011 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
|
@@ -17,15 +17,127 @@
|
|
17
17
|
class TestResultSet < Test::Unit::TestCase
|
18
18
|
include ActiveGroongaTestUtils
|
19
19
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
bookmarks.paginate(["uri"], :size => 1).collect(&:uri))
|
20
|
+
def teardown
|
21
|
+
Bookmark.sort_keys = nil
|
22
|
+
Bookmark.limit = nil
|
24
23
|
end
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
class TestPaginate < self
|
26
|
+
def test_explicit
|
27
|
+
bookmarks = Bookmark.select
|
28
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
29
|
+
bookmarks.paginate(["uri"], :size => 1).collect(&:uri))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class TestPaginateSortKeys < self
|
34
|
+
def test_implicit
|
35
|
+
Bookmark.sort_keys = ["uri"]
|
36
|
+
bookmarks = Bookmark.select
|
37
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
38
|
+
bookmarks.paginate(:size => 1).collect(&:uri))
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_explicit
|
42
|
+
Bookmark.sort_keys = ["uri"]
|
43
|
+
bookmarks = Bookmark.select
|
44
|
+
assert_equal([User.find(@user_records[:daijiro].id)].sort,
|
45
|
+
bookmarks.paginate(["user"], :size => 1).collect(&:user))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class TestPaginateLimit < self
|
50
|
+
def test_implicit
|
51
|
+
Bookmark.limit = 2
|
52
|
+
bookmarks = Bookmark.select
|
53
|
+
assert_equal(["http://cutter.sourceforge.net/",
|
54
|
+
"http://groonga.org/"].sort,
|
55
|
+
bookmarks.paginate(["uri"]).collect(&:uri))
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_explicit
|
59
|
+
Bookmark.limit = 2
|
60
|
+
bookmarks = Bookmark.select
|
61
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
62
|
+
bookmarks.paginate(["uri"], :size => 1).collect(&:uri))
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
class TestPaginateAll < self
|
67
|
+
def test_implicit
|
68
|
+
Bookmark.sort_keys = ["uri"]
|
69
|
+
Bookmark.limit = 2
|
70
|
+
bookmarks = Bookmark.select
|
71
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
72
|
+
bookmarks.paginate(:size => 1).collect(&:uri))
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_explicit
|
76
|
+
Bookmark.sort_keys = ["uri"]
|
77
|
+
Bookmark.limit = 2
|
78
|
+
bookmarks = Bookmark.select
|
79
|
+
assert_equal([User.find(@user_records[:daijiro].id)].sort,
|
80
|
+
bookmarks.paginate(["user"], :size => 1).collect(&:user))
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
class TestSort < self
|
85
|
+
def test_explicit
|
86
|
+
bookmarks = Bookmark.select
|
87
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
88
|
+
bookmarks.sort(["uri"], :limit => 1).collect(&:uri))
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
class TestSortSortKeys < self
|
93
|
+
def test_implicit
|
94
|
+
Bookmark.sort_keys = ["uri"]
|
95
|
+
bookmarks = Bookmark.select
|
96
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
97
|
+
bookmarks.sort(:limit => 1).collect(&:uri))
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_explicit
|
101
|
+
Bookmark.sort_keys = ["uri"]
|
102
|
+
bookmarks = Bookmark.select
|
103
|
+
assert_equal([User.find(@user_records[:daijiro].id)].sort,
|
104
|
+
bookmarks.sort(["user"], :limit => 1).collect(&:user))
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
class TestSortLimit < self
|
109
|
+
def test_implicit
|
110
|
+
Bookmark.limit = 2
|
111
|
+
bookmarks = Bookmark.select
|
112
|
+
assert_equal(["http://cutter.sourceforge.net/",
|
113
|
+
"http://groonga.org/",].sort,
|
114
|
+
bookmarks.sort(["uri"]).collect(&:uri))
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_explicit
|
118
|
+
Bookmark.limit = 2
|
119
|
+
bookmarks = Bookmark.select
|
120
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
121
|
+
bookmarks.sort(["uri"], :limit => 1).collect(&:uri))
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
class TestSortAll < self
|
126
|
+
def test_implicit
|
127
|
+
Bookmark.sort_keys = ["uri"]
|
128
|
+
Bookmark.limit = 2
|
129
|
+
bookmarks = Bookmark.select
|
130
|
+
assert_equal(["http://cutter.sourceforge.net/",
|
131
|
+
"http://groonga.org/"].sort,
|
132
|
+
bookmarks.sort.collect(&:uri))
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_explicit
|
136
|
+
Bookmark.sort_keys = ["uri"]
|
137
|
+
Bookmark.limit = 2
|
138
|
+
bookmarks = Bookmark.select
|
139
|
+
assert_equal([User.find(@user_records[:daijiro].id)].sort,
|
140
|
+
bookmarks.sort(["user"], :limit => 1).collect(&:user))
|
141
|
+
end
|
30
142
|
end
|
31
143
|
end
|