Skip to content

Commit

Permalink
Support table_tokenize
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Jan 26, 2015
1 parent 9c03966 commit 3a315cf
Show file tree
Hide file tree
Showing 3 changed files with 170 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/groonga/command.rb
Expand Up @@ -39,5 +39,6 @@
require "groonga/command/table-create"
require "groonga/command/table-remove"
require "groonga/command/table-rename"
require "groonga/command/table-tokenize"
require "groonga/command/tokenize"
require "groonga/command/truncate"
70 changes: 70 additions & 0 deletions lib/groonga/command/table-tokenize.rb
@@ -0,0 +1,70 @@
# Copyright (C) 2015 Kouhei Sutou <kou@clear-code.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

require "groonga/command/base"

module Groonga
module Command
# A command class that represents `table_tokenize` command.
#
# @since 1.1.0
class TableTokenize < Base
Command.register("table_tokenize", self)

class << self
def parameter_names
[
:table,
:string,
:flags,
:mode,
]
end
end

# @return [String] `table` parameter value.
#
# @since 1.1.0
def table
self[:table]
end

# @return [String] `string` parameter value.
#
# @since 1.1.0
def string
self[:string]
end

# @return [Array<String>] An array of flag specified in `flags`
# parameter value. This array is extracted by parsing `flags`
# parameter value. If `flags` parameter value is nil or empty,
# an empty array is returned.
#
# @since 1.1.0
def flags
@flags ||= (self[:flags] || "").split(/\s*[| ]\s*/)
end

# @return [String] `mode` parameter value.
#
# @since 1.1.0
def mode
self[:mode]
end
end
end
end
99 changes: 99 additions & 0 deletions test/command/test-table-tokenize.rb
@@ -0,0 +1,99 @@
# Copyright (C) 2015 Kouhei Sutou <kou@clear-code.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

class TableTokenizeCommandTest < Test::Unit::TestCase
private
def table_tokenize_command(pair_arguments={}, ordered_arguments=[])
Groonga::Command::TableTokenize.new("table_tokenize",
pair_arguments,
ordered_arguments)
end

class ConstructorTest < self
def test_ordered_arguments
table = "Lexicon"
string = "groonga ruby linux"
flags = "NONE"
mode = "ADD"

ordered_arguments = [
table,
string,
flags,
mode,
]
command = tokenize_command({}, ordered_arguments)
assert_equal({
:table => table,
:string => string,
:flags => flags,
:mode => mode,
},
command.arguments)
end
end

class TableTest < self
def test_reader
command = table_tokenize_command(:table => "Lexicon")
assert_equal("Lexicon", command.table)
end
end

class StringTest < self
def test_reader
command = table_tokenize_command(:string => "Hello World")
assert_equal("Hello World", command.string)
end
end

class FlagsTest < self
def test_nil
command = table_tokenize_command
assert_equal([], command.flags)
end

def test_empty
command = table_tokenize_command(:flags => "")
assert_equal([], command.flags)
end

def test_pipe_separator
flags = "NONE|ENABLE_TOKENIZED_DELIMITER"
command = table_tokenize_command(:flags => flags)
assert_equal(["NONE", "ENABLE_TOKENIZED_DELIMITER"], command.flags)
end

def test_space_separator
flags = "NONE ENABLE_TOKENIZED_DELIMITER"
command = table_tokenize_command(:flags => flags)
assert_equal(["NONE", "ENABLE_TOKENIZED_DELIMITER"], command.flags)
end

def test_spaces_around_separator
flags = "NONE | ENABLE_TOKENIZED_DELIMITER"
command = table_tokenize_command(:flags => flag)
assert_equal(["NONE", "ENABLE_TOKENIZED_DELIMITER"], command.flags)
end
end

class ModeTest < self
def test_reader
command = table_tokenize_command(:mode => "ADD")
assert_equal("ADD", command.mode)
end
end
end

0 comments on commit 3a315cf

Please sign in to comment.