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 {
3333 " z" -> 35
3434 )
3535
36- private def convert (uli : String ): String = uli
36+ def convert (loanId : String ): String = loanId
3737 .map(_.toLower)
3838 .map { c =>
3939 if (! c.isDigit)
4040 conversionTable(c.toString).toString
4141 else
4242 c
43- }.mkString(" " ) + " 00 "
43+ }.mkString(" " )
4444
45- private def calculateMod (i : BigInt ): BigInt = {
45+ def calculateMod (i : BigInt ): BigInt = {
4646 i % 97
4747 }
4848
49- private def calculateCheckDigit (i : BigInt ) = {
49+ def calculateCheckDigit (i : BigInt ) = {
5050 98 - i
5151 }
5252
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
5763 }
5864
5965}
Original file line number Diff line number Diff line change @@ -4,10 +4,17 @@ import org.scalatest.{ MustMatchers, WordSpec }
44
55class ULISpec extends WordSpec with MustMatchers {
66
7+ val validULI = " 10Bx939c5543TqA1144M999143X"
8+ val invalidULI = " 10Bx939c5543TqA1144M999133X38"
9+
710 " A ULI Validation" must {
811 " 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
1118 }
1219 }
1320}
You can’t perform that action at this time.
0 commit comments