@@ -5,16 +5,7 @@ import scalaz._, Scalaz._
55object ValidationExercises {
66 type VE [+ A ] = ValidationNel [ErrorCode , A ]
77
8- val allBad = Map [String , String ]()
9- val goodInput = Map (" firstName" -> " Vladimir" , " lastName" -> " Putin" , " password" -> " crimea14" )
10- val passwordIsTooShort = goodInput + (" password" -> " crim3a" )
11- val passwordNoNumbers = goodInput + (" password" -> " crimeaasd" )
12- val passwordNoNumbersAndTooShort = goodInput + (" password" -> " crime" )
13- val noFirstName = goodInput - " firstName"
14- val noLastName = goodInput - " lastName"
15-
16- def validateKey (input : Map [String , String ], key : String ): ValidationNel [ErrorCode , String ] =
17- input.get(key).toSuccess(keyNotFound(key)).toValidationNel
8+ def validateKey (key : String , input : Map [String , String ]): ValidationNel [ErrorCode , String ] = ???
189
1910 def nameValidation (name : String , label : String ): ValidationNel [ErrorCode , String ] =
2011 if (! name.isEmpty) name.successNel else nameIsEmpty(label).failNel
@@ -25,32 +16,9 @@ object ValidationExercises {
2516 def passwordLengthValidation (password : String ): ValidationNel [ErrorCode , String ] =
2617 if (password.length >= 8 ) password.successNel else passwordTooShort.failNel
2718
28- def validateInput (input : Map [String , String ]): ValidationNel [ErrorCode , Person ] = {
29- val vKey = validateKey(input, _ : String )
30- def vName (name : String ) = vKey(name).flatMap(nameValidation(_, name))
31-
32- val firstName = vName(" firstName" )
33- val lastName = vName(" lastName" )
34-
35-
36- val password = vKey(" password" ).flatMap(
37- password => passwordLengthValidation(password) <* passwordStrengthValidation(password)
38- )
39-
40- Apply [VE ].apply3(firstName, lastName, password)(Person )
41-
42- }
43-
44- def main (args : Array [String ]) {
45- println(" Good input = " + validateInput(goodInput))
46- println(" All Bad input =" + validateInput(allBad))
47- println(" password too short = " + validateInput(passwordIsTooShort))
48- println(" password too weak = " + validateInput(passwordNoNumbers))
49- println(" password too short and too weak = " + validateInput(passwordNoNumbersAndTooShort))
50- println(" no first name = " + validateInput(noFirstName))
51- println(" no last name = " + validateInput(noLastName))
52- }
19+ def validateInput (input : Map [String , String ]): ValidationNel [ErrorCode , Person ] = ???
5320
21+
5422
5523}
5624
0 commit comments