ffaker 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
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