Advertisement
Guest User

Untitled

a guest
Jan 30th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. //: Playground - noun: a place where people can play
  2.  
  3. import Foundation
  4.  
  5. // MARK: Protocols
  6. protocol UserRequestProtocol {
  7. var name: String { get set }
  8. var age: Int { get set }
  9. var password: String { get set }
  10. var likesBacon: Bool { get set }
  11. }
  12.  
  13. protocol UserViewModelProtocol {
  14. var name: String? { get set }
  15. var age: Int? { get set }
  16. var password: String? { get set }
  17. var likesBacon: Bool? { get set }
  18. }
  19.  
  20. protocol MapperProtocol {
  21. func mapUserViewModel(userViewModel: UserViewModelProtocol) throws -> UserRequestProtocol?
  22. }
  23.  
  24. enum MapperError: ErrorType {
  25. case InvalidParameter(String)
  26. }
  27.  
  28. // MARK: Structs
  29. struct UserRequest: UserRequestProtocol {
  30. var name: String
  31. var age: Int
  32. var password: String
  33. var likesBacon: Bool
  34. }
  35.  
  36. struct UserViewModel: UserViewModelProtocol {
  37. var name: String?
  38. var age: Int?
  39. var password: String?
  40. var likesBacon: Bool?
  41. }
  42.  
  43. // MARK: Mapper
  44. class UserViewModelUserRequestMapper: MapperProtocol {
  45. func mapUserViewModel(userViewModel: UserViewModelProtocol) throws -> UserRequestProtocol? {
  46. // FILL THIS WITH BEAUTIFUL CODE
  47. return UserRequest(name: "Nome", age: 20, password: "senha", likesBacon: true)
  48. }
  49. }
  50.  
  51. // MARK: Setup
  52. let mapper = UserViewModelUserRequestMapper()
  53. let nullViewModel = UserViewModel(name: nil, age: nil, password: nil, likesBacon: nil)
  54. let knowMyName = UserViewModel(name: "Chris Lattner", age: nil, password: nil, likesBacon: nil)
  55. let dontKnowIfILikeBacon = UserViewModel(name: "Steve Wozniak", age: 66, password: "b>#F{mt>A-%6FZ^w", likesBacon: nil)
  56. let jobs = UserViewModel(name: "Steve Jobs", age: 999, password: "lisa2", likesBacon: true)
  57. let invalidPassword = UserViewModel(name: "John Doe", age: 32, password: "", likesBacon: false)
  58. let passwordTooLongUser = UserViewModel(name: "Andre Sales", age: 24, password: "jackdaniels", likesBacon: true)
  59.  
  60. var nullResult, knowMyNameResult, dontKnowIfILikeBaconResult, jobsResult, invalidPasswordResult, passwordTooLongUserResult: UserRequestProtocol?
  61.  
  62. do {
  63. nullResult = try mapper.mapUserViewModel(nullViewModel)
  64. } catch let error {
  65. print("\(error)")
  66. }
  67.  
  68. do {
  69. knowMyNameResult = try mapper.mapUserViewModel(knowMyName)
  70. } catch let error {
  71. print("\(error)")
  72. }
  73.  
  74. do {
  75. dontKnowIfILikeBaconResult = try mapper.mapUserViewModel(dontKnowIfILikeBacon)
  76. } catch let error {
  77. print("\(error)")
  78. }
  79.  
  80. do {
  81. jobsResult = try mapper.mapUserViewModel(jobs)
  82. } catch let error {
  83. print("\(error)")
  84. }
  85.  
  86. do {
  87. invalidPasswordResult = try mapper.mapUserViewModel(invalidPassword)
  88. } catch let error {
  89. print("\(error)")
  90. }
  91.  
  92. do {
  93. passwordTooLongUserResult = try mapper.mapUserViewModel(passwordTooLongUser)
  94. } catch let error {
  95. print("\(error)")
  96. }
  97.  
  98. // MARK: Testing
  99. func check() -> Bool {
  100. return (nullResult == nil) && (knowMyNameResult == nil) && (dontKnowIfILikeBaconResult == nil) && (jobsResult != nil) && (invalidPasswordResult == nil) && (passwordTooLongUserResult == nil)
  101. }
  102.  
  103. if check() {
  104. print("YOU DID IT, CONGRATZ CHAMP")
  105. } else {
  106. print("LET'S TRY THIS AGAIN, YOU CAN DO IT, BRO!")
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement