import Foundation @main enum KakaoPostcodeResultCheck { static func main() { let result = KakaoPostcodeResult(payload: [ "zonecode": "01234", "address": "서울 지번 주소", "roadAddress": "다른 도로명 주소" ]) precondition(result?.zonecode == "01234", "preserve leading zero") precondition(result?.address == "서울 지번 주소", "use exact address, not roadAddress") let exact = KakaoPostcodeResult(payload: ["zonecode": " 01234 ", "address": " 주소 "]) precondition(exact?.zonecode == " 01234 " && exact?.address == " 주소 ", "do not rewrite values") let invalid: [Any] = [ "not a dictionary", [:], ["address": "주소"], ["zonecode": "01234"], ["zonecode": 1234, "address": "주소"], ["zonecode": "01234", "address": 1], ["zonecode": "", "address": "주소"], ["zonecode": " \n", "address": "주소"], ["zonecode": "01234", "address": ""], ["zonecode": "01234", "address": "\t\n"], ["zonecode": NSNull(), "address": "주소"], ["zonecode": "01234", "address": NSNull()] ] for payload in invalid { precondition(KakaoPostcodeResult(payload: payload) == nil, "reject malformed result") } print("PASS KakaoPostcodeResult: 15 assertions") } }