gimei 0.1.0 → 0.5.1
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.
- checksums.yaml +5 -5
- data/.coveralls.yml +1 -0
- data/.travis.yml +10 -2
- data/CHANGELOG.md +25 -2
- data/README.md +190 -26
- data/_config.yml +1 -0
- data/gimei.gemspec +5 -3
- data/lib/data/addresses.yml +3080 -0
- data/lib/gimei.rb +39 -112
- data/lib/gimei/address.rb +99 -0
- data/lib/gimei/config.rb +9 -0
- data/lib/gimei/name.rb +116 -0
- data/lib/gimei/unique_generator.rb +47 -0
- data/lib/gimei/version.rb +1 -1
- data/spec/address_spec.rb +64 -0
- data/spec/gimei_spec.rb +181 -0
- data/spec/name_spec.rb +112 -42
- data/spec/spec_helper.rb +15 -3
- data/spec/unique_spec.rb +399 -0
- metadata +59 -18
data/lib/gimei/version.rb
CHANGED
@@ -0,0 +1,64 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require_relative 'spec_helper'
|
3
|
+
|
4
|
+
describe Gimei do
|
5
|
+
describe '#kanji and #to_s' do
|
6
|
+
it '全角文字が返ること' do
|
7
|
+
_(Gimei.address.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
8
|
+
_(Gimei.address.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
9
|
+
_(Gimei.address.prefecture.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
10
|
+
_(Gimei.address.prefecture.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
11
|
+
_(Gimei.address.city.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
12
|
+
_(Gimei.address.city.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
13
|
+
_(Gimei.address.town.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
14
|
+
_(Gimei.address.town.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
15
|
+
|
16
|
+
_(Gimei.prefecture.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
17
|
+
_(Gimei.prefecture.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
18
|
+
_(Gimei.city.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
19
|
+
_(Gimei.city.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
20
|
+
_(Gimei.town.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
21
|
+
_(Gimei.town.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#hiragana' do
|
26
|
+
it 'ひらがなが返ること' do
|
27
|
+
_(Gimei.address.hiragana).must_match(/\A[\p{hiragana}]+\z/)
|
28
|
+
_(Gimei.address.prefecture.hiragana).must_match(/\A[\p{hiragana}]+\z/)
|
29
|
+
_(Gimei.address.city.hiragana).must_match(/\A[\p{hiragana}]+\z/)
|
30
|
+
_(Gimei.address.town.hiragana).must_match(/\A[\p{hiragana}]+\z/)
|
31
|
+
|
32
|
+
_(Gimei.prefecture.hiragana).must_match(/\A[\p{hiragana}]+\z/)
|
33
|
+
_(Gimei.city.hiragana).must_match(/\A[\p{hiragana}]+\z/)
|
34
|
+
_(Gimei.town.hiragana).must_match(/\A[\p{hiragana}]+\z/)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#katakana' do
|
39
|
+
it 'カタカナが返ること' do
|
40
|
+
_(Gimei.address.katakana).must_match(/\A[\p{katakana}]+\z/)
|
41
|
+
_(Gimei.address.prefecture.katakana).must_match(/\A[\p{katakana}]+\z/)
|
42
|
+
_(Gimei.address.city.katakana).must_match(/\A[\p{katakana}]+\z/)
|
43
|
+
_(Gimei.address.town.katakana).must_match(/\A[\p{katakana}]+\z/)
|
44
|
+
|
45
|
+
_(Gimei.prefecture.katakana).must_match(/\A[\p{katakana}]+\z/)
|
46
|
+
_(Gimei.city.katakana).must_match(/\A[\p{katakana}]+\z/)
|
47
|
+
_(Gimei.town.katakana).must_match(/\A[\p{katakana}]+\z/)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#romaji' do
|
52
|
+
it 'ローマ字が返ること' do
|
53
|
+
_(Gimei.address.romaji).must_match(/\A[a-zA-Z\s]+\z/)
|
54
|
+
|
55
|
+
_(Gimei.address.prefecture.romaji).must_match(/\A[a-zA-Z]+\z/)
|
56
|
+
_(Gimei.address.city.romaji).must_match(/\A[a-zA-Z]+\z/)
|
57
|
+
_(Gimei.address.town.romaji).must_match(/\A[a-zA-Z]+\z/)
|
58
|
+
|
59
|
+
_(Gimei.prefecture.romaji).must_match(/\A[a-zA-Z]+\z/)
|
60
|
+
_(Gimei.city.romaji).must_match(/\A[a-zA-Z]+\z/)
|
61
|
+
_(Gimei.town.romaji).must_match(/\A[a-zA-Z]+\z/)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/spec/gimei_spec.rb
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require_relative 'spec_helper'
|
3
|
+
|
4
|
+
describe Gimei do
|
5
|
+
describe '.male' do
|
6
|
+
before { @name = Gimei.male }
|
7
|
+
|
8
|
+
it 'Gimei::Name オブジェクトが返ること' do
|
9
|
+
_(@name).must_be_instance_of Gimei::Name
|
10
|
+
end
|
11
|
+
|
12
|
+
it '#gender が :male を返すこと' do
|
13
|
+
_(@name.gender).must_equal :male
|
14
|
+
end
|
15
|
+
|
16
|
+
it '#male? が true を返すこと' do
|
17
|
+
_(@name.male?).must_equal true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '.female' do
|
22
|
+
before { @name = Gimei.female }
|
23
|
+
|
24
|
+
it 'Gimei::Name オブジェクトが返ること' do
|
25
|
+
_(@name).must_be_instance_of Gimei::Name
|
26
|
+
end
|
27
|
+
|
28
|
+
it '#gender が :female を返すこと' do
|
29
|
+
_(@name.gender).must_equal :female
|
30
|
+
end
|
31
|
+
|
32
|
+
it '#female? が true を返すこと' do
|
33
|
+
_(@name.female?).must_equal true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#gender' do
|
38
|
+
it ':male または :female が返ること' do
|
39
|
+
_(Gimei.new.gender).must_be_instance_of(Symbol)
|
40
|
+
_(Gimei.new.gender.to_s).must_match(/\A(?:male|female)\Z/)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#kanji' do
|
45
|
+
it '全角文字とスペースが返ること' do
|
46
|
+
_(Gimei.new.kanji).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#to_s' do
|
51
|
+
it '全角文字とスペースが返ること' do
|
52
|
+
_(Gimei.new.to_s).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '.kanji' do
|
57
|
+
it '全角文字とスペースが返ること' do
|
58
|
+
_(Gimei.kanji).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#hiragana' do
|
63
|
+
it 'ひらがなとスペースが返ること' do
|
64
|
+
_(Gimei.new.hiragana).must_match(/\A[\p{hiragana}\s]+\z/)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '.hiragana' do
|
69
|
+
it 'ひらがなとスペースが返ること' do
|
70
|
+
_(Gimei.hiragana).must_match(/\A[\p{hiragana}\s]+\z/)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe '#katakana' do
|
75
|
+
it 'カタカナとスペースが返ること' do
|
76
|
+
_(Gimei.new.katakana).must_match(/\A[\p{katakana}\s]+\z/)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe '.katakana' do
|
81
|
+
it 'カタカナとスペースが返ること' do
|
82
|
+
_(Gimei.katakana).must_match(/\A[\p{katakana}\s]+\z/)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe '.name' do
|
87
|
+
it 'Gimei::Name オブジェクトが返ること' do
|
88
|
+
_(Gimei.name).must_be_instance_of Gimei::Name
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe '#name' do
|
93
|
+
it 'Gimei::Name オブジェクトが返ること' do
|
94
|
+
_(Gimei.new.name).must_be_instance_of Gimei::Name
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe '.first' do
|
99
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
100
|
+
_(Gimei.first).must_be_instance_of Gimei::Name::First
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe '#first' do
|
105
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
106
|
+
_(Gimei.new.first).must_be_instance_of Gimei::Name::First
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe '.last' do
|
111
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
112
|
+
_(Gimei.last).must_be_instance_of Gimei::Name::Last
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe '#last' do
|
117
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
118
|
+
_(Gimei.new.last).must_be_instance_of Gimei::Name::Last
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
describe '.romaji' do
|
123
|
+
it 'ローマ字とスペースが返ること' do
|
124
|
+
_(Gimei.romaji).must_match(/\A[a-zA-Z\s]+\z/)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe '#romaji' do
|
129
|
+
it 'ローマ字とスペースが返ること' do
|
130
|
+
_(Gimei.new.romaji).must_match(/\A[a-zA-Z\s]+\z/)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe '.address' do
|
135
|
+
it 'Gimei::Address オブジェクトが返ること' do
|
136
|
+
_(Gimei.address).must_be_instance_of Gimei::Address
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
describe '#address' do
|
141
|
+
it 'Gimei::Address オブジェクトが返ること' do
|
142
|
+
_(Gimei.new.address).must_be_instance_of Gimei::Address
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
describe '.prefecture' do
|
147
|
+
it 'Gimei::Address::Prefecture オブジェクトが返ること' do
|
148
|
+
_(Gimei.prefecture).must_be_instance_of Gimei::Address::Prefecture
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
describe '#prefecture' do
|
153
|
+
it 'Gimei::Address::Prefecture オブジェクトが返ること' do
|
154
|
+
_(Gimei.new.prefecture).must_be_instance_of Gimei::Address::Prefecture
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe '.city' do
|
159
|
+
it 'Gimei::Address::City オブジェクトが返ること' do
|
160
|
+
_(Gimei.city).must_be_instance_of Gimei::Address::City
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
describe '#city' do
|
165
|
+
it 'Gimei::Address::City オブジェクトが返ること' do
|
166
|
+
_(Gimei.new.city).must_be_instance_of Gimei::Address::City
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
describe '.town' do
|
171
|
+
it 'Gimei::Address::Town オブジェクトが返ること' do
|
172
|
+
_(Gimei.town).must_be_instance_of Gimei::Address::Town
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
describe '#town' do
|
177
|
+
it 'Gimei::Address::Town オブジェクトが返ること' do
|
178
|
+
_(Gimei.new.town).must_be_instance_of Gimei::Address::Town
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
data/spec/name_spec.rb
CHANGED
@@ -1,123 +1,193 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require_relative 'spec_helper'
|
3
3
|
|
4
|
-
describe Gimei do
|
4
|
+
describe Gimei::Name do
|
5
5
|
describe '.male' do
|
6
|
-
before { @name = Gimei.male }
|
6
|
+
before { @name = Gimei::Name.male }
|
7
7
|
|
8
|
-
it '
|
9
|
-
@name.
|
8
|
+
it 'Gimei::Name オブジェクトが返ること' do
|
9
|
+
_(@name).must_be_instance_of Gimei::Name
|
10
|
+
end
|
11
|
+
|
12
|
+
it '#gender が :male を返すこと' do
|
13
|
+
_(@name.gender).must_equal :male
|
14
|
+
end
|
15
|
+
|
16
|
+
it '#male? が true を返すこと' do
|
17
|
+
_(@name.male?).must_equal true
|
10
18
|
end
|
11
19
|
end
|
12
20
|
|
13
21
|
describe '.female' do
|
14
|
-
before { @name = Gimei.female }
|
22
|
+
before { @name = Gimei::Name.female }
|
23
|
+
|
24
|
+
it 'Gimei::Name オブジェクトが返ること' do
|
25
|
+
_(@name).must_be_instance_of Gimei::Name
|
26
|
+
end
|
27
|
+
|
28
|
+
it '#gender が :female を返すこと' do
|
29
|
+
_(@name.gender).must_equal :female
|
30
|
+
end
|
15
31
|
|
16
|
-
it '
|
17
|
-
@name.female
|
32
|
+
it '#female? が true を返すこと' do
|
33
|
+
_(@name.female?).must_equal true
|
18
34
|
end
|
19
35
|
end
|
20
36
|
|
21
|
-
describe '
|
22
|
-
|
37
|
+
describe '.kanji' do
|
38
|
+
it '全角文字とスペースが返ること' do
|
39
|
+
_(Gimei::Name.kanji).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
40
|
+
end
|
41
|
+
end
|
23
42
|
|
43
|
+
describe '.hiragana' do
|
44
|
+
it 'ひらがなとスペースが返ること' do
|
45
|
+
_(Gimei::Name.hiragana).must_match(/\A[\p{hiragana}\s]+\z/)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '.katakana' do
|
50
|
+
it 'カタカナとスペースが返ること' do
|
51
|
+
_(Gimei::Name.katakana).must_match(/\A[\p{katakana}\s]+\z/)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '.romaji' do
|
56
|
+
it 'ローマ字とスペースが返ること' do
|
57
|
+
_(Gimei::Name.romaji).must_match(/\A[a-zA-Z\s]+\z/)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#gender' do
|
62
|
+
it ':male または :female が返ること' do
|
63
|
+
_(Gimei::Name.new.gender).must_be_instance_of(Symbol)
|
64
|
+
_(Gimei::Name.new.gender.to_s).must_match(/\A(?:male|female)\Z/)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '#kanji' do
|
24
69
|
it '全角文字とスペースが返ること' do
|
25
|
-
|
70
|
+
_(Gimei::Name.new.kanji).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
26
71
|
end
|
27
72
|
end
|
28
73
|
|
29
74
|
describe '#hiragana' do
|
30
|
-
before { @name = Gimei.new }
|
31
|
-
|
32
75
|
it 'ひらがなとスペースが返ること' do
|
33
|
-
|
76
|
+
_(Gimei::Name.new.hiragana).must_match(/\A[\p{hiragana}\s]+\z/)
|
34
77
|
end
|
35
78
|
end
|
36
79
|
|
37
80
|
describe '#katakana' do
|
38
|
-
before { @name = Gimei.new }
|
39
|
-
|
40
81
|
it 'カタカナとスペースが返ること' do
|
41
|
-
|
82
|
+
_(Gimei::Name.new.katakana).must_match(/\A[\p{katakana}\s]+\z/)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe '#first' do
|
87
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
88
|
+
_(Gimei::Name.new.first).must_be_instance_of Gimei::Name::First
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe '#last' do
|
93
|
+
it 'Gimei::Name::Last オブジェクトが返ること' do
|
94
|
+
_(Gimei::Name.new.last).must_be_instance_of Gimei::Name::Last
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe '.romaji' do
|
99
|
+
it 'ローマ字とスペースが返ること' do
|
100
|
+
_(Gimei::Name.new.romaji).must_match(/\A[a-zA-Z\s]+\z/)
|
42
101
|
end
|
43
102
|
end
|
44
103
|
end
|
45
104
|
|
46
|
-
describe Gimei::First do
|
105
|
+
describe Gimei::Name::First do
|
47
106
|
describe '.male' do
|
48
|
-
before { @name = Gimei::First.male }
|
107
|
+
before { @name = Gimei::Name::First.male }
|
108
|
+
|
109
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
110
|
+
_(@name).must_be_instance_of Gimei::Name::First
|
111
|
+
end
|
49
112
|
|
50
|
-
it '
|
51
|
-
@name.male
|
113
|
+
it '#male? が true を返すこと' do
|
114
|
+
_(@name.male?).must_equal true
|
52
115
|
end
|
53
116
|
end
|
54
117
|
|
55
118
|
describe '.female' do
|
56
|
-
before { @name = Gimei::First.female }
|
119
|
+
before { @name = Gimei::Name::First.female }
|
57
120
|
|
58
|
-
it '
|
59
|
-
@name.
|
121
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
122
|
+
_(@name).must_be_instance_of Gimei::Name::First
|
123
|
+
end
|
124
|
+
|
125
|
+
it '#female? が true を返すこと' do
|
126
|
+
_(@name.female?).must_equal true
|
60
127
|
end
|
61
128
|
end
|
62
129
|
|
63
130
|
describe '#kanji' do
|
64
|
-
before { @name = Gimei::First.new }
|
65
|
-
|
66
131
|
it '全角文字が返ること' do
|
67
|
-
|
132
|
+
_(Gimei::Name::First.new.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
68
133
|
end
|
69
134
|
end
|
70
135
|
|
71
136
|
describe '#hiragana' do
|
72
|
-
before { @name = Gimei::First.new }
|
73
|
-
|
74
137
|
it 'ひらがなが返ること' do
|
75
|
-
|
138
|
+
_(Gimei::Name::First.new.hiragana).must_match(/\A\p{hiragana}+\z/)
|
76
139
|
end
|
77
140
|
end
|
78
141
|
|
79
142
|
describe '#katakana' do
|
80
|
-
before { @name = Gimei::First.new }
|
81
|
-
|
82
143
|
it 'カタカナが返ること' do
|
83
|
-
|
144
|
+
_(Gimei::Name::First.new.katakana).must_match(/\A\p{katakana}+\z/)
|
84
145
|
end
|
85
146
|
end
|
86
147
|
|
87
148
|
describe '#to_s' do
|
88
|
-
before { @name = Gimei::First.new }
|
89
|
-
|
90
149
|
it '全角文字が返ること' do
|
91
|
-
|
150
|
+
_(Gimei::Name::First.new.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
describe '#romaji' do
|
155
|
+
it 'アルファベットで返ること' do
|
156
|
+
_(Gimei::Name::First.new.romaji).must_match(/\A[a-zA-Z]+\z/)
|
92
157
|
end
|
93
158
|
end
|
94
159
|
end
|
95
160
|
|
96
|
-
describe Gimei::Last do
|
97
|
-
before { @name = Gimei::Last.new }
|
161
|
+
describe Gimei::Name::Last do
|
162
|
+
before { @name = Gimei::Name::Last.new }
|
98
163
|
|
99
164
|
describe '#kanji' do
|
100
165
|
it '全角文字が返ること' do
|
101
|
-
@name.kanji.must_match
|
166
|
+
_(@name.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
102
167
|
end
|
103
168
|
end
|
104
169
|
|
105
170
|
describe '#hiragana' do
|
106
171
|
it 'ひらがなが返ること' do
|
107
|
-
@name.hiragana.must_match
|
172
|
+
_(@name.hiragana).must_match(/\A\p{hiragana}+\z/)
|
108
173
|
end
|
109
174
|
end
|
110
175
|
|
111
176
|
describe '#katakana' do
|
112
177
|
it 'カタカナが返ること' do
|
113
|
-
@name.katakana.must_match
|
178
|
+
_(@name.katakana).must_match(/\A\p{katakana}+\z/)
|
114
179
|
end
|
115
180
|
end
|
116
181
|
|
117
182
|
describe '#to_s' do
|
118
183
|
it '全角文字が返ること' do
|
119
|
-
@name.to_s.must_match
|
184
|
+
_(@name.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
120
185
|
end
|
121
186
|
end
|
122
|
-
end
|
123
187
|
|
188
|
+
describe '#romaji' do
|
189
|
+
it 'アルファベットで返ること' do
|
190
|
+
_(Gimei::Name::First.new.romaji).must_match(/\A[a-z|A-Z]+\z/)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|