File tree 5 files changed +76
-0
lines changed
5 files changed +76
-0
lines changed Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ import provider/misc
17
17
import provider/ person
18
18
import provider/ phone_number
19
19
import provider/ user_agent
20
+ import provider/ ssn
20
21
21
22
export address
22
23
export automotive
@@ -32,3 +33,4 @@ export misc
32
33
export person
33
34
export phone_number
34
35
export user_agent
36
+ export ssn
Original file line number Diff line number Diff line change
1
+ # ----------------------------------------------- #
2
+ # This module was generated by 'generator' tool . #
3
+ # See 'tools/generator'. #
4
+ # ----------------------------------------------- #
5
+
6
+ import ../ base
7
+ import ssn/ ssn_en_US
8
+ export base
9
+
10
+ proc ssn * (f: Faker ): string =
11
+ # # Generates random job.
12
+ runnableExamples:
13
+ let f = newFaker ()
14
+ echo f.ssn ()
15
+
16
+ case f.locale
17
+ of " en_US" : ssn_en_US.ssn (f)
18
+ else : ssn_en_US.ssn (f)
Original file line number Diff line number Diff line change
1
+ # interfaces はプロシージャの定義のみをまとめたモジュール。
2
+ # C言語でいうヘッダファイルのように使用する。
3
+ #
4
+ # このモジュールをincludeしたモジュールは、このモジュールに定義しているプロシー
5
+ # ジャを全て実装しないと、コンパイルが通らない。
6
+
7
+ import random
8
+ import std/ strutils
9
+ import strformat
10
+ import ../../ base
11
+ export base
12
+
13
+ proc ssn * (f: Faker ): string
14
+ proc areaNumber (f: Faker ): string
15
+ proc groupNumber (f: Faker ): string
16
+ proc serialNumber (f: Faker ): string
Original file line number Diff line number Diff line change
1
+ include interfaces
2
+
3
+ proc areaNumber (f: Faker ): string =
4
+ var aNum = f.rand.rand (1 .. 899 )
5
+ if aNum == 666 :
6
+ (if f.rand.rand (0 .. 1 ) == 1 : inc (aNum) else : dec (aNum))
7
+ return fmt" { aNum:>03 } "
8
+
9
+ proc groupNumber (f: Faker ): string =
10
+ var gNum = f.rand.rand (1 .. 99 )
11
+ return fmt" { gNum:>02 } "
12
+
13
+
14
+ proc serialNumber (f: Faker ): string =
15
+ let sNum = f.rand.rand (0 .. 9999 )
16
+ return fmt" { sNum:>04 } "
17
+
18
+ proc ssn * (f: Faker ): string =
19
+ return [ $ areaNumber (f), $ groupNumber (f), $ serialNumber (f) ].join (" -" )
20
+
Original file line number Diff line number Diff line change
1
+ import std/ unittest
2
+ import faker
3
+ import std/ strscans
4
+ import strutils
5
+
6
+ test " SSN" :
7
+ block :
8
+ checkpoint " it generates a valid ssn"
9
+ let fake = newFaker ()
10
+ let ssn = fake.ssn ()
11
+ let ssnArr = ssn.split (" -" )
12
+
13
+ let aNum = ssnArr[0 ]
14
+ let gNum = ssnArr[1 ]
15
+ let sNum = ssnArr[2 ]
16
+
17
+ check len (aNum) == 3
18
+ check len (gNum) == 2
19
+ check len (sNum) == 4
20
+ check len (ssn) == 11
You can’t perform that action at this time.
0 commit comments