Skip to content

Commit

Permalink
normalize: add
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Oct 14, 2013
1 parent 45153f8 commit 263338a
Show file tree
Hide file tree
Showing 3 changed files with 151 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/groonga/command.rb
Expand Up @@ -28,6 +28,7 @@
require "groonga/command/dump"
require "groonga/command/get"
require "groonga/command/load"
require "groonga/command/normalize"
require "groonga/command/register"
require "groonga/command/select"
require "groonga/command/status"
Expand Down
62 changes: 62 additions & 0 deletions lib/groonga/command/normalize.rb
@@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2013 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 `normalize` command.
#
# @since 1.0.6
class Normalize < Base
Command.register("normalize", self)

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

# @return [String] `normalizer` parameter value.
# @since 1.0.6
def normalizer
self[:normalizer]
end

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

# @return [Array<String>] An array of flags 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.0.6
def flags
@flags ||= (self[:flags] || "").split(/\s*[| ]\s*/)
end
end
end
end
88 changes: 88 additions & 0 deletions test/command/test-normalize.rb
@@ -0,0 +1,88 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2013 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 NormalizeCommandTest < Test::Unit::TestCase
private
def normalize_command(pair_arguments={}, ordered_arguments=[])
Groonga::Command::Normalize.new("normalize",
pair_arguments,
ordered_arguments)
end

class ConstructorTest < self
def test_ordered_arguments
normalizer = "NormalizerAuto"
string = "AbcDef"
flags = "REMOVE_BLANK"

ordered_arguments = [
normalizer,
string,
flags,
]
command = normalize_command({}, ordered_arguments)
assert_equal({
:normalizer => normalizer,
:string => string,
:flags => flags,
},
command.arguments)
end
end

class NormalizerTest < self
def test_reader
command = normalize_command(:normalizer => "NormalizerAuto")
assert_equal("NormalizerAuto", command.normalizer)
end
end

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

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

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

def test_pipe_separator
command = normalize_command(:flags => "REMOVE_BLANK|WITH_TYPES")
assert_equal(["REMOVE_BLANK", "WITH_TYPES"], command.flags)
end

def test_space_separator
command = normalize_command(:flags => "REMOVE_BLANK WITH_TYPES")
assert_equal(["REMOVE_BLANK", "WITH_TYPES"], command.flags)
end

def test_spaces_around_separator
command = normalize_command(:flags => "REMOVE_BLANK | WITH_TYPES")
assert_equal(["REMOVE_BLANK", "WITH_TYPES"], command.flags)
end
end
end

0 comments on commit 263338a

Please sign in to comment.