rroonga 2.0.8 → 2.1.0
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.
- data/README.textile +2 -2
- data/bin/groonga-index-dump +47 -0
- data/doc/text/news.textile +733 -0
- data/doc/text/tutorial.textile +535 -0
- data/example/bookmark.rb +1 -1
- data/ext/groonga/rb-grn-database.c +21 -24
- data/ext/groonga/rb-grn-double-array-trie.c +50 -58
- data/ext/groonga/rb-grn-exception.c +18 -1
- data/ext/groonga/rb-grn-hash.c +18 -3
- data/ext/groonga/rb-grn-index-column.c +50 -2
- data/ext/groonga/rb-grn-normalizer.c +83 -0
- data/ext/groonga/rb-grn-object.c +18 -14
- data/ext/groonga/rb-grn-patricia-trie.c +17 -2
- data/ext/groonga/rb-grn-query-logger.c +263 -0
- data/ext/groonga/rb-grn-snippet.c +6 -0
- data/ext/groonga/rb-grn-table-key-support.c +204 -13
- data/ext/groonga/rb-grn-table.c +124 -46
- data/ext/groonga/rb-grn.h +14 -3
- data/ext/groonga/rb-groonga.c +2 -0
- data/lib/groonga/database.rb +7 -0
- data/lib/groonga/dumper.rb +21 -2
- data/lib/groonga/index-column.rb +170 -0
- data/lib/groonga/query-logger.rb +129 -0
- data/lib/groonga/record.rb +32 -8
- data/lib/groonga/schema.rb +231 -288
- data/lib/groonga.rb +2 -1
- data/rroonga-build.rb +2 -2
- data/rroonga.gemspec +11 -7
- data/test/groonga-test-utils.rb +18 -6
- data/test/test-hash.rb +49 -20
- data/test/test-index-cursor.rb +4 -4
- data/{Gemfile → test/test-normalizer.rb} +9 -5
- data/test/test-pagination.rb +1 -1
- data/test/test-patricia-trie.rb +8 -0
- data/test/test-schema.rb +16 -13
- data/test/test-snippet.rb +5 -0
- data/test/test-table.rb +24 -12
- data/test/test-view.rb +0 -1
- metadata +154 -136
- data/AUTHORS +0 -5
- data/Rakefile +0 -203
- data/bin/groonga-query-log-extract +0 -117
    
        data/rroonga-build.rb
    CHANGED
    
    
    
        data/rroonga.gemspec
    CHANGED
    
    | @@ -15,6 +15,8 @@ | |
| 15 15 | 
             
            # License along with this library; if not, write to the Free Software
         | 
| 16 16 | 
             
            # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
         | 
| 17 17 |  | 
| 18 | 
            +
            require "English"
         | 
| 19 | 
            +
             | 
| 18 20 | 
             
            base_dir = File.dirname(__FILE__)
         | 
| 19 21 | 
             
            ext_dir = File.join(base_dir, "ext", "groonga")
         | 
| 20 22 |  | 
| @@ -40,13 +42,15 @@ Gem::Specification.new do |s| | |
| 40 42 | 
             
              s.version = guess_version.call(ext_dir)
         | 
| 41 43 |  | 
| 42 44 | 
             
              authors_path = File.join(base_dir, "AUTHORS")
         | 
| 43 | 
            -
              authors | 
| 45 | 
            +
              authors = []
         | 
| 46 | 
            +
              emails = []
         | 
| 47 | 
            +
              File.readlines(authors_path).each do |line|
         | 
| 44 48 | 
             
                if /\s*<([^<>]*)>$/ =~ line
         | 
| 45 | 
            -
                   | 
| 46 | 
            -
             | 
| 47 | 
            -
                  nil
         | 
| 49 | 
            +
                  authors << $PREMATCH
         | 
| 50 | 
            +
                  emails << $1
         | 
| 48 51 | 
             
                end
         | 
| 49 | 
            -
              end | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
             | 
| 50 54 | 
             
              s.authors = authors
         | 
| 51 55 | 
             
              s.email = emails
         | 
| 52 56 |  | 
| @@ -56,6 +60,7 @@ Gem::Specification.new do |s| | |
| 56 60 | 
             
              s.summary, s.description, = description.split(/\n\n+/, 3)
         | 
| 57 61 |  | 
| 58 62 | 
             
              s.files = ["README.textile", "AUTHORS", "Rakefile", "Gemfile"]
         | 
| 63 | 
            +
              s.files = Dir.glob("doc/text/*.textile")
         | 
| 59 64 | 
             
              s.files += ["#{s.name}.gemspec"]
         | 
| 60 65 | 
             
              s.files += ["rroonga-build.rb", "extconf.rb"]
         | 
| 61 66 | 
             
              Dir.chdir(base_dir) do
         | 
| @@ -83,8 +88,7 @@ Gem::Specification.new do |s| | |
| 83 88 | 
             
              s.add_development_dependency("rake-compiler")
         | 
| 84 89 | 
             
              s.add_development_dependency("bundler")
         | 
| 85 90 | 
             
              s.add_development_dependency("yard")
         | 
| 86 | 
            -
               | 
| 87 | 
            -
              s.add_development_dependency("packnga", ["= 0.9.4"])
         | 
| 91 | 
            +
              s.add_development_dependency("packnga")
         | 
| 88 92 | 
             
              s.add_development_dependency("RedCloth")
         | 
| 89 93 | 
             
            end
         | 
| 90 94 |  | 
    
        data/test/groonga-test-utils.rb
    CHANGED
    
    | @@ -40,6 +40,8 @@ module GroongaTestUtils | |
| 40 40 |  | 
| 41 41 | 
             
                setup_encoding
         | 
| 42 42 | 
             
                setup_context
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                @database = nil
         | 
| 43 45 | 
             
              end
         | 
| 44 46 |  | 
| 45 47 | 
             
              def setup_tmp_directory
         | 
| @@ -60,8 +62,12 @@ module GroongaTestUtils | |
| 60 62 |  | 
| 61 63 | 
             
              def setup_log_path
         | 
| 62 64 | 
             
                @dump_log = false
         | 
| 65 | 
            +
             | 
| 63 66 | 
             
                Groonga::Logger.log_path = (@tmp_dir + "groonga.log").to_s
         | 
| 64 | 
            -
             | 
| 67 | 
            +
             | 
| 68 | 
            +
                @query_log_path = @tmp_dir + "groonga-query.log"
         | 
| 69 | 
            +
                query_logger = Groonga::FileQueryLogger.new(@query_log_path.to_s)
         | 
| 70 | 
            +
                Groonga::QueryLogger.register(query_logger, :all => true)
         | 
| 65 71 | 
             
              end
         | 
| 66 72 |  | 
| 67 73 | 
             
              def setup_tables_directory
         | 
| @@ -102,8 +108,15 @@ module GroongaTestUtils | |
| 102 108 | 
             
                @database = Groonga::Database.create(:path => @database_path.to_s)
         | 
| 103 109 | 
             
              end
         | 
| 104 110 |  | 
| 105 | 
            -
              def  | 
| 111 | 
            +
              def teardown_database
         | 
| 112 | 
            +
                return if @database.nil?
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                @database.close
         | 
| 106 115 | 
             
                @database = nil
         | 
| 116 | 
            +
              end
         | 
| 117 | 
            +
             | 
| 118 | 
            +
              def teardown_sandbox
         | 
| 119 | 
            +
                teardown_database
         | 
| 107 120 | 
             
                Groonga::Context.default.close
         | 
| 108 121 | 
             
                Groonga::Context.default = nil
         | 
| 109 122 | 
             
                GC.start
         | 
| @@ -114,17 +127,16 @@ module GroongaTestUtils | |
| 114 127 | 
             
              def teardown_log_path
         | 
| 115 128 | 
             
                return unless @dump_log
         | 
| 116 129 | 
             
                log_path = Groonga::Logger.log_path
         | 
| 117 | 
            -
                query_log_path = Groonga::Logger.query_log_path
         | 
| 118 130 | 
             
                if File.exist?(log_path)
         | 
| 119 131 | 
             
                  header = "--- log: #{log_path} ---"
         | 
| 120 132 | 
             
                  puts(header)
         | 
| 121 133 | 
             
                  puts(File.read(log_path))
         | 
| 122 134 | 
             
                  puts("-" * header.length)
         | 
| 123 135 | 
             
                end
         | 
| 124 | 
            -
                if  | 
| 125 | 
            -
                  header = "--- query log: #{query_log_path} ---"
         | 
| 136 | 
            +
                if @query_log_path.exist?
         | 
| 137 | 
            +
                  header = "--- query log: #{@query_log_path} ---"
         | 
| 126 138 | 
             
                  puts(header)
         | 
| 127 | 
            -
                  puts( | 
| 139 | 
            +
                  puts(@query_log_path.read)
         | 
| 128 140 | 
             
                  puts("-" * header.length)
         | 
| 129 141 | 
             
                end
         | 
| 130 142 | 
             
              end
         | 
    
        data/test/test-hash.rb
    CHANGED
    
    | @@ -26,25 +26,38 @@ class HashTest < Test::Unit::TestCase | |
| 26 26 | 
             
                                 :support_key?)
         | 
| 27 27 | 
             
              end
         | 
| 28 28 |  | 
| 29 | 
            -
               | 
| 30 | 
            -
                 | 
| 31 | 
            -
                 | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 29 | 
            +
              class DeleteTest < self
         | 
| 30 | 
            +
                setup
         | 
| 31 | 
            +
                def setup_data
         | 
| 32 | 
            +
                  bookmarks_path = @tables_dir + "bookmarks"
         | 
| 33 | 
            +
                  @bookmarks = Groonga::Hash.create(:name => "Bookmarks",
         | 
| 34 | 
            +
                                                    :key_type => "ShortText",
         | 
| 35 | 
            +
                                                    :path => bookmarks_path.to_s)
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  @groonga = @bookmarks.add("groonga")
         | 
| 38 | 
            +
                  @google  = @bookmarks.add("Google")
         | 
| 39 | 
            +
                  @cutter  = @bookmarks.add("Cutter")
         | 
| 40 | 
            +
                end
         | 
| 37 41 |  | 
| 38 | 
            -
                 | 
| 39 | 
            -
             | 
| 42 | 
            +
                def test_id
         | 
| 43 | 
            +
                  @bookmarks.delete(@google.id)
         | 
| 44 | 
            +
                  assert_equal(["groonga", "Cutter"],
         | 
| 45 | 
            +
                               @bookmarks.collect {|bookmark| bookmark.key})
         | 
| 46 | 
            +
                end
         | 
| 40 47 |  | 
| 41 | 
            -
                 | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 48 | 
            +
                def test_key
         | 
| 49 | 
            +
                  @bookmarks.delete(@cutter.key)
         | 
| 50 | 
            +
                  assert_equal(["groonga", "Google"],
         | 
| 51 | 
            +
                               @bookmarks.collect {|bookmark| bookmark.key})
         | 
| 52 | 
            +
                end
         | 
| 44 53 |  | 
| 45 | 
            -
                 | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 54 | 
            +
                def test_expression
         | 
| 55 | 
            +
                  @bookmarks.delete do |record|
         | 
| 56 | 
            +
                    record.key == @groonga.key
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
                  assert_equal(["Google", "Cutter"],
         | 
| 59 | 
            +
                               @bookmarks.collect {|bookmark| bookmark.key})
         | 
| 60 | 
            +
                end
         | 
| 48 61 | 
             
              end
         | 
| 49 62 |  | 
| 50 63 | 
             
              def test_value
         | 
| @@ -86,8 +99,10 @@ class HashTest < Test::Unit::TestCase | |
| 86 99 | 
             
                             "domain: <ShortText>, " +
         | 
| 87 100 | 
             
                             "range: (nil), " +
         | 
| 88 101 | 
             
                             "flags: <>, " +
         | 
| 102 | 
            +
                             "size: <0>, " +
         | 
| 89 103 | 
             
                             "encoding: <#{encoding.inspect}>, " +
         | 
| 90 | 
            -
                             " | 
| 104 | 
            +
                             "default_tokenizer: (nil), " +
         | 
| 105 | 
            +
                             "normalizer: (nil)>",
         | 
| 91 106 | 
             
                             anonymous_table.inspect)
         | 
| 92 107 | 
             
              end
         | 
| 93 108 |  | 
| @@ -100,8 +115,10 @@ class HashTest < Test::Unit::TestCase | |
| 100 115 | 
             
                             "domain: <ShortText>, " +
         | 
| 101 116 | 
             
                             "range: (nil), " +
         | 
| 102 117 | 
             
                             "flags: <>, " +
         | 
| 118 | 
            +
                             "size: <0>, " +
         | 
| 103 119 | 
             
                             "encoding: <#{encoding.inspect}>, " +
         | 
| 104 | 
            -
                             " | 
| 120 | 
            +
                             "default_tokenizer: (nil), " +
         | 
| 121 | 
            +
                             "normalizer: (nil)>",
         | 
| 105 122 | 
             
                             anonymous_table.inspect)
         | 
| 106 123 | 
             
              end
         | 
| 107 124 |  | 
| @@ -115,8 +132,10 @@ class HashTest < Test::Unit::TestCase | |
| 115 132 | 
             
                             "domain: <ShortText>, " +
         | 
| 116 133 | 
             
                             "range: (nil), " +
         | 
| 117 134 | 
             
                             "flags: <>, " +
         | 
| 135 | 
            +
                             "size: <0>, " +
         | 
| 118 136 | 
             
                             "encoding: <#{encoding.inspect}>, " +
         | 
| 119 | 
            -
                             " | 
| 137 | 
            +
                             "default_tokenizer: (nil), " +
         | 
| 138 | 
            +
                             "normalizer: (nil)>",
         | 
| 120 139 | 
             
                             named_table.inspect)
         | 
| 121 140 | 
             
              end
         | 
| 122 141 |  | 
| @@ -129,8 +148,10 @@ class HashTest < Test::Unit::TestCase | |
| 129 148 | 
             
                             "domain: <ShortText>, " +
         | 
| 130 149 | 
             
                             "range: (nil), " +
         | 
| 131 150 | 
             
                             "flags: <>, " +
         | 
| 151 | 
            +
                             "size: <0>, " +
         | 
| 132 152 | 
             
                             "encoding: <#{encoding.inspect}>, " +
         | 
| 133 | 
            -
                             " | 
| 153 | 
            +
                             "default_tokenizer: (nil), " +
         | 
| 154 | 
            +
                             "normalizer: (nil)>",
         | 
| 134 155 | 
             
                             named_table.inspect)
         | 
| 135 156 | 
             
              end
         | 
| 136 157 |  | 
| @@ -147,6 +168,14 @@ class HashTest < Test::Unit::TestCase | |
| 147 168 | 
             
                             hash.default_tokenizer)
         | 
| 148 169 | 
             
              end
         | 
| 149 170 |  | 
| 171 | 
            +
              def test_normalizer
         | 
| 172 | 
            +
                hash = Groonga::Hash.create
         | 
| 173 | 
            +
                assert_nil(hash.normalizer)
         | 
| 174 | 
            +
                hash.normalizer = "NormalizerAuto"
         | 
| 175 | 
            +
                assert_equal(Groonga["NormalizerAuto"],
         | 
| 176 | 
            +
                             hash.normalizer)
         | 
| 177 | 
            +
              end
         | 
| 178 | 
            +
             | 
| 150 179 | 
             
              def test_search
         | 
| 151 180 | 
             
                users = Groonga::Array.create(:name => "Users")
         | 
| 152 181 | 
             
                users.define_column("name", "ShortText")
         | 
    
        data/test/test-index-cursor.rb
    CHANGED
    
    | @@ -134,10 +134,10 @@ class IndexCursorTest < Test::Unit::TestCase | |
| 134 134 | 
             
                              :term_frequency, :weight, :n_rest_postings]
         | 
| 135 135 |  | 
| 136 136 | 
             
                expected = [
         | 
| 137 | 
            -
                            [1, 1, 1, 0, 1, 0,  | 
| 138 | 
            -
                            [2, 1, 1,  | 
| 139 | 
            -
                            [2, 1, 2, 0, 1, 0,  | 
| 140 | 
            -
                            [3, 1, 2,  | 
| 137 | 
            +
                            [1, 1, 1, 0, 1, 0, 0],
         | 
| 138 | 
            +
                            [2, 1, 1, 1, 1, 0, 0],
         | 
| 139 | 
            +
                            [2, 1, 2, 0, 1, 0, 0],
         | 
| 140 | 
            +
                            [3, 1, 2, 2, 1, 0, 0],
         | 
| 141 141 | 
             
                            [3, 1, 3, 0, 1, 0, 0],
         | 
| 142 142 | 
             
                            [3, 1, 4, 1, 1, 0, 0],
         | 
| 143 143 | 
             
                            [3, 1, 5, 3, 1, 0, 0],
         | 
| @@ -1,6 +1,4 @@ | |
| 1 | 
            -
            #  | 
| 2 | 
            -
            #
         | 
| 3 | 
            -
            # Copyright (C) 2011  Kouhei Sutou <kou@clear-code.com>
         | 
| 1 | 
            +
            # Copyright (C) 2012  Kouhei Sutou <kou@clear-code.com>
         | 
| 4 2 | 
             
            #
         | 
| 5 3 | 
             
            # This library is free software; you can redistribute it and/or
         | 
| 6 4 | 
             
            # modify it under the terms of the GNU Lesser General Public
         | 
| @@ -15,6 +13,12 @@ | |
| 15 13 | 
             
            # License along with this library; if not, write to the Free Software
         | 
| 16 14 | 
             
            # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
         | 
| 17 15 |  | 
| 18 | 
            -
             | 
| 16 | 
            +
            class NormalizerTest < Test::Unit::TestCase
         | 
| 17 | 
            +
              include GroongaTestUtils
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              setup :setup_database
         | 
| 19 20 |  | 
| 20 | 
            -
             | 
| 21 | 
            +
              def test_normalize
         | 
| 22 | 
            +
                assert_equal("abc", Groonga::Normalizer.normalize("AbC"))
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
    
        data/test/test-pagination.rb
    CHANGED
    
    | @@ -244,6 +244,6 @@ class PaginationTest < Test::Unit::TestCase | |
| 244 244 | 
             
                             :first_page? => users.first_page?,
         | 
| 245 245 | 
             
                             :last_page? => users.last_page?,
         | 
| 246 246 | 
             
                             :have_pages? => users.have_pages?,
         | 
| 247 | 
            -
                             :keys => users.collect | 
| 247 | 
            +
                             :keys => users.collect {|record| record.value.key})
         | 
| 248 248 | 
             
              end
         | 
| 249 249 | 
             
            end
         | 
    
        data/test/test-patricia-trie.rb
    CHANGED
    
    | @@ -40,6 +40,14 @@ class PatriciaTrieTest < Test::Unit::TestCase | |
| 40 40 | 
             
                             trie.default_tokenizer)
         | 
| 41 41 | 
             
              end
         | 
| 42 42 |  | 
| 43 | 
            +
              def test_normalizer
         | 
| 44 | 
            +
                trie = Groonga::PatriciaTrie.create
         | 
| 45 | 
            +
                assert_nil(trie.normalizer)
         | 
| 46 | 
            +
                trie.normalizer = "NormalizerAuto"
         | 
| 47 | 
            +
                assert_equal(Groonga["NormalizerAuto"],
         | 
| 48 | 
            +
                             trie.normalizer)
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 43 51 | 
             
              def test_search
         | 
| 44 52 | 
             
                users = Groonga::Array.create(:name => "Users")
         | 
| 45 53 | 
             
                users.define_column("name", "ShortText")
         | 
    
        data/test/test-schema.rb
    CHANGED
    
    | @@ -108,10 +108,11 @@ class SchemaTest < Test::Unit::TestCase | |
| 108 108 | 
             
                               "domain: <Int32>, " +
         | 
| 109 109 | 
             
                               "range: <UInt32>, " +
         | 
| 110 110 | 
             
                               "flags: <>, " +
         | 
| 111 | 
            +
                               "size: <0>, " +
         | 
| 111 112 | 
             
                               "encoding: <#{Groonga::Encoding.default.inspect}>, " +
         | 
| 112 | 
            -
                               " | 
| 113 | 
            +
                               "default_tokenizer: <#{tokenizer.name}>, " +
         | 
| 114 | 
            +
                               "normalizer: (nil)>",
         | 
| 113 115 | 
             
                               table.inspect)
         | 
| 114 | 
            -
                  assert_equal(tokenizer, table.default_tokenizer)
         | 
| 115 116 | 
             
                end
         | 
| 116 117 |  | 
| 117 118 | 
             
                def test_rename
         | 
| @@ -154,9 +155,9 @@ class SchemaTest < Test::Unit::TestCase | |
| 154 155 | 
             
                                               :path => path.to_s,
         | 
| 155 156 | 
             
                                               :value_type => "Float",
         | 
| 156 157 | 
             
                                               :default_tokenizer => "TokenBigram",
         | 
| 157 | 
            -
                                               :key_normalize => true,
         | 
| 158 158 | 
             
                                               :key_with_sis => true,
         | 
| 159 | 
            -
                                               :named_path => true | 
| 159 | 
            +
                                               :named_path => true,
         | 
| 160 | 
            +
                                               :normalizer => "NormalizerAuto") do |table|
         | 
| 160 161 | 
             
                  end
         | 
| 161 162 | 
             
                  table = context["Posts"]
         | 
| 162 163 | 
             
                  assert_equal("#<Groonga::PatriciaTrie " +
         | 
| @@ -165,11 +166,12 @@ class SchemaTest < Test::Unit::TestCase | |
| 165 166 | 
             
                               "path: <#{path}>, " +
         | 
| 166 167 | 
             
                               "domain: <Int32>, " +
         | 
| 167 168 | 
             
                               "range: <Float>, " +
         | 
| 168 | 
            -
                               "flags: <KEY_WITH_SIS | 
| 169 | 
            +
                               "flags: <KEY_WITH_SIS>, " +
         | 
| 170 | 
            +
                               "size: <0>, " +
         | 
| 169 171 | 
             
                               "encoding: <#{Groonga::Encoding.default.inspect}>, " +
         | 
| 170 | 
            -
                               " | 
| 172 | 
            +
                               "default_tokenizer: <TokenBigram>, " +
         | 
| 173 | 
            +
                               "normalizer: <NormalizerAuto>>",
         | 
| 171 174 | 
             
                               table.inspect)
         | 
| 172 | 
            -
                  assert_equal(context["TokenBigram"], table.default_tokenizer)
         | 
| 173 175 | 
             
                end
         | 
| 174 176 |  | 
| 175 177 | 
             
                def test_rename
         | 
| @@ -206,15 +208,15 @@ class SchemaTest < Test::Unit::TestCase | |
| 206 208 | 
             
                end
         | 
| 207 209 |  | 
| 208 210 | 
             
                def test_full_option
         | 
| 209 | 
            -
                  path = @tmp_dir + " | 
| 211 | 
            +
                  path = @tmp_dir + "double-array-trie.groonga"
         | 
| 210 212 | 
             
                  Groonga::Schema.create_table("Posts",
         | 
| 211 213 | 
             
                                               :type => :double_array_trie,
         | 
| 212 214 | 
             
                                               :key_type => "integer",
         | 
| 213 215 | 
             
                                               :path => path.to_s,
         | 
| 214 216 | 
             
                                               :value_type => "Float",
         | 
| 215 217 | 
             
                                               :default_tokenizer => "TokenBigram",
         | 
| 216 | 
            -
                                               : | 
| 217 | 
            -
                                               : | 
| 218 | 
            +
                                               :named_path => true,
         | 
| 219 | 
            +
                                               :normalizer => "NormalizerAuto") do |table|
         | 
| 218 220 | 
             
                  end
         | 
| 219 221 | 
             
                  table = context["Posts"]
         | 
| 220 222 | 
             
                  assert_equal("#<Groonga::DoubleArrayTrie " +
         | 
| @@ -223,11 +225,12 @@ class SchemaTest < Test::Unit::TestCase | |
| 223 225 | 
             
                               "path: <#{path}>, " +
         | 
| 224 226 | 
             
                               "domain: <Int32>, " +
         | 
| 225 227 | 
             
                               "range: <Float>, " +
         | 
| 226 | 
            -
                               "flags:  | 
| 228 | 
            +
                               "flags: <>, " +
         | 
| 229 | 
            +
                               "size: <0>, " +
         | 
| 227 230 | 
             
                               "encoding: <#{Groonga::Encoding.default.inspect}>, " +
         | 
| 228 | 
            -
                               " | 
| 231 | 
            +
                               "default_tokenizer: <TokenBigram>, " +
         | 
| 232 | 
            +
                               "normalizer: <NormalizerAuto>>",
         | 
| 229 233 | 
             
                               table.inspect)
         | 
| 230 | 
            -
                  assert_equal(context["TokenBigram"], table.default_tokenizer)
         | 
| 231 234 | 
             
                end
         | 
| 232 235 |  | 
| 233 236 | 
             
                def test_rename
         | 
    
        data/test/test-snippet.rb
    CHANGED
    
    
    
        data/test/test-table.rb
    CHANGED
    
    | @@ -277,19 +277,30 @@ class TableTest < Test::Unit::TestCase | |
| 277 277 | 
             
                             bookmark["created_at"].to_a)
         | 
| 278 278 | 
             
              end
         | 
| 279 279 |  | 
| 280 | 
            -
               | 
| 281 | 
            -
                 | 
| 282 | 
            -
                 | 
| 283 | 
            -
             | 
| 280 | 
            +
              class DeleteTest < self
         | 
| 281 | 
            +
                setup
         | 
| 282 | 
            +
                def setup_data
         | 
| 283 | 
            +
                  bookmarks_path = @tables_dir + "bookmarks"
         | 
| 284 | 
            +
                  @bookmarks = Groonga::Array.create(:name => "Bookmarks",
         | 
| 285 | 
            +
                                                     :path => bookmarks_path.to_s)
         | 
| 286 | 
            +
             | 
| 287 | 
            +
                  @bookmark_records = []
         | 
| 288 | 
            +
                  @bookmark_records << @bookmarks.add
         | 
| 289 | 
            +
                  @bookmark_records << @bookmarks.add
         | 
| 290 | 
            +
                  @bookmark_records << @bookmarks.add
         | 
| 291 | 
            +
                end
         | 
| 284 292 |  | 
| 285 | 
            -
                 | 
| 286 | 
            -
             | 
| 287 | 
            -
             | 
| 288 | 
            -
                 | 
| 293 | 
            +
                def test_id
         | 
| 294 | 
            +
                  @bookmarks.delete(@bookmark_records.last.id)
         | 
| 295 | 
            +
                  assert_equal([1, 2], @bookmarks.collect(&:id))
         | 
| 296 | 
            +
                end
         | 
| 289 297 |  | 
| 290 | 
            -
                 | 
| 291 | 
            -
             | 
| 292 | 
            -
             | 
| 298 | 
            +
                def test_expression
         | 
| 299 | 
            +
                  @bookmarks.delete do |record|
         | 
| 300 | 
            +
                    record.id < 3
         | 
| 301 | 
            +
                  end
         | 
| 302 | 
            +
                  assert_equal([3], @bookmarks.collect(&:id))
         | 
| 303 | 
            +
                end
         | 
| 293 304 | 
             
              end
         | 
| 294 305 |  | 
| 295 306 | 
             
              def test_remove
         | 
| @@ -407,8 +418,9 @@ class TableTest < Test::Unit::TestCase | |
| 407 418 | 
             
                empty1 = bookmarks.add
         | 
| 408 419 | 
             
                groonga = bookmarks.add(:uri => "http://groonga.org/")
         | 
| 409 420 | 
             
                empty2 = bookmarks.add
         | 
| 421 | 
            +
                sorted_bookmarks = bookmarks.sort([{:key => "uri", :order => :descending}])
         | 
| 410 422 | 
             
                assert_equal([groonga, empty1, empty2],
         | 
| 411 | 
            -
                              | 
| 423 | 
            +
                             sorted_bookmarks.collect(&:value))
         | 
| 412 424 | 
             
              end
         | 
| 413 425 |  | 
| 414 426 | 
             
              def test_group
         |