ffaker 2.2.0 → 2.3.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.
Files changed (320) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +34 -0
  3. data/README.md +4 -0
  4. data/REFERENCE.md +1153 -800
  5. data/Rakefile +23 -24
  6. data/ffaker.gemspec +12 -420
  7. data/lib/ffaker.rb +47 -7
  8. data/lib/ffaker/address.rb +11 -11
  9. data/lib/ffaker/address_au.rb +60 -60
  10. data/lib/ffaker/address_br.rb +5 -5
  11. data/lib/ffaker/address_ca.rb +7 -7
  12. data/lib/ffaker/address_ch.rb +1 -2
  13. data/lib/ffaker/address_ch_de.rb +1 -1
  14. data/lib/ffaker/address_ch_fr.rb +1 -1
  15. data/lib/ffaker/address_ch_it.rb +1 -1
  16. data/lib/ffaker/address_da.rb +5 -5
  17. data/lib/ffaker/address_de.rb +16 -12
  18. data/lib/ffaker/address_fi.rb +7 -8
  19. data/lib/ffaker/address_fr.rb +13 -13
  20. data/lib/ffaker/address_gr.rb +40 -0
  21. data/lib/ffaker/address_in.rb +12 -12
  22. data/lib/ffaker/address_kr.rb +87 -0
  23. data/lib/ffaker/address_mx.rb +409 -409
  24. data/lib/ffaker/address_nl.rb +17 -13
  25. data/lib/ffaker/address_ru.rb +6 -6
  26. data/lib/ffaker/address_se.rb +7 -8
  27. data/lib/ffaker/address_sn.rb +3 -3
  28. data/lib/ffaker/address_ua.rb +8 -8
  29. data/lib/ffaker/address_uk.rb +5 -5
  30. data/lib/ffaker/address_us.rb +9 -9
  31. data/lib/ffaker/airline.rb +16 -0
  32. data/lib/ffaker/avatar.rb +3 -3
  33. data/lib/ffaker/aws.rb +24 -0
  34. data/lib/ffaker/bacon_ipsum.rb +2 -2
  35. data/lib/ffaker/book.rb +45 -0
  36. data/lib/ffaker/boolean.rb +2 -2
  37. data/lib/ffaker/cheesy_lingo.rb +15 -12
  38. data/lib/ffaker/color.rb +54 -1
  39. data/lib/ffaker/color_ua.rb +1 -1
  40. data/lib/ffaker/company.rb +13 -11
  41. data/lib/ffaker/company_cn.rb +23 -0
  42. data/lib/ffaker/company_it.rb +4 -4
  43. data/lib/ffaker/company_se.rb +2 -2
  44. data/lib/ffaker/conference.rb +1 -1
  45. data/lib/ffaker/courses.rb +2 -3
  46. data/lib/ffaker/currency.rb +2 -2
  47. data/lib/ffaker/data/address_gr/city +79 -0
  48. data/lib/ffaker/data/address_gr/region +13 -0
  49. data/lib/ffaker/data/address_gr/street +100 -0
  50. data/lib/ffaker/data/address_kr/boroughs +29 -0
  51. data/lib/ffaker/data/address_kr/cities +51 -0
  52. data/lib/ffaker/data/airline/codes_list +209 -0
  53. data/lib/ffaker/data/airline/names_list +206 -0
  54. data/lib/ffaker/data/aws/ec2_instance_type +59 -0
  55. data/lib/ffaker/data/aws/ec2_reserved_instance_tenancy +3 -0
  56. data/lib/ffaker/data/aws/ec2_reserved_offering_type +6 -0
  57. data/lib/ffaker/data/aws/ec2_reserved_product_description +14 -0
  58. data/lib/ffaker/data/book/adj_and_adv +20 -0
  59. data/lib/ffaker/data/book/genres +369 -0
  60. data/lib/ffaker/data/book/nouns +36 -0
  61. data/lib/ffaker/data/book/prefixes +17 -0
  62. data/lib/ffaker/data/color/names_list +128 -0
  63. data/lib/ffaker/data/education/degree_prefix +274 -0
  64. data/lib/ffaker/data/education/degree_short_prefix +19 -0
  65. data/lib/ffaker/data/job_br/job_nouns +52 -0
  66. data/lib/ffaker/data/job_vn/job_nouns +191 -0
  67. data/lib/ffaker/data/lorem_ja/characters +101 -0
  68. data/lib/ffaker/data/lorem_ja/sentences +30 -0
  69. data/lib/ffaker/data/lorem_ja/sentences_end +21 -0
  70. data/lib/ffaker/data/lorem_ja/words +81 -0
  71. data/lib/ffaker/data/name/first_names_female +4275 -0
  72. data/lib/ffaker/data/name/first_names_male +1219 -0
  73. data/lib/ffaker/data/name_br/first_names_female +1068 -0
  74. data/lib/ffaker/data/name_br/first_names_male +607 -0
  75. data/lib/ffaker/data/name_br/last_names +52 -0
  76. data/lib/ffaker/data/name_gr/female_first_names +80 -0
  77. data/lib/ffaker/data/name_gr/female_last_names +45 -0
  78. data/lib/ffaker/data/name_gr/male_first_names +90 -0
  79. data/lib/ffaker/data/name_gr/male_last_names +57 -0
  80. data/lib/ffaker/data/name_kh/first_names +64 -0
  81. data/lib/ffaker/data/name_kh/last_names +71 -0
  82. data/lib/ffaker/data/name_kh/nick_names +30 -0
  83. data/lib/ffaker/data/name_then/first_names +292 -0
  84. data/lib/ffaker/data/name_then/last_names +63 -0
  85. data/lib/ffaker/data/name_then/nick_names +30 -0
  86. data/lib/ffaker/data/phone_number/phone_calling_code +205 -0
  87. data/lib/ffaker/data/sport/names +57 -24
  88. data/lib/ffaker/data/tweet/hashtag +58 -0
  89. data/lib/ffaker/data/youtube/video_ids +50 -0
  90. data/lib/ffaker/dizzle_ipsum.rb +2 -2
  91. data/lib/ffaker/education.rb +17 -16
  92. data/lib/ffaker/food.rb +5 -6
  93. data/lib/ffaker/gender.rb +4 -4
  94. data/lib/ffaker/gender_br.rb +17 -0
  95. data/lib/ffaker/gender_cn.rb +4 -4
  96. data/lib/ffaker/gender_kr.rb +4 -4
  97. data/lib/ffaker/geolocation.rb +26 -26
  98. data/lib/ffaker/healthcare_ipsum.rb +2 -2
  99. data/lib/ffaker/hipster_ipsum.rb +2 -2
  100. data/lib/ffaker/html_ipsum.rb +101 -81
  101. data/lib/ffaker/identification.rb +4 -4
  102. data/lib/ffaker/identification_br.rb +84 -0
  103. data/lib/ffaker/identification_es.rb +2 -2
  104. data/lib/ffaker/identification_es_cl.rb +7 -5
  105. data/lib/ffaker/identification_es_co.rb +9 -10
  106. data/lib/ffaker/identification_kr.rb +3 -4
  107. data/lib/ffaker/identification_mx.rb +27 -11
  108. data/lib/ffaker/internet.rb +26 -23
  109. data/lib/ffaker/internet_se.rb +21 -21
  110. data/lib/ffaker/job.rb +1 -1
  111. data/lib/ffaker/job_br.rb +12 -0
  112. data/lib/ffaker/job_cn.rb +1 -1
  113. data/lib/ffaker/job_fr.rb +3 -3
  114. data/lib/ffaker/job_ja.rb +2 -1
  115. data/lib/ffaker/job_kr.rb +1 -1
  116. data/lib/ffaker/job_vn.rb +13 -0
  117. data/lib/ffaker/locale.rb +2 -3
  118. data/lib/ffaker/lorem.rb +5 -5
  119. data/lib/ffaker/lorem_ar.rb +4 -4
  120. data/lib/ffaker/lorem_cn.rb +3 -3
  121. data/lib/ffaker/lorem_fr.rb +4 -4
  122. data/lib/ffaker/lorem_ja.rb +40 -0
  123. data/lib/ffaker/lorem_kr.rb +4 -4
  124. data/lib/ffaker/lorem_ua.rb +8 -11
  125. data/lib/ffaker/movie.rb +18 -20
  126. data/lib/ffaker/music.rb +4 -4
  127. data/lib/ffaker/name.rb +100 -11
  128. data/lib/ffaker/name_br.rb +37 -6
  129. data/lib/ffaker/name_cn.rb +2 -2
  130. data/lib/ffaker/name_cs.rb +10 -10
  131. data/lib/ffaker/name_da.rb +6 -6
  132. data/lib/ffaker/name_de.rb +5 -5
  133. data/lib/ffaker/name_fr.rb +4 -4
  134. data/lib/ffaker/name_ga.rb +4 -5
  135. data/lib/ffaker/name_gr.rb +60 -0
  136. data/lib/ffaker/name_it.rb +4 -4
  137. data/lib/ffaker/name_ja.rb +3 -3
  138. data/lib/ffaker/name_kh.rb +22 -0
  139. data/lib/ffaker/name_kr.rb +3 -3
  140. data/lib/ffaker/name_mx.rb +14 -14
  141. data/lib/ffaker/name_nb.rb +5 -5
  142. data/lib/ffaker/name_nl.rb +7 -7
  143. data/lib/ffaker/name_ph.rb +2 -2
  144. data/lib/ffaker/name_ru.rb +7 -8
  145. data/lib/ffaker/name_se.rb +5 -5
  146. data/lib/ffaker/name_sn.rb +23 -23
  147. data/lib/ffaker/name_th.rb +3 -3
  148. data/lib/ffaker/name_th_en.rb +26 -0
  149. data/lib/ffaker/name_ua.rb +8 -8
  150. data/lib/ffaker/name_vn.rb +4 -4
  151. data/lib/ffaker/nato_alphabet.rb +10 -10
  152. data/lib/ffaker/phone_number.rb +31 -21
  153. data/lib/ffaker/phone_number_au.rb +3 -3
  154. data/lib/ffaker/phone_number_br.rb +9 -8
  155. data/lib/ffaker/phone_number_ch.rb +7 -7
  156. data/lib/ffaker/phone_number_cu.rb +5 -5
  157. data/lib/ffaker/phone_number_de.rb +1 -1
  158. data/lib/ffaker/phone_number_fr.rb +4 -4
  159. data/lib/ffaker/phone_number_it.rb +2 -2
  160. data/lib/ffaker/phone_number_kr.rb +4 -4
  161. data/lib/ffaker/phone_number_mx.rb +4 -5
  162. data/lib/ffaker/phone_number_nl.rb +13 -13
  163. data/lib/ffaker/phone_number_se.rb +18 -19
  164. data/lib/ffaker/phone_number_sg.rb +8 -8
  165. data/lib/ffaker/phone_number_sn.rb +2 -2
  166. data/lib/ffaker/product.rb +18 -14
  167. data/lib/ffaker/skill.rb +3 -3
  168. data/lib/ffaker/sport.rb +1 -1
  169. data/lib/ffaker/ssn_se.rb +19 -20
  170. data/lib/ffaker/string.rb +21 -23
  171. data/lib/ffaker/time.rb +19 -7
  172. data/lib/ffaker/tweet.rb +59 -0
  173. data/lib/ffaker/unit.rb +12 -12
  174. data/lib/ffaker/unit_english.rb +34 -35
  175. data/lib/ffaker/unit_metric.rb +25 -25
  176. data/lib/ffaker/utils/array_utils.rb +12 -9
  177. data/lib/ffaker/utils/module_utils.rb +9 -6
  178. data/lib/ffaker/utils/random_utils.rb +33 -0
  179. data/lib/ffaker/vehicle.rb +21 -21
  180. data/lib/ffaker/venue.rb +1 -1
  181. data/lib/ffaker/youtube.rb +24 -0
  182. data/scripts/benchmark.rb +3 -3
  183. data/scripts/reference.rb +26 -23
  184. data/test/helper.rb +50 -0
  185. data/test/test_address.rb +40 -21
  186. data/test/test_address_au.rb +19 -9
  187. data/test/test_address_br.rb +9 -2
  188. data/test/test_address_ca.rb +7 -0
  189. data/test/test_address_ch.rb +6 -2
  190. data/test/test_address_ch_de.rb +7 -3
  191. data/test/test_address_ch_fr.rb +7 -3
  192. data/test/test_address_ch_it.rb +5 -1
  193. data/test/test_address_da.rb +18 -9
  194. data/test/test_address_de.rb +12 -5
  195. data/test/test_address_fi.rb +10 -3
  196. data/test/test_address_fr.rb +13 -0
  197. data/test/test_address_gr.rb +43 -0
  198. data/test/test_address_in.rb +20 -12
  199. data/test/test_address_kr.rb +14 -0
  200. data/test/test_address_mx.rb +12 -5
  201. data/test/test_address_nl.rb +11 -5
  202. data/test/test_address_ru.rb +11 -5
  203. data/test/test_address_se.rb +9 -3
  204. data/test/test_address_sn.rb +7 -1
  205. data/test/test_address_ua.rb +17 -10
  206. data/test/test_address_uk.rb +11 -3
  207. data/test/test_address_us.rb +15 -6
  208. data/test/test_airline.rb +17 -0
  209. data/test/test_array_utils.rb +51 -3
  210. data/test/test_avatar.rb +5 -1
  211. data/test/test_aws.rb +25 -0
  212. data/test/test_bacon_ipsum.rb +12 -6
  213. data/test/test_book.rb +41 -0
  214. data/test/test_boolean.rb +4 -0
  215. data/test/test_cheesy_lingo.rb +14 -10
  216. data/test/test_color.rb +126 -1
  217. data/test/test_color_ua.rb +5 -1
  218. data/test/test_company.rb +7 -0
  219. data/test/test_company_cn.rb +24 -0
  220. data/test/test_company_it.rb +7 -1
  221. data/test/test_company_se.rb +6 -0
  222. data/test/test_conference.rb +5 -2
  223. data/test/test_course_mathematiques.rb +5 -1
  224. data/test/test_course_philosophie.rb +5 -1
  225. data/test/test_currency.rb +12 -0
  226. data/test/test_dizzle_ipsum.rb +12 -6
  227. data/test/test_education.rb +9 -2
  228. data/test/test_faker.rb +8 -1
  229. data/test/test_food.rb +11 -4
  230. data/test/test_gender.rb +5 -1
  231. data/test/test_gender_br.rb +18 -0
  232. data/test/test_gender_cn.rb +5 -2
  233. data/test/test_gender_kr.rb +7 -3
  234. data/test/test_geolocation.rb +11 -8
  235. data/test/test_guid.rb +6 -1
  236. data/test/test_healthcare_ipsum.rb +13 -6
  237. data/test/test_hipster_ipsum.rb +13 -6
  238. data/test/test_html_ipsum.rb +28 -20
  239. data/test/test_identification.rb +9 -2
  240. data/test/test_identification_br.rb +46 -0
  241. data/test/test_identification_co.rb +7 -0
  242. data/test/test_identification_es.rb +5 -1
  243. data/test/test_identification_es_cl.rb +5 -1
  244. data/test/test_identification_es_mx.rb +7 -2
  245. data/test/test_identification_kr.rb +4 -0
  246. data/test/test_internet.rb +36 -5
  247. data/test/test_internet_se.rb +12 -4
  248. data/test/test_job.rb +4 -0
  249. data/test/test_job_br.rb +17 -0
  250. data/test/test_job_cn.rb +4 -0
  251. data/test/test_job_fr.rb +4 -0
  252. data/test/test_job_ja.rb +4 -0
  253. data/test/test_job_kr.rb +4 -0
  254. data/test/test_job_vn.rb +22 -0
  255. data/test/test_locale.rb +10 -4
  256. data/test/test_lorem.rb +18 -11
  257. data/test/test_lorem_ar.rb +16 -8
  258. data/test/test_lorem_cn.rb +9 -2
  259. data/test/test_lorem_fr.rb +16 -8
  260. data/test/test_lorem_ja.rb +81 -0
  261. data/test/test_lorem_kr.rb +17 -8
  262. data/test/test_lorem_ua.rb +15 -8
  263. data/test/test_module_utils.rb +2 -2
  264. data/test/test_movie.rb +5 -1
  265. data/test/test_music.rb +11 -4
  266. data/test/test_name.rb +114 -1
  267. data/test/test_name_br.rb +41 -2
  268. data/test/test_name_cn.rb +7 -0
  269. data/test/test_name_cs.rb +7 -0
  270. data/test/test_name_da.rb +13 -6
  271. data/test/test_name_de.rb +4 -0
  272. data/test/test_name_fr.rb +7 -0
  273. data/test/test_name_ga.rb +7 -0
  274. data/test/test_name_gr.rb +70 -0
  275. data/test/test_name_it.rb +7 -0
  276. data/test/test_name_ja.rb +7 -0
  277. data/test/test_name_kh.rb +32 -0
  278. data/test/test_name_kr.rb +7 -0
  279. data/test/test_name_mx.rb +9 -0
  280. data/test/test_name_nb.rb +8 -0
  281. data/test/test_name_nl.rb +4 -0
  282. data/test/test_name_ph.rb +7 -0
  283. data/test/test_name_ru.rb +10 -3
  284. data/test/test_name_se.rb +12 -4
  285. data/test/test_name_sn.rb +8 -0
  286. data/test/test_name_th.rb +7 -0
  287. data/test/test_name_th_en.rb +35 -0
  288. data/test/test_name_ua.rb +26 -17
  289. data/test/test_name_vn.rb +42 -0
  290. data/test/test_nato_alphabet.rb +15 -4
  291. data/test/test_phone_number.rb +24 -6
  292. data/test/test_phone_number_au.rb +17 -6
  293. data/test/test_phone_number_br.rb +22 -13
  294. data/test/test_phone_number_cu.rb +29 -18
  295. data/test/test_phone_number_da.rb +16 -7
  296. data/test/test_phone_number_de.rb +17 -9
  297. data/test/test_phone_number_kr.rb +9 -0
  298. data/test/test_phone_number_mx.rb +16 -8
  299. data/test/test_phone_number_nl.rb +9 -2
  300. data/test/test_phone_number_se.rb +12 -7
  301. data/test/test_phone_number_sg.rb +17 -9
  302. data/test/test_phone_number_sn.rb +12 -4
  303. data/test/test_products.rb +22 -0
  304. data/test/test_skill.rb +8 -2
  305. data/test/test_sports.rb +4 -0
  306. data/test/test_ssn.rb +3 -1
  307. data/test/test_ssn_mx.rb +6 -1
  308. data/test/test_ssn_se.rb +3 -0
  309. data/test/test_string.rb +28 -1
  310. data/test/test_time.rb +33 -2
  311. data/test/test_tweet.rb +59 -0
  312. data/test/test_units.rb +7 -0
  313. data/test/test_units_english.rb +9 -0
  314. data/test/test_units_metric.rb +9 -0
  315. data/test/test_vehicle.rb +24 -15
  316. data/test/test_venue.rb +5 -1
  317. data/test/test_youtube.rb +28 -0
  318. metadata +101 -5
  319. data/lib/ffaker/data/name/first_names +0 -3008
  320. data/lib/ffaker/data/name_br/first_names +0 -91
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestAirline < Test::Unit::TestCase
6
+ include DeterministicHelper
7
+
8
+ assert_methods_are_deterministic(FFaker::Airline, :name, :flight_number)
9
+
10
+ def test_name
11
+ assert_match(/\A.+\z/, FFaker::Airline.name)
12
+ end
13
+
14
+ def test_flight_number
15
+ assert_match(/\w{2,3} \d{1,4}\z/, FFaker::Airline.flight_number)
16
+ end
17
+ end
@@ -4,16 +4,18 @@ require 'helper'
4
4
  require 'set'
5
5
 
6
6
  class TestArrayUtils < Test::Unit::TestCase
7
+ include DeterministicHelper
8
+
7
9
  def setup
8
- @array = FFaker::ArrayUtils.const_array("a".."c")
9
- @elems = Set.new("a".."c")
10
+ @array = FFaker::ArrayUtils.const_array('a'..'c')
11
+ @elems = Set.new('a'..'c')
10
12
  end
11
13
 
12
14
  def test_provides_a_way_of_freezing_the_elements_and_itself
13
15
  assert @array.respond_to?(:freeze_all)
14
16
  @array.freeze_all
15
17
  assert @array.frozen?
16
- @array.each { |e| assert e.frozen? }
18
+ @array.each { |e| assert e.frozen? }
17
19
  end
18
20
 
19
21
  def test_provides_a_way_of_getting_a_random_element
@@ -49,4 +51,50 @@ class TestArrayUtils < Test::Unit::TestCase
49
51
 
50
52
  assert different_arrangements > 0
51
53
  end
54
+
55
+ def test_self_random_pick_is_deterministic
56
+ supress_warn_output do
57
+ array = Array.new(10) { rand(10) }
58
+ assert_deterministic { FFaker::ArrayUtils.random_pick(array, 3) }
59
+ end
60
+ end
61
+
62
+ def test_self_rand_is_deterministic
63
+ supress_warn_output do
64
+ array = Array.new(10) { rand(10) }
65
+ assert_deterministic { FFaker::ArrayUtils.rand(array) }
66
+ end
67
+ end
68
+
69
+ def test_self_shuffle_is_deterministic
70
+ array = Array.new(10) { rand(10) }
71
+ assert_deterministic { FFaker::ArrayUtils.shuffle(array) }
72
+ end
73
+
74
+ def test_rand_is_deterministic
75
+ supress_warn_output do
76
+ assert_deterministic { @array.rand }
77
+ end
78
+ end
79
+
80
+ def test_random_pick_is_deterministic
81
+ supress_warn_output do
82
+ assert_deterministic { @array.random_pick(2) }
83
+ end
84
+ end
85
+
86
+ def test_shuffle_is_deterministic
87
+ assert_deterministic { @array.shuffle }
88
+ end
89
+
90
+ private
91
+
92
+ # Supress the deprecation warning that some methods output, so we get less
93
+ # noise in our test run.
94
+ def supress_warn_output
95
+ original_verbosity = $VERBOSE
96
+ $VERBOSE = nil
97
+ yield
98
+ $VERBOSE = original_verbosity
99
+ end
52
100
  end
@@ -1,7 +1,11 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestAvatar < Test::Unit::TestCase
4
- ROBOHASH = 'https://robohash.org'
4
+ include DeterministicHelper
5
+
6
+ ROBOHASH = 'https://robohash.org'.freeze
7
+
8
+ assert_methods_are_deterministic(FFaker::Avatar, :image)
5
9
 
6
10
  def setup
7
11
  @tester = FFaker::Avatar
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestAWS < Test::Unit::TestCase
6
+ include DeterministicHelper
7
+
8
+ assert_methods_are_deterministic(FFaker::AWS, :instance_type)
9
+
10
+ def test_instance_type
11
+ assert_match(%r{\A[a-z]+\d\.\d*[a-z]+}, FFaker::AWS.instance_type)
12
+ end
13
+
14
+ def test_offering_type
15
+ assert_match(%r{\A[ a-zA-Z]+\z}i, FFaker::AWS.offering_type)
16
+ end
17
+
18
+ def test_instance_tenancy
19
+ assert_match(%r{\A(?:default|dedicated|host)+\z}i, FFaker::AWS.instance_tenancy)
20
+ end
21
+
22
+ def test_product_description
23
+ assert_match(%r{\A[ \/a-zA-Z\(\)]+\z}i, FFaker::AWS.product_description)
24
+ end
25
+ end
@@ -3,28 +3,34 @@
3
3
  require 'helper'
4
4
 
5
5
  class TestBaconIpsum < Test::Unit::TestCase
6
+ include DeterministicHelper
7
+
8
+ assert_methods_are_deterministic(
9
+ FFaker::BaconIpsum,
10
+ :paragraph, :sentence, :paragraphs, :sentences, :words, :word
11
+ )
6
12
 
7
13
  def test_paragraph
8
- assert_match /1\+|[ a-z]+/i, FFaker::BaconIpsum.paragraph
14
+ assert_match(/1\+|[ a-z]+/i, FFaker::BaconIpsum.paragraph)
9
15
  end
10
16
 
11
17
  def test_sentence
12
- assert_match /1\+|[ a-z]+/i, FFaker::BaconIpsum.sentence
18
+ assert_match(/1\+|[ a-z]+/i, FFaker::BaconIpsum.sentence)
13
19
  end
14
20
 
15
21
  def test_paragraphs
16
- assert_match /1\+|[ a-z]+/i, FFaker::BaconIpsum.paragraphs.join(" ")
22
+ assert_match(/1\+|[ a-z]+/i, FFaker::BaconIpsum.paragraphs.join(' '))
17
23
  end
18
24
 
19
25
  def test_sentences
20
- assert_match /1\+|[ a-z]+/i, FFaker::BaconIpsum.sentences.join(" ")
26
+ assert_match(/1\+|[ a-z]+/i, FFaker::BaconIpsum.sentences.join(' '))
21
27
  end
22
28
 
23
29
  def test_words
24
- assert_match /1\+|[ a-z]+/i, FFaker::BaconIpsum.words.join(" ")
30
+ assert_match(/1\+|[ a-z]+/i, FFaker::BaconIpsum.words.join(' '))
25
31
  end
26
32
 
27
33
  def test_word
28
- assert_match /1\+|[a-z]+/i, FFaker::BaconIpsum.word
34
+ assert_match(/1\+|[a-z]+/i, FFaker::BaconIpsum.word)
29
35
  end
30
36
  end
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestBook < Test::Unit::TestCase
6
+ include DeterministicHelper
7
+
8
+ assert_methods_are_deterministic(
9
+ FFaker::Book,
10
+ :title, :genre, :author, :isbn, :description, :cover
11
+ )
12
+
13
+ def setup
14
+ @tester = FFaker::Book
15
+ end
16
+
17
+ def test_title
18
+ assert_match(/[\sa-z]+/, @tester.title)
19
+ end
20
+
21
+ def test_genre
22
+ assert_match(%r([\w\s'\/]+), @tester.genre)
23
+ end
24
+
25
+ def test_author
26
+ assert_match(/[\sa-z]+/, @tester.author)
27
+ end
28
+
29
+ def test_isbn
30
+ assert_match(/[\d]+/, @tester.isbn)
31
+ end
32
+
33
+ def test_description
34
+ assert_match(/[\sa-z]+/, @tester.description)
35
+ end
36
+
37
+ def test_cover
38
+ assert_match(%r(\Ahttps:\/\/robohash\.org\/.+\.png\?size=300x300\z),
39
+ @tester.cover)
40
+ end
41
+ end
@@ -3,6 +3,10 @@
3
3
  require 'helper'
4
4
 
5
5
  class TestBoolean < Test::Unit::TestCase
6
+ include DeterministicHelper
7
+
8
+ assert_methods_are_deterministic(FFaker::Boolean, :maybe)
9
+
6
10
  def test_maybe
7
11
  maybe = FFaker::Boolean.maybe
8
12
  assert (maybe == false || maybe == true)
@@ -1,37 +1,41 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestCheesyLingo < Test::Unit::TestCase
4
+ include DeterministicHelper
4
5
 
5
6
  TEST_REGEX = /\+1|[a-z]+/i
6
7
 
8
+ assert_methods_are_deterministic(
9
+ FFaker::CheesyLingo,
10
+ :title, :word, :words, :sentence, :paragraph
11
+ )
7
12
 
8
13
  def setup
9
14
  @tester = FFaker::CheesyLingo
10
15
  end
11
16
 
12
17
  def test_title
13
- assert_match TEST_REGEX, @tester.title
18
+ assert_match(TEST_REGEX, @tester.title)
14
19
  end
15
20
 
16
21
  def test_word
17
- assert_match TEST_REGEX, @tester.word
22
+ assert_match(TEST_REGEX, @tester.word)
18
23
  end
19
24
 
20
25
  def test_words
21
- assert_match TEST_REGEX, @tester.words(3).join(" ")
26
+ assert_match(TEST_REGEX, @tester.words(3).join(' '))
22
27
  end
23
28
 
24
29
  def test_sentence
25
- assert_match TEST_REGEX, @tester.sentence
26
- assert_match /1\+|[ a-zA-Z]+./, @tester.sentence
30
+ assert_match(TEST_REGEX, @tester.sentence)
31
+ assert_match(/1\+|[ a-zA-Z]+./, @tester.sentence)
27
32
  end
28
33
 
29
- def test_paragraph #without passing count
30
- assert_match /\+|[a-zA-Z]*./, @tester.paragraph(1)
34
+ def test_paragraph # without passing count
35
+ assert_match(/\+|[a-zA-Z]*./, @tester.paragraph(1))
31
36
  end
32
37
 
33
38
  def test_paragraph_with_arg
34
- assert_match /\+1|[a-zA-Z]+./, @tester.paragraph(3)
39
+ assert_match(/\+1|[a-zA-Z]+./, @tester.paragraph(3))
35
40
  end
36
-
37
- end
41
+ end
@@ -3,7 +3,132 @@
3
3
  require 'helper'
4
4
 
5
5
  class TestColor < Test::Unit::TestCase
6
+ include DeterministicHelper
7
+
8
+ VALID_RGB_REGEX = /\A([0-9]{1,3})\z/
9
+ VALID_OPACITY_REGEX = /^([0-9].[0-9]{1,2})$/
10
+ VALID_PERCENTAGE_REGEX = /^([0-9]{1,3}%)$/
11
+
12
+ assert_methods_are_deterministic(
13
+ FFaker::Color,
14
+ :name, :hex_code, :rgb_array, :rgb_list,
15
+ :rgba_array, :rgba_list, :hsl_array, :hsl_list,
16
+ :hsla_array, :hsla_list
17
+ )
18
+
6
19
  def test_name
7
- assert_match /\A[a-z]+\z/, FFaker::Color.name
20
+ assert_match(/\A[a-z]+\z/, FFaker::Color.name)
21
+ end
22
+
23
+ def test_hex_code
24
+ assert_match /\A\h{6}\z/, FFaker::Color.hex_code
25
+ end
26
+
27
+ def test_rgb_array
28
+ fake_array = FFaker::Color.rgb_array
29
+
30
+ assert fake_array.size == 3
31
+
32
+ red_value = fake_array[0]
33
+ assert_match VALID_RGB_REGEX, red_value.to_s
34
+ assert red_value.between? 0, 255
35
+
36
+ green_value = fake_array[1]
37
+ assert_match VALID_RGB_REGEX, green_value.to_s
38
+ assert green_value.between? 0, 255
39
+
40
+ blue_value = fake_array[2]
41
+ assert_match VALID_RGB_REGEX, blue_value.to_s
42
+ assert blue_value.between? 0, 255
43
+ end
44
+
45
+ def test_rgb_list
46
+ assert_match(
47
+ /\A([0-9]{1,3},[0-9]{1,3},[0-9]{1,3})\z/,
48
+ FFaker::Color.rgb_list
49
+ )
50
+ end
51
+
52
+ def test_rgba_array
53
+ fake_array = FFaker::Color.rgba_array
54
+
55
+ assert fake_array.size == 4
56
+
57
+ red_value = fake_array[0]
58
+ assert_match VALID_RGB_REGEX, red_value.to_s
59
+ assert red_value.between? 0, 255
60
+
61
+ green_value = fake_array[1]
62
+ assert_match VALID_RGB_REGEX, green_value.to_s
63
+ assert green_value.between? 0, 255
64
+
65
+ blue_value = fake_array[2]
66
+ assert_match VALID_RGB_REGEX, blue_value.to_s
67
+ assert blue_value.between? 0, 255
68
+
69
+ opacity_value = fake_array[3]
70
+ assert_match VALID_OPACITY_REGEX, opacity_value.to_s
71
+ assert opacity_value.between? 0.0, 1.0
72
+ end
73
+
74
+ def test_rgba_list
75
+ assert_match(
76
+ /^([0-9]{1,3},[0-9]{1,3},[0-9]{1,3}),([0-9].[0-9]{1,2})$/,
77
+ FFaker::Color.rgba_list
78
+ )
79
+ end
80
+
81
+ def test_hsl_array
82
+ fake_array = FFaker::Color.hsl_array
83
+
84
+ assert fake_array.size == 3
85
+
86
+ hue_value = fake_array[0]
87
+ assert_match VALID_RGB_REGEX, hue_value.to_s
88
+ assert hue_value.between? 0, 360
89
+
90
+ saturation_value = fake_array[1]
91
+ assert_match VALID_PERCENTAGE_REGEX, saturation_value
92
+ assert saturation_value.delete('%').to_i.between? 0, 100
93
+
94
+ lightness_value = fake_array[2]
95
+ assert_match VALID_PERCENTAGE_REGEX, lightness_value
96
+ assert lightness_value.delete('%').to_i.between? 0, 100
97
+ end
98
+
99
+ def test_hsl_list
100
+ assert_match(
101
+ /^([0-9]{1,3},[0-9]{1,3}%,[0-9]{1,3}%)$/,
102
+ FFaker::Color.hsl_list
103
+ )
104
+ end
105
+
106
+ def test_hsla_array
107
+ fake_array = FFaker::Color.hsla_array
108
+
109
+ assert fake_array.size == 4
110
+
111
+ hue_value = fake_array[0]
112
+ assert_match VALID_RGB_REGEX, hue_value.to_s
113
+ assert hue_value.between? 0, 360
114
+
115
+ saturation_value = fake_array[1]
116
+ assert_match VALID_PERCENTAGE_REGEX, saturation_value
117
+ assert saturation_value.delete('%').to_i.between? 0, 100
118
+
119
+ lightness_value = fake_array[2]
120
+ assert_match VALID_PERCENTAGE_REGEX, lightness_value
121
+ assert lightness_value.delete('%').to_i.between? 0, 100
122
+
123
+ opacity_value = fake_array[3]
124
+ assert_match VALID_OPACITY_REGEX, opacity_value.to_s
125
+ assert opacity_value.between? 0.0, 1.0
126
+ end
127
+
128
+ def test_hsla_list
129
+ assert_match(
130
+ /^([0-9]{1,3},[0-9]{1,3}%,[0-9]{1,3}%,[0-9].[0-9]{1,2})$/,
131
+ FFaker::Color.hsla_list
132
+ )
8
133
  end
9
134
  end
@@ -3,7 +3,11 @@
3
3
  require 'helper'
4
4
 
5
5
  class TestColorUA < Test::Unit::TestCase
6
+ include DeterministicHelper
7
+
8
+ assert_methods_are_deterministic(FFaker::ColorUA, :name)
9
+
6
10
  def test_name
7
- assert_match /\A[а-яА-ЯіїєґІЇЄҐ’\-\s]+\z/, FFaker::ColorUA.name
11
+ assert_match(/\A[а-яА-ЯіїєґІЇЄҐ’\-\s]+\z/, FFaker::ColorUA.name)
8
12
  end
9
13
  end
@@ -3,6 +3,13 @@
3
3
  require 'helper'
4
4
 
5
5
  class TestCompany < Test::Unit::TestCase
6
+ include DeterministicHelper
7
+
8
+ assert_methods_are_deterministic(
9
+ FFaker::Company,
10
+ :bs, :catch_phrase, :name, :suffix
11
+ )
12
+
6
13
  def setup
7
14
  @tester = FFaker::Company
8
15
  end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+ class TestCompanyCN < Test::Unit::TestCase
6
+ include DeterministicHelper
7
+
8
+ assert_methods_are_deterministic(
9
+ FFaker::CompanyCN,
10
+ :name, :suffix, :type
11
+ )
12
+
13
+ def test_name
14
+ assert_match(/.{4,}公司\z/, FFaker::CompanyCN.name)
15
+ end
16
+
17
+ def test_suffix
18
+ assert_match(/公司\z/i, FFaker::CompanyCN.suffix)
19
+ end
20
+
21
+ def test_type
22
+ assert_match(/.{2,}/i, FFaker::CompanyCN.type)
23
+ end
24
+ end