File tree Expand file tree Collapse file tree 2 files changed +23
-10
lines changed
main/scala/hmda/validation/engine/lar
test/scala/hmda/validation/engine/lar Expand file tree Collapse file tree 2 files changed +23
-10
lines changed Original file line number Diff line number Diff line change @@ -33,27 +33,33 @@ object ULI {
33
33
" z" -> 35
34
34
)
35
35
36
- private def convert (uli : String ): String = uli
36
+ def convert (loanId : String ): String = loanId
37
37
.map(_.toLower)
38
38
.map { c =>
39
39
if (! c.isDigit)
40
40
conversionTable(c.toString).toString
41
41
else
42
42
c
43
- }.mkString(" " ) + " 00 "
43
+ }.mkString(" " )
44
44
45
- private def calculateMod (i : BigInt ): BigInt = {
45
+ def calculateMod (i : BigInt ): BigInt = {
46
46
i % 97
47
47
}
48
48
49
- private def calculateCheckDigit (i : BigInt ) = {
49
+ def calculateCheckDigit (i : BigInt ) = {
50
50
98 - i
51
51
}
52
52
53
- def checkDigit (uli : String ): String = {
54
- val checkDigit =
55
- calculateCheckDigit(calculateMod(BigInt (convert(uli))))
56
- uli + checkDigit.toString
53
+ def checkDigit (uli : String ): BigInt = {
54
+ calculateCheckDigit(calculateMod(BigInt (convert(uli) ++ " 00" )))
55
+ }
56
+
57
+ def generateULI (uli : String ): String = {
58
+ uli + checkDigit(uli).toString()
59
+ }
60
+
61
+ def validate (uli : String ): Boolean = {
62
+ calculateMod(BigInt (convert(uli))) == 1
57
63
}
58
64
59
65
}
Original file line number Diff line number Diff line change @@ -4,10 +4,17 @@ import org.scalatest.{ MustMatchers, WordSpec }
4
4
5
5
class ULISpec extends WordSpec with MustMatchers {
6
6
7
+ val validULI = " 10Bx939c5543TqA1144M999143X"
8
+ val invalidULI = " 10Bx939c5543TqA1144M999133X38"
9
+
7
10
" A ULI Validation" must {
8
11
" Produce valid check digit" in {
9
- val uli = " 10Bx939c5543TqA1144M999143X"
10
- ULI .checkDigit(uli) mustBe " 10Bx939c5543TqA1144M999143X38"
12
+ ULI .checkDigit(validULI) mustBe 38
13
+ ULI .generateULI(validULI) mustBe " 10Bx939c5543TqA1144M999143X38"
14
+ }
15
+ " Validate ULI" in {
16
+ ULI .validate(validULI + " 38" ) mustBe true
17
+ ULI .validate(invalidULI) mustBe false
11
18
}
12
19
}
13
20
}
You can’t perform that action at this time.
0 commit comments