ffaker 2.20.0 → 2.25.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.
- checksums.yaml +4 -4
- data/Changelog.md +163 -17
- data/Gemfile +15 -0
- data/README.md +19 -7
- data/REFERENCE.md +1479 -1395
- data/Rakefile +16 -47
- data/bin/console +9 -0
- data/ffaker.gemspec +9 -23
- data/lib/ffaker/address.rb +5 -5
- data/lib/ffaker/address_br.rb +14 -2
- data/lib/ffaker/address_fr.rb +3 -5
- data/lib/ffaker/address_it.rb +1 -5
- data/lib/ffaker/address_ua.rb +1 -1
- data/lib/ffaker/animal_br.rb +12 -0
- data/lib/ffaker/avatar.rb +11 -3
- data/lib/ffaker/bank.rb +13 -1
- data/lib/ffaker/bank_us.rb +37 -0
- data/lib/ffaker/book.rb +15 -7
- data/lib/ffaker/boolean.rb +4 -0
- data/lib/ffaker/cheesy_lingo.rb +2 -2
- data/lib/ffaker/code.rb +1 -1
- data/lib/ffaker/company.rb +5 -8
- data/lib/ffaker/company_fr.rb +2 -2
- data/lib/ffaker/crypto.rb +14 -0
- data/lib/ffaker/data/address_br/complement +3 -0
- data/lib/ffaker/data/address_br/neighborhood_prefixes +3 -0
- data/lib/ffaker/data/address_de/state +1 -0
- data/lib/ffaker/data/animal_br/common_names +423 -0
- data/lib/ffaker/data/jo_jo/first_names +356 -0
- data/lib/ffaker/data/jo_jo/full_names +225 -0
- data/lib/ffaker/data/jo_jo/last_names +153 -0
- data/lib/ffaker/data/jo_jo/stands +149 -0
- data/lib/ffaker/data/job_tw/job_nouns +201 -0
- data/lib/ffaker/data/lorem_tw/words +789 -0
- data/lib/ffaker/date.rb +40 -0
- data/lib/ffaker/filesystem.rb +12 -2
- data/lib/ffaker/geolocation.rb +2 -2
- data/lib/ffaker/guid.rb +7 -1
- data/lib/ffaker/html_ipsum.rb +7 -1
- data/lib/ffaker/identification_br.rb +3 -12
- data/lib/ffaker/identification_ec.rb +39 -0
- data/lib/ffaker/identification_es_cl.rb +2 -2
- data/lib/ffaker/identification_es_co.rb +1 -1
- data/lib/ffaker/identification_fi.rb +73 -0
- data/lib/ffaker/identification_kr.rb +11 -4
- data/lib/ffaker/identification_mx.rb +1 -1
- data/lib/ffaker/identification_pl.rb +6 -6
- data/lib/ffaker/identification_tw.rb +4 -3
- data/lib/ffaker/image.rb +28 -4
- data/lib/ffaker/jo_jo.rb +24 -0
- data/lib/ffaker/job_tw.rb +12 -0
- data/lib/ffaker/lorem_ja.rb +1 -1
- data/lib/ffaker/lorem_ru.rb +1 -1
- data/lib/ffaker/lorem_tw.rb +40 -0
- data/lib/ffaker/movie.rb +1 -1
- data/lib/ffaker/name_fr.rb +4 -3
- data/lib/ffaker/name_pl.rb +3 -3
- data/lib/ffaker/number.rb +6 -2
- data/lib/ffaker/phone_number_de.rb +3 -3
- data/lib/ffaker/skill.rb +1 -1
- data/lib/ffaker/ssn.rb +4 -2
- data/lib/ffaker/ssn_se.rb +2 -2
- data/lib/ffaker/string.rb +7 -7
- data/lib/ffaker/time.rb +4 -4
- data/lib/ffaker/tweet.rb +1 -1
- data/lib/ffaker/utils/module_utils.rb +10 -20
- data/lib/ffaker/utils/unique_utils.rb +34 -21
- data/lib/ffaker/uuid.rb +175 -0
- data/lib/ffaker/vehicle.rb +63 -1
- data/lib/{version.rb → ffaker/version.rb} +1 -1
- data/lib/ffaker.rb +64 -190
- data/scripts/reference.rb +21 -21
- data/test/helper.rb +7 -9
- data/test/test_address_br.rb +15 -2
- data/test/test_address_da.rb +3 -3
- data/test/test_address_fi.rb +2 -2
- data/test/test_address_se.rb +2 -2
- data/test/test_address_ua.rb +1 -1
- data/test/test_animal_br.rb +17 -0
- data/test/test_array_utils.rb +1 -1
- data/test/test_avatar.rb +30 -7
- data/test/test_bank.rb +15 -1
- data/test/test_bank_us.rb +37 -0
- data/test/test_book.rb +29 -0
- data/test/test_boolean.rb +32 -1
- data/test/test_cheesy_lingo.rb +1 -1
- data/test/test_color.rb +3 -3
- data/test/test_crypto.rb +15 -0
- data/test/test_date.rb +47 -0
- data/test/test_filesystem.rb +30 -4
- data/test/test_freedom_ipsum.rb +1 -1
- data/test/test_gender_it.rb +1 -1
- data/test/test_gender_ja.rb +1 -1
- data/test/test_gender_jp.rb +1 -1
- data/test/test_gender_pl.rb +1 -1
- data/test/test_guid.rb +1 -1
- data/test/test_healthcare_ru.rb +1 -1
- data/test/test_hipster_ipsum.rb +1 -1
- data/test/test_html_ipsum.rb +6 -0
- data/test/test_identification.rb +12 -2
- data/test/test_identification_ec.rb +33 -0
- data/test/test_identification_es_mx.rb +3 -1
- data/test/test_identification_fi.rb +39 -0
- data/test/test_identification_it.rb +12 -1
- data/test/test_identification_kr.rb +3 -3
- data/test/test_image.rb +51 -5
- data/test/test_internet.rb +3 -1
- data/test/test_internet_se.rb +5 -2
- data/test/test_jo_jo.rb +29 -0
- data/test/test_job_tw.rb +21 -0
- data/test/test_lorem_br.rb +3 -3
- data/test/test_lorem_cn.rb +3 -3
- data/test/test_lorem_fr.rb +3 -3
- data/test/test_lorem_ie.rb +2 -2
- data/test/test_lorem_kr.rb +3 -3
- data/test/test_lorem_pl.rb +2 -2
- data/test/test_lorem_ru.rb +3 -3
- data/test/test_lorem_tw.rb +54 -0
- data/test/test_lorem_ua.rb +3 -3
- data/test/test_module_utils.rb +42 -0
- data/test/test_music.rb +4 -4
- data/test/test_name_da.rb +1 -1
- data/test/test_name_ph.rb +1 -1
- data/test/test_name_ru.rb +2 -2
- data/test/test_name_ua.rb +2 -2
- data/test/test_number.rb +14 -2
- data/test/test_phone_number_nl.rb +1 -1
- data/test/test_phone_number_se.rb +1 -1
- data/test/test_phone_number_sg.rb +8 -8
- data/test/test_ssn_se.rb +1 -1
- data/test/test_unique_utils.rb +29 -5
- data/test/test_units.rb +6 -6
- data/test/test_units_english.rb +15 -15
- data/test/test_units_metric.rb +15 -15
- data/test/test_uuid.rb +73 -0
- data/test/test_vehicle.rb +27 -1
- metadata +41 -245
data/test/test_lorem_fr.rb
CHANGED
@@ -10,9 +10,9 @@ class TestLoremFR < Test::Unit::TestCase
|
|
10
10
|
:paragraph, :paragraphs, :sentence, :sentences, :phrase, :phrases, :word, :words
|
11
11
|
)
|
12
12
|
|
13
|
-
REGEX = /\A[ -.ÀÂÉÈÊÎÔÚÛàâéèêîôùûa-z]+\z/i
|
14
|
-
REGEX_WORD = /\A[-ÀÂÉÈÊÎÔÚÛàâéèêîôùûa-z]+\z/i
|
15
|
-
REGEX_WORDS = /\A[ -ÀÂÉÈÊÎÔÚÛàâéèêîôùûa-z]+\z/i
|
13
|
+
REGEX = /\A[ -.ÀÂÉÈÊÎÔÚÛàâéèêîôùûa-z]+\z/i
|
14
|
+
REGEX_WORD = /\A[-ÀÂÉÈÊÎÔÚÛàâéèêîôùûa-z]+\z/i
|
15
|
+
REGEX_WORDS = /\A[ -ÀÂÉÈÊÎÔÚÛàâéèêîôùûa-z]+\z/i
|
16
16
|
|
17
17
|
def test_paragraph
|
18
18
|
assert_match(REGEX, FFaker::LoremFR.paragraph)
|
data/test/test_lorem_ie.rb
CHANGED
@@ -11,8 +11,8 @@ class TestLoremIE < Test::Unit::TestCase
|
|
11
11
|
:phrase, :phrases, :word, :words, :question
|
12
12
|
)
|
13
13
|
|
14
|
-
WORDS_REGEX = /\A[\w\W]+\z/i
|
15
|
-
WORD_REGEX = /\A[áéíóúa-z]+\z/i
|
14
|
+
WORDS_REGEX = /\A[\w\W]+\z/i # spaces, alphanumeric & perioids, etc.
|
15
|
+
WORD_REGEX = /\A[áéíóúa-z]+\z/i
|
16
16
|
|
17
17
|
def test_paragraph
|
18
18
|
assert_match(WORDS_REGEX, FFaker::LoremIE.paragraph)
|
data/test/test_lorem_kr.rb
CHANGED
@@ -5,9 +5,9 @@ require_relative 'helper'
|
|
5
5
|
class TestLoremKR < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
KOREAN_SENTENCE_MATCHER = /\A[ .가-힣]+\z
|
9
|
-
KOREAN_WORDS_MATCHER = /\A[ 가-힣]+\z
|
10
|
-
KOREAN_WORD_MATCHER = /\A[가-힣]+\z
|
8
|
+
KOREAN_SENTENCE_MATCHER = /\A[ .가-힣]+\z/
|
9
|
+
KOREAN_WORDS_MATCHER = /\A[ 가-힣]+\z/
|
10
|
+
KOREAN_WORD_MATCHER = /\A[가-힣]+\z/
|
11
11
|
|
12
12
|
assert_methods_are_deterministic(
|
13
13
|
FFaker::LoremKR,
|
data/test/test_lorem_pl.rb
CHANGED
@@ -5,8 +5,8 @@ require_relative 'helper'
|
|
5
5
|
class TestFakerLoremPL < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
POLISH_WORD_MATCHER = /\A[A-Ża-ż\s]+\z
|
9
|
-
POLISH_SENTENCE_MATCHER = /\A[A-Ża-ż\s.!?,]+\z
|
8
|
+
POLISH_WORD_MATCHER = /\A[A-Ża-ż\s]+\z/
|
9
|
+
POLISH_SENTENCE_MATCHER = /\A[A-Ża-ż\s.!?,]+\z/
|
10
10
|
|
11
11
|
assert_methods_are_deterministic(
|
12
12
|
FFaker::LoremPL,
|
data/test/test_lorem_ru.rb
CHANGED
@@ -5,9 +5,9 @@ require_relative 'helper'
|
|
5
5
|
class TestLoremRU < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
SENTENCE_MATCHER = /\A[а-яА-ЯёЁ\-\s.!?,]+\z
|
9
|
-
WORDS_MATCHER = /\A[А-Яа-яёЁ\-\s]+\z
|
10
|
-
WORD_MATCHER = /\A[
|
8
|
+
SENTENCE_MATCHER = /\A[а-яА-ЯёЁ\-\s.!?,]+\z/
|
9
|
+
WORDS_MATCHER = /\A[А-Яа-яёЁ\-\s]+\z/
|
10
|
+
WORD_MATCHER = /\A[А-Яа-яёЁ-]+\z/
|
11
11
|
|
12
12
|
assert_methods_are_deterministic(
|
13
13
|
FFaker::LoremRU,
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
class TestLoremTW < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(
|
9
|
+
FFaker::LoremTW,
|
10
|
+
:paragraph, :paragraphs, :sentence, :sentences, :word, :words
|
11
|
+
)
|
12
|
+
|
13
|
+
def test_paragraph
|
14
|
+
assert_greater_than_or_equal_to FFaker::LoremTW.paragraph.length, 3 * 4 * 2
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_sentence
|
18
|
+
assert_greater_than_or_equal_to FFaker::LoremTW.sentence.length, 4 * 2
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_paragraphs
|
22
|
+
assert_greater_than_or_equal_to FFaker::LoremTW.paragraphs.length, 2
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_paragraphs_is_not_a_string_representation_of_an_array
|
26
|
+
assert !/[\[\]]+/.match([FFaker::LoremTW.paragraphs].flatten.join(' '))
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_paragraphs_is_an_array
|
30
|
+
assert FFaker::LoremTW.paragraphs.instance_of?(Array)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_sentences
|
34
|
+
assert_greater_than_or_equal_to FFaker::LoremTW.sentences.length, 2
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_sentences_is_an_array
|
38
|
+
assert FFaker::LoremTW.sentences.instance_of?(Array)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_sentences_via_to_s_produces_string_terminated_with_period
|
42
|
+
string = FFaker::LoremTW.sentences.to_s
|
43
|
+
assert string.instance_of?(String)
|
44
|
+
assert string =~ /。$/
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_words
|
48
|
+
assert_greater_than_or_equal_to FFaker::LoremTW.words.length, 2
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_word
|
52
|
+
assert_greater_than_or_equal_to FFaker::LoremTW.word.length, 1
|
53
|
+
end
|
54
|
+
end
|
data/test/test_lorem_ua.rb
CHANGED
@@ -5,9 +5,9 @@ require_relative 'helper'
|
|
5
5
|
class TestLoremUA < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
SENTENCE_MATCHER = /\A[а-яА-ЯіїєґІЇЄҐ’\-\s.!?,]+\z
|
9
|
-
WORDS_MATCHER = /\A[а-яА-ЯіїєґІЇЄҐ’\-\s]+\z
|
10
|
-
WORD_MATCHER = /\A[
|
8
|
+
SENTENCE_MATCHER = /\A[а-яА-ЯіїєґІЇЄҐ’\-\s.!?,]+\z/
|
9
|
+
WORDS_MATCHER = /\A[а-яА-ЯіїєґІЇЄҐ’\-\s]+\z/
|
10
|
+
WORD_MATCHER = /\A[а-яА-ЯіїєґІЇЄҐ’-]+\z/
|
11
11
|
|
12
12
|
assert_methods_are_deterministic(
|
13
13
|
FFaker::LoremUA,
|
data/test/test_module_utils.rb
CHANGED
@@ -11,4 +11,46 @@ class TestModuleUtils < Test::Unit::TestCase
|
|
11
11
|
assert result.frozen?
|
12
12
|
result.each { |e| assert e.frozen? }
|
13
13
|
end
|
14
|
+
|
15
|
+
def test_unique
|
16
|
+
generator = Object.new
|
17
|
+
generator.extend FFaker::ModuleUtils
|
18
|
+
# returns [1 1 2 2 1 1 2 2 ..][call_index]
|
19
|
+
def generator.test
|
20
|
+
index = Thread.current[:test_unique] ||= 0
|
21
|
+
Thread.current[:test_unique] = (index > 2 ? 0 : index + 1)
|
22
|
+
(index / 2) + 1
|
23
|
+
end
|
24
|
+
|
25
|
+
assert_equal(1, generator.unique.test)
|
26
|
+
assert_equal(2, generator.unique.test)
|
27
|
+
|
28
|
+
Thread.new do
|
29
|
+
assert_equal(1, generator.unique.test)
|
30
|
+
assert_equal(2, generator.unique.test)
|
31
|
+
|
32
|
+
assert_raises FFaker::UniqueUtils::RetryLimitExceeded do
|
33
|
+
generator.unique.test
|
34
|
+
end
|
35
|
+
|
36
|
+
generator.unique.clear
|
37
|
+
generator.unique.test
|
38
|
+
end.join
|
39
|
+
|
40
|
+
assert_raises FFaker::UniqueUtils::RetryLimitExceeded do
|
41
|
+
generator.unique.test
|
42
|
+
end
|
43
|
+
|
44
|
+
FFaker::UniqueUtils.clear
|
45
|
+
generator.unique.test
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_luhn_check
|
49
|
+
obj = Object.new
|
50
|
+
obj.extend FFaker::ModuleUtils
|
51
|
+
assert obj.luhn_check('97248708') == '6'
|
52
|
+
assert obj.luhn_check('1789372997') == '4'
|
53
|
+
assert obj.luhn_check('8899982700037') == '1'
|
54
|
+
assert obj.luhn_check('1234567820001') == '0'
|
55
|
+
end
|
14
56
|
end
|
data/test/test_music.rb
CHANGED
@@ -11,18 +11,18 @@ class TestMusic < Test::Unit::TestCase
|
|
11
11
|
)
|
12
12
|
|
13
13
|
def test_genre
|
14
|
-
assert_match(%r{[A-z]|\W|&/+}, FFaker::Music.genre)
|
14
|
+
assert_match(%r{[A-Za-z]|\W|&/+}, FFaker::Music.genre)
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_album
|
18
|
-
assert_match(/\s|[A-z]|\W|\d|'|\?+/, FFaker::Music.album)
|
18
|
+
assert_match(/\s|[A-Za-z]|\W|\d|'|\?+/, FFaker::Music.album)
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_artist
|
22
|
-
assert_match(/\s|[A-z]|\W|\d|'|\?|&|\+|\.|-+/, FFaker::Music.artist)
|
22
|
+
assert_match(/\s|[A-Za-z]|\W|\d|'|\?|&|\+|\.|-+/, FFaker::Music.artist)
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_song
|
26
|
-
assert_match(/\s|[A-z]|\W|\d|'|\?|&|\+|\.|-+/, FFaker::Music.song)
|
26
|
+
assert_match(/\s|[A-Za-z]|\W|\d|'|\?|&|\+|\.|-+/, FFaker::Music.song)
|
27
27
|
end
|
28
28
|
end
|
data/test/test_name_da.rb
CHANGED
data/test/test_name_ph.rb
CHANGED
data/test/test_name_ru.rb
CHANGED
@@ -5,8 +5,8 @@ require_relative 'helper'
|
|
5
5
|
class TestNameRU < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
RU_REGEX = /\A[а-яА-Я]{2,}\z
|
9
|
-
RU_REGEX_MULTIPLE_WORDS = /\A[а-яА-Я\s]+\z
|
8
|
+
RU_REGEX = /\A[а-яА-Я]{2,}\z/
|
9
|
+
RU_REGEX_MULTIPLE_WORDS = /\A[а-яА-Я\s]+\z/
|
10
10
|
|
11
11
|
assert_methods_are_deterministic(
|
12
12
|
FFaker::NameRU,
|
data/test/test_name_ua.rb
CHANGED
@@ -15,8 +15,8 @@ class TestNameUA < Test::Unit::TestCase
|
|
15
15
|
def setup
|
16
16
|
@tester = FFaker::NameUA
|
17
17
|
|
18
|
-
@single_word_name_regexp = /\A[
|
19
|
-
@multiple_words_name_regexp = /\A[а-яА-ЯіїєґІЇЄҐ’\-\s]+\z
|
18
|
+
@single_word_name_regexp = /\A[а-яА-ЯіїєґІЇЄҐ’-]+\z/
|
19
|
+
@multiple_words_name_regexp = /\A[а-яА-ЯіїєґІЇЄҐ’\-\s]+\z/
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_first_name_male
|
data/test/test_number.rb
CHANGED
@@ -5,7 +5,7 @@ require_relative 'helper'
|
|
5
5
|
class TestNumber < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
assert_methods_are_deterministic(FFaker::Number, :number, :decimal)
|
8
|
+
assert_methods_are_deterministic(FFaker::Number, :number, :decimal, :between)
|
9
9
|
|
10
10
|
def setup
|
11
11
|
@tester = FFaker::Number
|
@@ -13,7 +13,7 @@ class TestNumber < Test::Unit::TestCase
|
|
13
13
|
|
14
14
|
def test_number
|
15
15
|
assert @tester.number.is_a?(Integer)
|
16
|
-
assert @tester.number.digits.
|
16
|
+
assert @tester.number.digits.one?
|
17
17
|
assert @tester.number(digits: 3).digits.count == 3
|
18
18
|
assert_match(/\d/, @tester.number.to_s)
|
19
19
|
assert_match(/\d{3}/, @tester.number(digits: 3).to_s)
|
@@ -42,4 +42,16 @@ class TestNumber < Test::Unit::TestCase
|
|
42
42
|
@tester.decimal(fractional_digits: 0)
|
43
43
|
end
|
44
44
|
end
|
45
|
+
|
46
|
+
def test_between
|
47
|
+
from = -50
|
48
|
+
to = 50
|
49
|
+
assert_random_between(from..to) { @tester.between(from: from, to: to) }
|
50
|
+
assert_instance_of Integer, @tester.between(from: from, to: to)
|
51
|
+
|
52
|
+
from = -50.0
|
53
|
+
to = 50.0
|
54
|
+
assert_random_between(from..to) { @tester.between(from: from, to: to) }
|
55
|
+
assert_instance_of Float, @tester.between(from: from, to: to)
|
56
|
+
end
|
45
57
|
end
|
@@ -16,7 +16,7 @@ class TestPhoneNumberSE < Test::Unit::TestCase
|
|
16
16
|
@tester = FFaker::PhoneNumberSE
|
17
17
|
end
|
18
18
|
|
19
|
-
ALLOWED_CHARS = /[()\d +-]
|
19
|
+
ALLOWED_CHARS = /[()\d +-]/
|
20
20
|
|
21
21
|
def test_mobile_phone_prefix
|
22
22
|
assert FFaker::PhoneNumberSE::MOBILE_PHONE_PREFIX.include?(@tester.mobile_prefix)
|
@@ -17,36 +17,36 @@ class TestPhoneNumberSG < Test::Unit::TestCase
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_voip_number
|
20
|
-
assert_match(
|
20
|
+
assert_match(/\A3\d{3}\s\d{4}\z/, @tester.voip_number)
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_fixed_line_number
|
24
|
-
assert_match(
|
24
|
+
assert_match(/\A6\d{3}\s\d{4}\z/, @tester.fixed_line_number)
|
25
25
|
end
|
26
26
|
|
27
27
|
def test_mobile_number
|
28
|
-
assert_match(
|
28
|
+
assert_match(/\A8\d{3}\s\d{4}\z/, @tester.mobile_number)
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_mobile_or_pager_number
|
32
|
-
assert_match(
|
32
|
+
assert_match(/\A9\d{3}\s\d{4}\z/, @tester.mobile_or_pager_number)
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_international_toll_free_number
|
36
|
-
assert_match(
|
36
|
+
assert_match(/\A800\s\d{3}\s\d{4}\z/, @tester.international_toll_free_number)
|
37
37
|
end
|
38
38
|
|
39
39
|
def test_toll_free_number
|
40
|
-
assert_match(
|
40
|
+
assert_match(/\A1800\s\d{3}\s\d{4}\z/, @tester.toll_free_number)
|
41
41
|
end
|
42
42
|
|
43
43
|
def test_premium_service_number
|
44
|
-
assert_match(
|
44
|
+
assert_match(/\A1900\s\d{3}\s\d{4}\z/, @tester.premium_service_number)
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_phone_number
|
48
48
|
10.times do
|
49
|
-
assert_match(
|
49
|
+
assert_match(/\A[689]\d{3}\s\d{4}\z/, @tester.phone_number)
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
data/test/test_ssn_se.rb
CHANGED
data/test/test_unique_utils.rb
CHANGED
@@ -39,16 +39,40 @@ class TestUniqueUtils < Test::Unit::TestCase
|
|
39
39
|
unique_object.test
|
40
40
|
end
|
41
41
|
|
42
|
-
|
42
|
+
unique_object.clear
|
43
43
|
|
44
44
|
assert_equal(1, unique_object.test)
|
45
|
+
end
|
45
46
|
|
46
|
-
|
47
|
-
|
47
|
+
def test_clears_all_unique_values
|
48
|
+
stubbed_generator = Object.new
|
49
|
+
def stubbed_generator.test
|
50
|
+
1
|
51
|
+
end
|
52
|
+
other_stubbed_generator = Object.new
|
53
|
+
def other_stubbed_generator.test
|
54
|
+
1
|
48
55
|
end
|
49
56
|
|
50
|
-
unique_object.
|
57
|
+
unique_object = FFaker::UniqueUtils.add_instance(stubbed_generator, 3)
|
58
|
+
other_unique_object = FFaker::UniqueUtils.add_instance(other_stubbed_generator, 3)
|
51
59
|
|
52
|
-
|
60
|
+
[unique_object, other_unique_object].each do |tested_unique_object|
|
61
|
+
assert_equal(1, tested_unique_object.test)
|
62
|
+
|
63
|
+
assert_raises FFaker::UniqueUtils::RetryLimitExceeded do
|
64
|
+
tested_unique_object.test
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
FFaker::UniqueUtils.clear
|
69
|
+
|
70
|
+
[unique_object, other_unique_object].each do |tested_unique_object|
|
71
|
+
assert_equal(1, tested_unique_object.test)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_generates_unique_numbers
|
76
|
+
assert_nothing_raised { FFaker::Number.unique.number(digits: 1) }
|
53
77
|
end
|
54
78
|
end
|
data/test/test_units.rb
CHANGED
@@ -13,25 +13,25 @@ class TestUnits < Test::Unit::TestCase
|
|
13
13
|
|
14
14
|
def setup
|
15
15
|
@tester = FFaker::Unit
|
16
|
-
@time_units = @tester::TIME_UNITS
|
17
|
-
@temperature_units = @tester::TEMPERATURE_UNITS
|
16
|
+
@time_units = @tester::TIME_UNITS
|
17
|
+
@temperature_units = @tester::TEMPERATURE_UNITS
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_time_name
|
21
|
-
assert_include @time_units.map
|
21
|
+
assert_include @time_units.map { |unit| unit[:name] }, @tester.time_name
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_time_abbr
|
25
|
-
assert_include @time_units.map
|
25
|
+
assert_include @time_units.map { |unit| unit[:abbreviation] }, @tester.time_abbr
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_temperature_name
|
29
|
-
assert_include @temperature_units.map
|
29
|
+
assert_include @temperature_units.map { |unit| unit[:name] }, @tester.temperature_name
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_temperature_abbr
|
33
33
|
assert_include \
|
34
|
-
@temperature_units.map
|
34
|
+
@temperature_units.map { |unit| unit[:abbreviation] },
|
35
35
|
@tester.temperature_abbr
|
36
36
|
end
|
37
37
|
end
|
data/test/test_units_english.rb
CHANGED
@@ -14,50 +14,50 @@ class TestUnitsEnglish < Test::Unit::TestCase
|
|
14
14
|
|
15
15
|
def setup
|
16
16
|
@tester = FFaker::UnitEnglish
|
17
|
-
@length_units = @tester::LENGTH_UNITS
|
18
|
-
@mass_units = @tester::MASS_UNITS
|
19
|
-
@liquid_units = @tester::LIQUID_UNITS
|
20
|
-
@volume_units = @tester::VOLUME_UNITS
|
21
|
-
@area_units = @tester::AREA_UNITS
|
17
|
+
@length_units = @tester::LENGTH_UNITS
|
18
|
+
@mass_units = @tester::MASS_UNITS
|
19
|
+
@liquid_units = @tester::LIQUID_UNITS
|
20
|
+
@volume_units = @tester::VOLUME_UNITS
|
21
|
+
@area_units = @tester::AREA_UNITS
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_length_name
|
25
|
-
assert_include @length_units.map
|
25
|
+
assert_include @length_units.map { |unit| unit[:name] }, @tester.length_name
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_length_abbrev
|
29
|
-
assert_include @length_units.map
|
29
|
+
assert_include @length_units.map { |unit| unit[:abbreviation] }, @tester.length_abbr
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_mass_name
|
33
|
-
assert_include @mass_units.map
|
33
|
+
assert_include @mass_units.map { |unit| unit[:name] }, @tester.mass_name
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_mass_abbr
|
37
|
-
assert_include @mass_units.map
|
37
|
+
assert_include @mass_units.map { |unit| unit[:abbreviation] }, @tester.mass_abbr
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_liquid_name
|
41
|
-
assert_include @liquid_units.map
|
41
|
+
assert_include @liquid_units.map { |unit| unit[:name] }, @tester.liquid_name
|
42
42
|
end
|
43
43
|
|
44
44
|
def test_liquid_abbr
|
45
|
-
assert_include @liquid_units.map
|
45
|
+
assert_include @liquid_units.map { |unit| unit[:abbreviation] }, @tester.liquid_abbr
|
46
46
|
end
|
47
47
|
|
48
48
|
def test_volume_name
|
49
|
-
assert_include @volume_units.map
|
49
|
+
assert_include @volume_units.map { |unit| unit[:name] }, @tester.volume_name
|
50
50
|
end
|
51
51
|
|
52
52
|
def test_volume_abbr
|
53
|
-
assert_include @volume_units.map
|
53
|
+
assert_include @volume_units.map { |unit| unit[:abbreviation] }, @tester.volume_abbr
|
54
54
|
end
|
55
55
|
|
56
56
|
def test_area_name
|
57
|
-
assert_include @area_units.map
|
57
|
+
assert_include @area_units.map { |unit| unit[:name] }, @tester.area_name
|
58
58
|
end
|
59
59
|
|
60
60
|
def test_area_abbr
|
61
|
-
assert_include @area_units.map
|
61
|
+
assert_include @area_units.map { |unit| unit[:abbreviation] }, @tester.area_abbr
|
62
62
|
end
|
63
63
|
end
|
data/test/test_units_metric.rb
CHANGED
@@ -14,50 +14,50 @@ class TestUnitsMetric < Test::Unit::TestCase
|
|
14
14
|
|
15
15
|
def setup
|
16
16
|
@tester = FFaker::UnitMetric
|
17
|
-
@length_units = @tester::LENGTH_UNITS
|
18
|
-
@mass_units = @tester::MASS_UNITS
|
19
|
-
@liquid_units = @tester::LIQUID_UNITS
|
20
|
-
@volume_units = @tester::VOLUME_UNITS
|
21
|
-
@area_units = @tester::AREA_UNITS
|
17
|
+
@length_units = @tester::LENGTH_UNITS
|
18
|
+
@mass_units = @tester::MASS_UNITS
|
19
|
+
@liquid_units = @tester::LIQUID_UNITS
|
20
|
+
@volume_units = @tester::VOLUME_UNITS
|
21
|
+
@area_units = @tester::AREA_UNITS
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_length_name
|
25
|
-
assert_include @length_units.map
|
25
|
+
assert_include @length_units.map { |unit| unit[:name] }, @tester.length_name
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_length_abbrev
|
29
|
-
assert_include @length_units.map
|
29
|
+
assert_include @length_units.map { |unit| unit[:abbreviation] }, @tester.length_abbr
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_mass_name
|
33
|
-
assert_include @mass_units.map
|
33
|
+
assert_include @mass_units.map { |unit| unit[:name] }, @tester.mass_name
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_mass_abbr
|
37
|
-
assert_include @mass_units.map
|
37
|
+
assert_include @mass_units.map { |unit| unit[:abbreviation] }, @tester.mass_abbr
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_liquid_name
|
41
|
-
assert_include @liquid_units.map
|
41
|
+
assert_include @liquid_units.map { |unit| unit[:name] }, @tester.liquid_name
|
42
42
|
end
|
43
43
|
|
44
44
|
def test_liquid_abbr
|
45
|
-
assert_include @liquid_units.map
|
45
|
+
assert_include @liquid_units.map { |unit| unit[:abbreviation] }, @tester.liquid_abbr
|
46
46
|
end
|
47
47
|
|
48
48
|
def test_volume_name
|
49
|
-
assert_include @volume_units.map
|
49
|
+
assert_include @volume_units.map { |unit| unit[:name] }, @tester.volume_name
|
50
50
|
end
|
51
51
|
|
52
52
|
def test_volume_abbr
|
53
|
-
assert_include @volume_units.map
|
53
|
+
assert_include @volume_units.map { |unit| unit[:abbreviation] }, @tester.volume_abbr
|
54
54
|
end
|
55
55
|
|
56
56
|
def test_area_name
|
57
|
-
assert_include @area_units.map
|
57
|
+
assert_include @area_units.map { |unit| unit[:name] }, @tester.area_name
|
58
58
|
end
|
59
59
|
|
60
60
|
def test_area_abbr
|
61
|
-
assert_include @area_units.map
|
61
|
+
assert_include @area_units.map { |unit| unit[:abbreviation] }, @tester.area_abbr
|
62
62
|
end
|
63
63
|
end
|
data/test/test_uuid.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
class TestUUID < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(
|
9
|
+
FFaker::UUID,
|
10
|
+
:uuidv4, :uuidv6, :uuidv7, :uuidv8
|
11
|
+
)
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@tester = FFaker::UUID
|
15
|
+
end
|
16
|
+
|
17
|
+
# @see https://stackoverflow.com/a/38191104
|
18
|
+
def test_uuidv4
|
19
|
+
raw_uuid = @tester.uuidv4
|
20
|
+
assert_format(raw_uuid)
|
21
|
+
|
22
|
+
uuid = uuid_to_integer(raw_uuid)
|
23
|
+
assert_version(uuid, 0b0100)
|
24
|
+
assert_variant(uuid, 0b10)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_uuidv6
|
28
|
+
raw_uuid = @tester.uuidv6
|
29
|
+
assert_format(raw_uuid)
|
30
|
+
|
31
|
+
uuid = uuid_to_integer(raw_uuid)
|
32
|
+
assert_version(uuid, 0b0110)
|
33
|
+
assert_variant(uuid, 0b10)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_uuidv7
|
37
|
+
raw_uuid = @tester.uuidv7
|
38
|
+
assert_format(raw_uuid)
|
39
|
+
|
40
|
+
uuid = uuid_to_integer(raw_uuid)
|
41
|
+
assert_version(uuid, 0b0111)
|
42
|
+
assert_variant(uuid, 0b10)
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_uuidv8
|
46
|
+
raw_uuid = @tester.uuidv8
|
47
|
+
assert_format(raw_uuid)
|
48
|
+
|
49
|
+
uuid = uuid_to_integer(raw_uuid)
|
50
|
+
assert_version(uuid, 0b1000)
|
51
|
+
assert_variant(uuid, 0b10)
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
# Matches structure of all UUID versions.
|
57
|
+
def assert_format(uuid)
|
58
|
+
assert_match(/\A[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\z/,
|
59
|
+
uuid)
|
60
|
+
end
|
61
|
+
|
62
|
+
def assert_version(uuid, version)
|
63
|
+
assert_equal(version, (uuid >> 76) & 0b1111)
|
64
|
+
end
|
65
|
+
|
66
|
+
def assert_variant(uuid, variant)
|
67
|
+
assert_equal(variant, (uuid >> 62) & 0b11)
|
68
|
+
end
|
69
|
+
|
70
|
+
def uuid_to_integer(uuid)
|
71
|
+
uuid.delete('-').to_i(16)
|
72
|
+
end
|
73
|
+
end
|