Codebase list golang-github-go-playground-validator-v10 / c59a51f
Merge pull request #122 from joeybloggs/v6-development Split out assertions and put in external repo Dean Karn 8 years ago
1 changed file(s) with 34 addition(s) and 144 deletion(s). Raw diff Collapse all Expand all
11
22 import (
33 "fmt"
4 "path"
54 "reflect"
6 "runtime"
75 "testing"
86 "time"
7
8 . "gopkg.in/bluesuncorp/assert.v1"
99 )
1010
1111 // NOTES:
109109
110110 var validate = New(Config{TagName: "validate", ValidationFuncs: BakedInValidators})
111111
112 func IsEqual(t *testing.T, val1, val2 interface{}) bool {
113 v1 := reflect.ValueOf(val1)
114 v2 := reflect.ValueOf(val2)
115
116 if v1.Kind() == reflect.Ptr {
117 v1 = v1.Elem()
118 }
119
120 if v2.Kind() == reflect.Ptr {
121 v2 = v2.Elem()
122 }
123
124 if !v1.IsValid() && !v2.IsValid() {
125 return true
126 }
127
128 switch v1.Kind() {
129 case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
130 if v1.IsNil() {
131 v1 = reflect.ValueOf(nil)
132 }
133 }
134
135 switch v2.Kind() {
136 case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
137 if v2.IsNil() {
138 v2 = reflect.ValueOf(nil)
139 }
140 }
141
142 v1Underlying := reflect.Zero(reflect.TypeOf(v1)).Interface()
143 v2Underlying := reflect.Zero(reflect.TypeOf(v2)).Interface()
144
145 if v1 == v1Underlying {
146 if v2 == v2Underlying {
147 goto CASE4
148 } else {
149 goto CASE3
150 }
151 } else {
152 if v2 == v2Underlying {
153 goto CASE2
154 } else {
155 goto CASE1
156 }
157 }
158
159 CASE1:
160 // fmt.Println("CASE 1")
161 return reflect.DeepEqual(v1.Interface(), v2.Interface())
162 CASE2:
163 // fmt.Println("CASE 2")
164 return reflect.DeepEqual(v1.Interface(), v2)
165 CASE3:
166 // fmt.Println("CASE 3")
167 return reflect.DeepEqual(v1, v2.Interface())
168 CASE4:
169 // fmt.Println("CASE 4")
170 return reflect.DeepEqual(v1, v2)
171 }
172
173 func Equal(t *testing.T, val1, val2 interface{}) {
174 EqualSkip(t, 2, val1, val2)
175 }
176
177 func EqualSkip(t *testing.T, skip int, val1, val2 interface{}) {
178
179 if !IsEqual(t, val1, val2) {
180
181 _, file, line, _ := runtime.Caller(skip)
182 fmt.Printf("%s:%d %v does not equal %v\n", path.Base(file), line, val1, val2)
183 t.FailNow()
184 }
185 }
186
187 func NotEqual(t *testing.T, val1, val2 interface{}) {
188 NotEqualSkip(t, 2, val1, val2)
189 }
190
191 func NotEqualSkip(t *testing.T, skip int, val1, val2 interface{}) {
192
193 if IsEqual(t, val1, val2) {
194 _, file, line, _ := runtime.Caller(skip)
195 fmt.Printf("%s:%d %v should not be equal %v\n", path.Base(file), line, val1, val2)
196 t.FailNow()
197 }
198 }
199
200 func PanicMatches(t *testing.T, fn func(), matches string) {
201 PanicMatchesSkip(t, 2, fn, matches)
202 }
203
204 func PanicMatchesSkip(t *testing.T, skip int, fn func(), matches string) {
205
206 _, file, line, _ := runtime.Caller(skip)
207
208 defer func() {
209 if r := recover(); r != nil {
210 err := fmt.Sprintf("%s", r)
211
212 if err != matches {
213 fmt.Printf("%s:%d Panic... expected [%s] received [%s]", path.Base(file), line, matches, err)
214 t.FailNow()
215 }
216 }
217 }()
218
219 fn()
220 }
221
222112 func AssertError(t *testing.T, errs ValidationErrors, key, field, expectedTag string) {
223113
224114 val, ok := errs[key]
863753 errs := validate.Field(test.param, "ssn")
864754
865755 if test.expected == true {
866 if !IsEqual(t, errs, nil) {
756 if !IsEqual(errs, nil) {
867757 t.Fatalf("Index: %d SSN failed Error: %s", i, errs)
868758 }
869759 } else {
870 if IsEqual(t, errs, nil) {
760 if IsEqual(errs, nil) {
871761 t.Fatalf("Index: %d SSN failed Error: %s", i, errs)
872762 } else {
873763 val := errs[""]
897787 errs := validate.Field(test.param, "longitude")
898788
899789 if test.expected == true {
900 if !IsEqual(t, errs, nil) {
790 if !IsEqual(errs, nil) {
901791 t.Fatalf("Index: %d Longitude failed Error: %s", i, errs)
902792 }
903793 } else {
904 if IsEqual(t, errs, nil) {
794 if IsEqual(errs, nil) {
905795 t.Fatalf("Index: %d Longitude failed Error: %s", i, errs)
906796 } else {
907797 val := errs[""]
931821 errs := validate.Field(test.param, "latitude")
932822
933823 if test.expected == true {
934 if !IsEqual(t, errs, nil) {
824 if !IsEqual(errs, nil) {
935825 t.Fatalf("Index: %d Latitude failed Error: %s", i, errs)
936826 }
937827 } else {
938 if IsEqual(t, errs, nil) {
828 if IsEqual(errs, nil) {
939829 t.Fatalf("Index: %d Latitude failed Error: %s", i, errs)
940830 } else {
941831 val := errs[""]
971861 errs := validate.Field(test.param, "datauri")
972862
973863 if test.expected == true {
974 if !IsEqual(t, errs, nil) {
864 if !IsEqual(errs, nil) {
975865 t.Fatalf("Index: %d DataURI failed Error: %s", i, errs)
976866 }
977867 } else {
978 if IsEqual(t, errs, nil) {
868 if IsEqual(errs, nil) {
979869 t.Fatalf("Index: %d DataURI failed Error: %s", i, errs)
980870 } else {
981871 val := errs[""]
1009899 errs := validate.Field(test.param, "multibyte")
1010900
1011901 if test.expected == true {
1012 if !IsEqual(t, errs, nil) {
902 if !IsEqual(errs, nil) {
1013903 t.Fatalf("Index: %d Multibyte failed Error: %s", i, errs)
1014904 }
1015905 } else {
1016 if IsEqual(t, errs, nil) {
906 if IsEqual(errs, nil) {
1017907 t.Fatalf("Index: %d Multibyte failed Error: %s", i, errs)
1018908 } else {
1019909 val := errs[""]
1048938 errs := validate.Field(test.param, "printascii")
1049939
1050940 if test.expected == true {
1051 if !IsEqual(t, errs, nil) {
941 if !IsEqual(errs, nil) {
1052942 t.Fatalf("Index: %d Printable ASCII failed Error: %s", i, errs)
1053943 }
1054944 } else {
1055 if IsEqual(t, errs, nil) {
945 if IsEqual(errs, nil) {
1056946 t.Fatalf("Index: %d Printable ASCII failed Error: %s", i, errs)
1057947 } else {
1058948 val := errs[""]
1086976 errs := validate.Field(test.param, "ascii")
1087977
1088978 if test.expected == true {
1089 if !IsEqual(t, errs, nil) {
979 if !IsEqual(errs, nil) {
1090980 t.Fatalf("Index: %d ASCII failed Error: %s", i, errs)
1091981 }
1092982 } else {
1093 if IsEqual(t, errs, nil) {
983 if IsEqual(errs, nil) {
1094984 t.Fatalf("Index: %d ASCII failed Error: %s", i, errs)
1095985 } else {
1096986 val := errs[""]
11211011 errs := validate.Field(test.param, "uuid5")
11221012
11231013 if test.expected == true {
1124 if !IsEqual(t, errs, nil) {
1014 if !IsEqual(errs, nil) {
11251015 t.Fatalf("Index: %d UUID5 failed Error: %s", i, errs)
11261016 }
11271017 } else {
1128 if IsEqual(t, errs, nil) {
1018 if IsEqual(errs, nil) {
11291019 t.Fatalf("Index: %d UUID5 failed Error: %s", i, errs)
11301020 } else {
11311021 val := errs[""]
11551045 errs := validate.Field(test.param, "uuid4")
11561046
11571047 if test.expected == true {
1158 if !IsEqual(t, errs, nil) {
1048 if !IsEqual(errs, nil) {
11591049 t.Fatalf("Index: %d UUID4 failed Error: %s", i, errs)
11601050 }
11611051 } else {
1162 if IsEqual(t, errs, nil) {
1052 if IsEqual(errs, nil) {
11631053 t.Fatalf("Index: %d UUID4 failed Error: %s", i, errs)
11641054 } else {
11651055 val := errs[""]
11881078 errs := validate.Field(test.param, "uuid3")
11891079
11901080 if test.expected == true {
1191 if !IsEqual(t, errs, nil) {
1081 if !IsEqual(errs, nil) {
11921082 t.Fatalf("Index: %d UUID3 failed Error: %s", i, errs)
11931083 }
11941084 } else {
1195 if IsEqual(t, errs, nil) {
1085 if IsEqual(errs, nil) {
11961086 t.Fatalf("Index: %d UUID3 failed Error: %s", i, errs)
11971087 } else {
11981088 val := errs[""]
12241114 errs := validate.Field(test.param, "uuid")
12251115
12261116 if test.expected == true {
1227 if !IsEqual(t, errs, nil) {
1117 if !IsEqual(errs, nil) {
12281118 t.Fatalf("Index: %d UUID failed Error: %s", i, errs)
12291119 }
12301120 } else {
1231 if IsEqual(t, errs, nil) {
1121 if IsEqual(errs, nil) {
12321122 t.Fatalf("Index: %d UUID failed Error: %s", i, errs)
12331123 } else {
12341124 val := errs[""]
12621152 errs := validate.Field(test.param, "isbn")
12631153
12641154 if test.expected == true {
1265 if !IsEqual(t, errs, nil) {
1155 if !IsEqual(errs, nil) {
12661156 t.Fatalf("Index: %d ISBN failed Error: %s", i, errs)
12671157 }
12681158 } else {
1269 if IsEqual(t, errs, nil) {
1159 if IsEqual(errs, nil) {
12701160 t.Fatalf("Index: %d ISBN failed Error: %s", i, errs)
12711161 } else {
12721162 val := errs[""]
12991189 errs := validate.Field(test.param, "isbn13")
13001190
13011191 if test.expected == true {
1302 if !IsEqual(t, errs, nil) {
1192 if !IsEqual(errs, nil) {
13031193 t.Fatalf("Index: %d ISBN13 failed Error: %s", i, errs)
13041194 }
13051195 } else {
1306 if IsEqual(t, errs, nil) {
1196 if IsEqual(errs, nil) {
13071197 t.Fatalf("Index: %d ISBN13 failed Error: %s", i, errs)
13081198 } else {
13091199 val := errs[""]
13371227 errs := validate.Field(test.param, "isbn10")
13381228
13391229 if test.expected == true {
1340 if !IsEqual(t, errs, nil) {
1230 if !IsEqual(errs, nil) {
13411231 t.Fatalf("Index: %d ISBN10 failed Error: %s", i, errs)
13421232 }
13431233 } else {
1344 if IsEqual(t, errs, nil) {
1234 if IsEqual(errs, nil) {
13451235 t.Fatalf("Index: %d ISBN10 failed Error: %s", i, errs)
13461236 } else {
13471237 val := errs[""]
27012591 errs := validate.Field(test.param, "url")
27022592
27032593 if test.expected == true {
2704 if !IsEqual(t, errs, nil) {
2594 if !IsEqual(errs, nil) {
27052595 t.Fatalf("Index: %d URL failed Error: %s", i, errs)
27062596 }
27072597 } else {
2708 if IsEqual(t, errs, nil) {
2598 if IsEqual(errs, nil) {
27092599 t.Fatalf("Index: %d URL failed Error: %s", i, errs)
27102600 } else {
27112601 val := errs[""]
27652655 errs := validate.Field(test.param, "uri")
27662656
27672657 if test.expected == true {
2768 if !IsEqual(t, errs, nil) {
2658 if !IsEqual(errs, nil) {
27692659 t.Fatalf("Index: %d URI failed Error: %s", i, errs)
27702660 }
27712661 } else {
2772 if IsEqual(t, errs, nil) {
2662 if IsEqual(errs, nil) {
27732663 t.Fatalf("Index: %d URI failed Error: %s", i, errs)
27742664 } else {
27752665 val := errs[""]