caruby-core 1.4.4 → 1.4.5
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/History.txt +2 -0
- data/README.md +0 -2
- data/lib/caruby/migration/migrator.rb +1 -1
- data/lib/caruby/version.rb +1 -1
- data/test/lib/caruby/csv/csv_mapper_test.rb +40 -0
- data/test/lib/caruby/csv/csvio_test.rb +69 -0
- data/test/lib/caruby/database/persistable_test.rb +92 -0
- data/test/lib/caruby/domain/domain_test.rb +126 -0
- data/test/lib/caruby/domain/inversible_test.rb +99 -0
- data/test/lib/caruby/domain/reference_visitor_test.rb +130 -0
- data/test/lib/caruby/import/java_test.rb +58 -0
- data/test/lib/caruby/util/cache_test.rb +23 -0
- data/test/lib/caruby/util/class_test.rb +61 -0
- data/test/lib/caruby/util/collection_test.rb +379 -0
- data/test/lib/caruby/util/command_test.rb +55 -0
- data/test/lib/caruby/util/controlled_value_test.rb +26 -0
- data/test/lib/caruby/util/domain_extent_test.rb +60 -0
- data/test/lib/caruby/util/file_separator_test.rb +30 -0
- data/test/lib/caruby/util/inflector_test.rb +12 -0
- data/test/lib/caruby/util/lazy_hash_test.rb +34 -0
- data/test/lib/caruby/util/merge_test.rb +83 -0
- data/test/lib/caruby/util/module_test.rb +29 -0
- data/test/lib/caruby/util/options_test.rb +59 -0
- data/test/lib/caruby/util/partial_order_test.rb +41 -0
- data/test/lib/caruby/util/person_test.rb +115 -0
- data/test/lib/caruby/util/pretty_print_test.rb +85 -0
- data/test/lib/caruby/util/properties_test.rb +50 -0
- data/test/lib/caruby/util/stopwatch_test.rb +18 -0
- data/test/lib/caruby/util/topological_sync_enumerator_test.rb +69 -0
- data/test/lib/caruby/util/transitive_closure_test.rb +59 -0
- data/test/lib/caruby/util/tree_test.rb +23 -0
- data/test/lib/caruby/util/trie_test.rb +14 -0
- data/test/lib/caruby/util/validation_test.rb +14 -0
- data/test/lib/caruby/util/version_test.rb +31 -0
- data/test/lib/caruby/util/visitor_test.rb +277 -0
- data/test/lib/caruby/util/weak_hash_test.rb +45 -0
- metadata +179 -161
@@ -0,0 +1,55 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
|
5
|
+
require 'caruby/cli/command'
|
6
|
+
require 'set'
|
7
|
+
|
8
|
+
module CaRuby
|
9
|
+
class CommandTest < Test::Unit::TestCase
|
10
|
+
def test_empty
|
11
|
+
verify_execution(Command.new, "test", {})
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_args_only
|
15
|
+
verify_execution(Command.new(:arg), "test arg", :arg => 'arg')
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_nonmandatory_argument_option
|
19
|
+
verify_execution(Command.new(:opt => :none), "test --opt", :opt => true)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_mandatory_argument_option
|
23
|
+
verify_execution(Command.new(:opt => :mandatory), "test --opt opt", {:opt => 'opt'})
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_integer_argument_option
|
27
|
+
verify_execution(Command.new(:opt => :integer), "test --opt 1", {:opt => 1})
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_array_argument_option
|
31
|
+
verify_execution(Command.new(:opt => :array), "test --opt a,b", {:opt => ['a', 'b']})
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_complex
|
35
|
+
verify_execution(Command.new(:arg1, :opt1 => :none, :opt2 => :optional, :opt3 => :mandatory),
|
36
|
+
"test --opt1 --opt3 opt3 arg1 arg2",
|
37
|
+
{:opt1 => true, :opt3 => 'opt3', :arg1 => 'arg1'},
|
38
|
+
'arg2')
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def verify_execution(cmd, s, opts, *args)
|
44
|
+
ARGV.clear.concat(s.split[1..-1])
|
45
|
+
cmd.start do |copts, *cargs|
|
46
|
+
opts.each do |opt, expected|
|
47
|
+
actual = copts[opt]
|
48
|
+
assert_not_nil(actual, "Command option #{opt} not found.")
|
49
|
+
assert_equal(expected, actual, "Command option #{opt} parsed incorrectly.")
|
50
|
+
end
|
51
|
+
assert_equal(cargs, args, "Command arguments differ.")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
|
5
|
+
require 'caruby/util/controlled_value'
|
6
|
+
require 'set'
|
7
|
+
|
8
|
+
class ControlledValueTest < Test::Unit::TestCase
|
9
|
+
def setup
|
10
|
+
@parent = CaRuby::ControlledValue.new('parent')
|
11
|
+
@c1 = CaRuby::ControlledValue.new('c1', @parent)
|
12
|
+
@gc11 = CaRuby::ControlledValue.new('gc11', @c1)
|
13
|
+
@gc12 = CaRuby::ControlledValue.new('gc12', @c2)
|
14
|
+
@c2 = CaRuby::ControlledValue.new('c2', @parent)
|
15
|
+
@gc21 = CaRuby::ControlledValue.new('gc21', @c2)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_parent
|
19
|
+
assert_same(@c1, @gc11.parent, "Parent incorrect")
|
20
|
+
assert(@c1.children.include?(@gc11), "Children incorrect")
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_descendants
|
24
|
+
assert(@parent.descendants.include?(@gc21), "Descendants incorrect")
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
|
5
|
+
require 'caruby/util/domain_extent'
|
6
|
+
|
7
|
+
class DomainExtentTest < Test::Unit::TestCase
|
8
|
+
# Test composite key class
|
9
|
+
class Composite
|
10
|
+
attr_reader :a, :b, :c
|
11
|
+
|
12
|
+
def initialize(a, b, c=3)
|
13
|
+
super()
|
14
|
+
@a = a; @b = b; @c = c
|
15
|
+
end
|
16
|
+
|
17
|
+
def ==(other)
|
18
|
+
a == other.a && b == other.b && c == other.c
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_reader :extent
|
23
|
+
|
24
|
+
def setup
|
25
|
+
@extent = DomainExtent.new
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_create_on_demand
|
29
|
+
assert(!extent.has_key?(String), 'New domain extent not empty')
|
30
|
+
assert_not_nil(extent[String], 'Entry not created on demand')
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_existing_fetch
|
34
|
+
expected = extent[String][1] = 'a'
|
35
|
+
target = extent.get(String, 1)
|
36
|
+
assert_equal(expected, target, 'Existing entry not found')
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_missing_fetch
|
40
|
+
assert_nil(DomainExtent.new.get(Symbol, :a), 'Default factory instance not nil')
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_simple_key_factory
|
44
|
+
extent = DomainExtent.new
|
45
|
+
# the String extent key is a number
|
46
|
+
# the String extent value is the number as a string
|
47
|
+
extent.set_factory(String) { |key| key.to_s }
|
48
|
+
assert_equal('1', extent.get(String, 1), 'Simple key instance not found')
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_composite_key_factory
|
52
|
+
extent = DomainExtent.new
|
53
|
+
# the String extent key is a number
|
54
|
+
# the String extent value is the number as a string
|
55
|
+
extent.set_factory(Composite) { |key| Composite.new(key[:a], key[:b], key[:c]) }
|
56
|
+
key = {:a => 1, :b => 2, :c => 3}
|
57
|
+
expected = Composite.new(1, 2, 3)
|
58
|
+
assert_equal(expected, extent.get(Composite, key), 'Composite key instance not found')
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
require 'caruby/util/file_separator'
|
5
|
+
|
6
|
+
class FileSeparatorTest < Test::Unit::TestCase
|
7
|
+
FIXTURES_DIR = 'test/fixtures/caruby/util'
|
8
|
+
LF_FILE = File.join(FIXTURES_DIR, 'lf_line_sep.txt')
|
9
|
+
CR_FILE = File.join(FIXTURES_DIR, 'cr_line_sep.txt')
|
10
|
+
CRLF_FILE = File.join(FIXTURES_DIR, 'crlf_line_sep.txt')
|
11
|
+
|
12
|
+
def test_lf_line_separator
|
13
|
+
verify_read(LF_FILE, "LF")
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_cr_line_separator
|
17
|
+
verify_read(CR_FILE, "CR")
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_crlf_line_separator
|
21
|
+
verify_read(CRLF_FILE, "CRLF")
|
22
|
+
end
|
23
|
+
|
24
|
+
def verify_read(file, type)
|
25
|
+
lines = File.open(file) { |io| io.readlines }
|
26
|
+
assert_equal(3, lines.size, "#{type} line separator not recognized in readlines")
|
27
|
+
lines = File.open(file) { |io| io.to_a }
|
28
|
+
assert_equal(3, lines.size, "#{type} line separator not recognized in to_a")
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
require 'caruby/util/inflector'
|
5
|
+
|
6
|
+
class InflectorTest < Test::Unit::TestCase
|
7
|
+
def test_quantified_s
|
8
|
+
assert_equal("1 person", "person".quantify(1))
|
9
|
+
assert_equal("2 people", "person".quantify(2))
|
10
|
+
assert_equal("0 people", "person".quantify(0))
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
|
5
|
+
require 'caruby/util/domain_extent'
|
6
|
+
|
7
|
+
class LazyHastTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def test_value_factory
|
10
|
+
hash = LazyHash.new { |key| key.to_s }
|
11
|
+
assert_equal('1', hash[1], "Factory return value is incorrect")
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_default_value_factory
|
15
|
+
hash = LazyHash.new
|
16
|
+
assert_nil(hash[1], "Default factory does not return")
|
17
|
+
assert(hash.has_key?(1), "Default entry not created")
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_nil_key
|
21
|
+
hash = LazyHash.new
|
22
|
+
assert_nil(hash[nil], "nil key does not return")
|
23
|
+
assert(!hash.has_key?(nil), "Entry created for nil key")
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_reject_missing_value
|
27
|
+
hash = LazyHash.new(:compact => true)
|
28
|
+
assert(!hash.has_key?(1), "Default entry created for nil value")
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_fetch
|
32
|
+
assert_raises(IndexError, "Fetch non-existent doesn't raise IndexError") { LazyHash.new.fetch(:a) }
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
require 'caruby/util/merge'
|
5
|
+
require 'caruby/util/log'
|
6
|
+
|
7
|
+
class MergeTest < Test::Unit::TestCase
|
8
|
+
LogCaRuby::Log.instance.open(File.join('test', 'results', 'log', 'caruby.log'), :debug => true)
|
9
|
+
|
10
|
+
class Target
|
11
|
+
include Mergeable
|
12
|
+
|
13
|
+
attr_accessor :a, :b, :c, :array
|
14
|
+
|
15
|
+
def self.mergeable_attributes
|
16
|
+
[:a, :b]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class Partial
|
21
|
+
attr_accessor :a, :c, :d
|
22
|
+
end
|
23
|
+
|
24
|
+
attr_reader :target
|
25
|
+
|
26
|
+
def setup
|
27
|
+
@target = Target.new
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_merge_attributes_hash
|
31
|
+
target.merge_attributes(:a => 1, :b => 2, :c => 3)
|
32
|
+
assert_equal(1, target.a, 'Attribute not merged')
|
33
|
+
assert_equal(2, target.b, 'Attribute not merged')
|
34
|
+
assert_equal(3, target.c, 'Attribute not merged')
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_merge_attributes_other
|
38
|
+
other = Target.new
|
39
|
+
other.a = 1
|
40
|
+
other.b = 2
|
41
|
+
other.c = 3
|
42
|
+
target.merge_attributes(other)
|
43
|
+
assert_equal(1, target.a, 'Attribute not merged')
|
44
|
+
assert_equal(2, target.b, 'Attribute not merged')
|
45
|
+
assert_nil(target.c, 'Non-mergeable attribute merged')
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_merge_attributes_other_partial
|
49
|
+
other = Partial.new
|
50
|
+
other.a = 1
|
51
|
+
other.c = 3
|
52
|
+
other.d = 4
|
53
|
+
target.merge_attributes(other)
|
54
|
+
assert_equal(1, target.a, 'Attribute not merged')
|
55
|
+
assert_nil(target.c, 'Non-mergeable attribute merged')
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_array_merge
|
59
|
+
array = [1]
|
60
|
+
array.merge([1, 2])
|
61
|
+
assert_equal([1, 2], array, 'Array deep merge incorrect')
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_array_attribute_merge
|
65
|
+
target.a = [1]
|
66
|
+
target.merge_attributes(:array => [1, 2])
|
67
|
+
assert_equal([1, 2], target.array, 'Array attribute not merged correctly')
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_hash_deep_merge
|
71
|
+
assert_equal({:a => [1], :b => [2, 3]}, {:a => [1], :b => [2]}.merge({:b => [3]}, :deep), 'Hash deep merge incorrect')
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_hash_in_place_deep_merge
|
75
|
+
hash = {:a => [1], :b => [2]}
|
76
|
+
hash.merge!({:b => [3], :c => 4}, :deep)
|
77
|
+
assert_equal({:a => [1], :b => [2, 3], :c => 4}, hash, 'Hash deep merge incorrect')
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_nested_hash_deep_merge
|
81
|
+
assert_equal({:a => {:b => [1, 2]}, :c => 3}, {:a => {:b => [1]}}.merge({:a => {:b => [2]}, :c => 3}, :deep), 'Hash deep merge incorrect')
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
require 'caruby/util/module'
|
5
|
+
|
6
|
+
module Outer
|
7
|
+
module Middle
|
8
|
+
module InnerModule; end
|
9
|
+
class InnerClass; end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class ModuleTest < Test::Unit::TestCase
|
14
|
+
def test_top_level_module_with_name
|
15
|
+
assert_equal(Array, Module.module_with_name(nil, 'Array'), "Top level module incorrect")
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_module_with_unqualified_name
|
19
|
+
assert_equal(Outer::Middle, Outer.module_with_name('Middle'), "Unqualified module incorrect")
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_module_with_qualified_name
|
23
|
+
assert_equal(Outer::Middle::InnerModule, Outer.module_with_name('Middle::InnerModule'), "Qualified module incorrect")
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_class_with_name
|
27
|
+
assert_equal(Outer::Middle::InnerClass, Outer.module_with_name('Middle::InnerClass'), "Inner class incorrect")
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
require 'caruby/util/options'
|
5
|
+
|
6
|
+
class OptionsTest < Test::Unit::TestCase
|
7
|
+
def test_present
|
8
|
+
assert(Options.get(:key, {:key => true}), "Option true value not returned")
|
9
|
+
assert(!Options.get(:key, {:key => false}), "Option true value not returned")
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_nil_value
|
13
|
+
assert_equal(:a, Options.get(:key, {:key => nil}, :a), "Options nil value not returned")
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_false_with_true_default
|
17
|
+
assert_equal(false, Options.get(:key, {:key => false}, true), "Option false value with true default doesn't return false")
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_missing
|
21
|
+
assert_nil(Options.get(:key, {}), "Missing option incorrectly found")
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_default_value
|
25
|
+
assert_equal(:a, Options.get(:key, {}, :a), "Option default value not used")
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_default_block
|
29
|
+
assert_equal(:b, Options.get(:key, {}) { :b }, "Option default block not called")
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_symbol
|
33
|
+
assert(Options.get(:key, :key), "Option not found in singleton options")
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_array
|
37
|
+
assert(Options.get(:b, [:a, :b]), "Option not found in array options")
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_collection_value
|
41
|
+
assert_equal([:a], Options.get(:key, {:key => [:a]}, []), "Option array value not returned")
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_empty_to_hash
|
45
|
+
assert_equal({}, Options.to_hash(), "Option to_hash with empty argument list not an empty hash")
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_nil_to_hash
|
49
|
+
assert_equal({}, Options.to_hash(nil), "Option to_hash with nil argument list not an empty hash")
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_hash_to_hash
|
53
|
+
assert_equal({:a => 1}, Options.to_hash({:a => 1}), "Option to_hash with hash argument list not an empty hash")
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_lish_to_hash
|
57
|
+
assert_equal({:a => 1, :b => true, :c => [2, 3]}, Options.to_hash(:a, 1, :b, :c, 2, 3), "Option to_hash with list argument list incorrect")
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
require 'caruby/util/partial_order'
|
5
|
+
|
6
|
+
class Queued
|
7
|
+
include PartialOrder
|
8
|
+
|
9
|
+
attr_reader :value, :queue
|
10
|
+
|
11
|
+
def initialize(value, on)
|
12
|
+
@value = value
|
13
|
+
@queue = on.push(self)
|
14
|
+
end
|
15
|
+
|
16
|
+
def <=>(other)
|
17
|
+
value <=> other.value if queue.equal?(other.queue)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class PartialOrderTest < Test::Unit::TestCase
|
22
|
+
def test_same_queue
|
23
|
+
@a = Queued.new(1, [])
|
24
|
+
assert_equal(@a, @a.dup, "Same value, queue not equal")
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_different_eql_queue
|
28
|
+
@a = Queued.new(1, [])
|
29
|
+
@b = Queued.new(1, [])
|
30
|
+
assert_nil(@a <=> @b, "Same value, different queue <=> not nil")
|
31
|
+
assert_not_equal(@a, @b, "Same value, different queue is equal")
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_less_than
|
35
|
+
@a = Queued.new(1, [])
|
36
|
+
@b = Queued.new(2, @a.queue)
|
37
|
+
@c = Queued.new(2, [])
|
38
|
+
assert(@a < @b, "Comparison incorrect")
|
39
|
+
assert_nil(@a < @c, "Comparison incorrect")
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
$:.unshift '../caruby/lib'
|
3
|
+
|
4
|
+
require "test/unit"
|
5
|
+
require 'caruby/util/person'
|
6
|
+
|
7
|
+
class PersonTest < Test::Unit::TestCase
|
8
|
+
def test_middle_but_no_first
|
9
|
+
assert_raises(ValidationError) { || CaRuby::Person::Name.new('Longfellow', nil, 'Wadsworth').validate }
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_empty_middle_and_no_first
|
13
|
+
assert_raises(ValidationError) { || CaRuby::Person::Name.new(nil, '').validate }
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_substitute_nil_for_empty
|
17
|
+
name = CaRuby::Person::Name.new('Longfellow', '')
|
18
|
+
assert_nil(name.first)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_full_print
|
22
|
+
name = CaRuby::Person::Name.new('Longfellow', 'Henry', 'W.')
|
23
|
+
assert_equal('Henry W. Longfellow', name.to_s)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_first_and_last_print
|
27
|
+
name = CaRuby::Person::Name.new('Longfellow', 'Henry')
|
28
|
+
assert_equal('Henry Longfellow', name.to_s)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_last_print
|
32
|
+
name = CaRuby::Person::Name.new('Longfellow', '')
|
33
|
+
assert_equal('Longfellow', name.to_s)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_first_print
|
37
|
+
name = CaRuby::Person::Name.new('', 'Henry')
|
38
|
+
assert_equal('Henry', name.to_s)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_parse_last_first
|
42
|
+
name = CaRuby::Person::Name.parse('Longfellow, Henry')
|
43
|
+
assert_equal('Henry', name.first)
|
44
|
+
assert_equal('Longfellow', name.last)
|
45
|
+
assert_nil(name.middle)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_parse_last_first_middle
|
49
|
+
name = CaRuby::Person::Name.parse('Longfellow, Henry Wadsworth')
|
50
|
+
assert_equal('Henry', name.first)
|
51
|
+
assert_equal('Longfellow', name.last)
|
52
|
+
assert_equal('Wadsworth', name.middle)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_parse_last_first_middles
|
56
|
+
name = CaRuby::Person::Name.parse('Longfellow, Henry Gallifant Wadsworth')
|
57
|
+
assert_equal('Henry', name.first)
|
58
|
+
assert_equal('Longfellow', name.last)
|
59
|
+
assert_equal('Gallifant Wadsworth', name.middle)
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_parse_first_last
|
63
|
+
name = CaRuby::Person::Name.parse('Henry Longfellow')
|
64
|
+
assert_equal('Henry', name.first)
|
65
|
+
assert_equal('Longfellow', name.last)
|
66
|
+
assert_nil(name.middle)
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_parse_first_middle_Last
|
70
|
+
name = CaRuby::Person::Name.parse('Henry Wadsworth Longfellow')
|
71
|
+
assert_equal('Henry', name.first)
|
72
|
+
assert_equal('Longfellow', name.last)
|
73
|
+
assert_equal('Wadsworth', name.middle)
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_salutation_with_middle
|
77
|
+
name = CaRuby::Person::Name.parse('Mr. Henry Wadsworth Longfellow')
|
78
|
+
assert_equal('Henry', name.first)
|
79
|
+
assert_equal('Longfellow', name.last)
|
80
|
+
assert_equal('Wadsworth', name.middle)
|
81
|
+
assert_equal('Mr.', name.salutation)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_salutation_without_middle
|
85
|
+
name = CaRuby::Person::Name.parse('Mr. Henry Longfellow')
|
86
|
+
assert_equal('Henry', name.first)
|
87
|
+
assert_equal('Longfellow', name.last)
|
88
|
+
assert_equal('Mr.', name.salutation)
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_qualifier
|
92
|
+
name = CaRuby::Person::Name.parse('Henry Wadsworth Longfellow III')
|
93
|
+
assert_equal('Henry', name.first)
|
94
|
+
assert_equal('Longfellow', name.last)
|
95
|
+
assert_equal('Wadsworth', name.middle)
|
96
|
+
assert_equal('III', name.qualifier)
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_credentials
|
100
|
+
name = CaRuby::Person::Name.parse('Henry Wadsworth Longfellow, MD, Ph.D., CPA, Esq')
|
101
|
+
assert_equal('Henry', name.first)
|
102
|
+
assert_equal('Longfellow', name.last)
|
103
|
+
assert_equal('Wadsworth', name.middle)
|
104
|
+
assert_equal('MD, Ph.D., CPA, Esq', name.credentials)
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_qualifier_and_credentials
|
108
|
+
name = CaRuby::Person::Name.parse('Henry Wadsworth Longfellow III, Ph.D.')
|
109
|
+
assert_equal('Henry', name.first)
|
110
|
+
assert_equal('Longfellow', name.last)
|
111
|
+
assert_equal('Wadsworth', name.middle)
|
112
|
+
assert_equal('III', name.qualifier)
|
113
|
+
assert_equal('Ph.D.', name.credentials)
|
114
|
+
end
|
115
|
+
end
|