1 | 1 |
|
2 | 2 |
import (
|
3 | 3 |
"fmt"
|
4 | |
"path"
|
5 | 4 |
"reflect"
|
6 | |
"runtime"
|
7 | 5 |
"testing"
|
8 | 6 |
"time"
|
|
7 |
|
|
8 |
. "gopkg.in/bluesuncorp/assert.v1"
|
9 | 9 |
)
|
10 | 10 |
|
11 | 11 |
// NOTES:
|
|
109 | 109 |
|
110 | 110 |
var validate = New(Config{TagName: "validate", ValidationFuncs: BakedInValidators})
|
111 | 111 |
|
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 | |
|
222 | 112 |
func AssertError(t *testing.T, errs ValidationErrors, key, field, expectedTag string) {
|
223 | 113 |
|
224 | 114 |
val, ok := errs[key]
|
|
863 | 753 |
errs := validate.Field(test.param, "ssn")
|
864 | 754 |
|
865 | 755 |
if test.expected == true {
|
866 | |
if !IsEqual(t, errs, nil) {
|
|
756 |
if !IsEqual(errs, nil) {
|
867 | 757 |
t.Fatalf("Index: %d SSN failed Error: %s", i, errs)
|
868 | 758 |
}
|
869 | 759 |
} else {
|
870 | |
if IsEqual(t, errs, nil) {
|
|
760 |
if IsEqual(errs, nil) {
|
871 | 761 |
t.Fatalf("Index: %d SSN failed Error: %s", i, errs)
|
872 | 762 |
} else {
|
873 | 763 |
val := errs[""]
|
|
897 | 787 |
errs := validate.Field(test.param, "longitude")
|
898 | 788 |
|
899 | 789 |
if test.expected == true {
|
900 | |
if !IsEqual(t, errs, nil) {
|
|
790 |
if !IsEqual(errs, nil) {
|
901 | 791 |
t.Fatalf("Index: %d Longitude failed Error: %s", i, errs)
|
902 | 792 |
}
|
903 | 793 |
} else {
|
904 | |
if IsEqual(t, errs, nil) {
|
|
794 |
if IsEqual(errs, nil) {
|
905 | 795 |
t.Fatalf("Index: %d Longitude failed Error: %s", i, errs)
|
906 | 796 |
} else {
|
907 | 797 |
val := errs[""]
|
|
931 | 821 |
errs := validate.Field(test.param, "latitude")
|
932 | 822 |
|
933 | 823 |
if test.expected == true {
|
934 | |
if !IsEqual(t, errs, nil) {
|
|
824 |
if !IsEqual(errs, nil) {
|
935 | 825 |
t.Fatalf("Index: %d Latitude failed Error: %s", i, errs)
|
936 | 826 |
}
|
937 | 827 |
} else {
|
938 | |
if IsEqual(t, errs, nil) {
|
|
828 |
if IsEqual(errs, nil) {
|
939 | 829 |
t.Fatalf("Index: %d Latitude failed Error: %s", i, errs)
|
940 | 830 |
} else {
|
941 | 831 |
val := errs[""]
|
|
971 | 861 |
errs := validate.Field(test.param, "datauri")
|
972 | 862 |
|
973 | 863 |
if test.expected == true {
|
974 | |
if !IsEqual(t, errs, nil) {
|
|
864 |
if !IsEqual(errs, nil) {
|
975 | 865 |
t.Fatalf("Index: %d DataURI failed Error: %s", i, errs)
|
976 | 866 |
}
|
977 | 867 |
} else {
|
978 | |
if IsEqual(t, errs, nil) {
|
|
868 |
if IsEqual(errs, nil) {
|
979 | 869 |
t.Fatalf("Index: %d DataURI failed Error: %s", i, errs)
|
980 | 870 |
} else {
|
981 | 871 |
val := errs[""]
|
|
1009 | 899 |
errs := validate.Field(test.param, "multibyte")
|
1010 | 900 |
|
1011 | 901 |
if test.expected == true {
|
1012 | |
if !IsEqual(t, errs, nil) {
|
|
902 |
if !IsEqual(errs, nil) {
|
1013 | 903 |
t.Fatalf("Index: %d Multibyte failed Error: %s", i, errs)
|
1014 | 904 |
}
|
1015 | 905 |
} else {
|
1016 | |
if IsEqual(t, errs, nil) {
|
|
906 |
if IsEqual(errs, nil) {
|
1017 | 907 |
t.Fatalf("Index: %d Multibyte failed Error: %s", i, errs)
|
1018 | 908 |
} else {
|
1019 | 909 |
val := errs[""]
|
|
1048 | 938 |
errs := validate.Field(test.param, "printascii")
|
1049 | 939 |
|
1050 | 940 |
if test.expected == true {
|
1051 | |
if !IsEqual(t, errs, nil) {
|
|
941 |
if !IsEqual(errs, nil) {
|
1052 | 942 |
t.Fatalf("Index: %d Printable ASCII failed Error: %s", i, errs)
|
1053 | 943 |
}
|
1054 | 944 |
} else {
|
1055 | |
if IsEqual(t, errs, nil) {
|
|
945 |
if IsEqual(errs, nil) {
|
1056 | 946 |
t.Fatalf("Index: %d Printable ASCII failed Error: %s", i, errs)
|
1057 | 947 |
} else {
|
1058 | 948 |
val := errs[""]
|
|
1086 | 976 |
errs := validate.Field(test.param, "ascii")
|
1087 | 977 |
|
1088 | 978 |
if test.expected == true {
|
1089 | |
if !IsEqual(t, errs, nil) {
|
|
979 |
if !IsEqual(errs, nil) {
|
1090 | 980 |
t.Fatalf("Index: %d ASCII failed Error: %s", i, errs)
|
1091 | 981 |
}
|
1092 | 982 |
} else {
|
1093 | |
if IsEqual(t, errs, nil) {
|
|
983 |
if IsEqual(errs, nil) {
|
1094 | 984 |
t.Fatalf("Index: %d ASCII failed Error: %s", i, errs)
|
1095 | 985 |
} else {
|
1096 | 986 |
val := errs[""]
|
|
1121 | 1011 |
errs := validate.Field(test.param, "uuid5")
|
1122 | 1012 |
|
1123 | 1013 |
if test.expected == true {
|
1124 | |
if !IsEqual(t, errs, nil) {
|
|
1014 |
if !IsEqual(errs, nil) {
|
1125 | 1015 |
t.Fatalf("Index: %d UUID5 failed Error: %s", i, errs)
|
1126 | 1016 |
}
|
1127 | 1017 |
} else {
|
1128 | |
if IsEqual(t, errs, nil) {
|
|
1018 |
if IsEqual(errs, nil) {
|
1129 | 1019 |
t.Fatalf("Index: %d UUID5 failed Error: %s", i, errs)
|
1130 | 1020 |
} else {
|
1131 | 1021 |
val := errs[""]
|
|
1155 | 1045 |
errs := validate.Field(test.param, "uuid4")
|
1156 | 1046 |
|
1157 | 1047 |
if test.expected == true {
|
1158 | |
if !IsEqual(t, errs, nil) {
|
|
1048 |
if !IsEqual(errs, nil) {
|
1159 | 1049 |
t.Fatalf("Index: %d UUID4 failed Error: %s", i, errs)
|
1160 | 1050 |
}
|
1161 | 1051 |
} else {
|
1162 | |
if IsEqual(t, errs, nil) {
|
|
1052 |
if IsEqual(errs, nil) {
|
1163 | 1053 |
t.Fatalf("Index: %d UUID4 failed Error: %s", i, errs)
|
1164 | 1054 |
} else {
|
1165 | 1055 |
val := errs[""]
|
|
1188 | 1078 |
errs := validate.Field(test.param, "uuid3")
|
1189 | 1079 |
|
1190 | 1080 |
if test.expected == true {
|
1191 | |
if !IsEqual(t, errs, nil) {
|
|
1081 |
if !IsEqual(errs, nil) {
|
1192 | 1082 |
t.Fatalf("Index: %d UUID3 failed Error: %s", i, errs)
|
1193 | 1083 |
}
|
1194 | 1084 |
} else {
|
1195 | |
if IsEqual(t, errs, nil) {
|
|
1085 |
if IsEqual(errs, nil) {
|
1196 | 1086 |
t.Fatalf("Index: %d UUID3 failed Error: %s", i, errs)
|
1197 | 1087 |
} else {
|
1198 | 1088 |
val := errs[""]
|
|
1224 | 1114 |
errs := validate.Field(test.param, "uuid")
|
1225 | 1115 |
|
1226 | 1116 |
if test.expected == true {
|
1227 | |
if !IsEqual(t, errs, nil) {
|
|
1117 |
if !IsEqual(errs, nil) {
|
1228 | 1118 |
t.Fatalf("Index: %d UUID failed Error: %s", i, errs)
|
1229 | 1119 |
}
|
1230 | 1120 |
} else {
|
1231 | |
if IsEqual(t, errs, nil) {
|
|
1121 |
if IsEqual(errs, nil) {
|
1232 | 1122 |
t.Fatalf("Index: %d UUID failed Error: %s", i, errs)
|
1233 | 1123 |
} else {
|
1234 | 1124 |
val := errs[""]
|
|
1262 | 1152 |
errs := validate.Field(test.param, "isbn")
|
1263 | 1153 |
|
1264 | 1154 |
if test.expected == true {
|
1265 | |
if !IsEqual(t, errs, nil) {
|
|
1155 |
if !IsEqual(errs, nil) {
|
1266 | 1156 |
t.Fatalf("Index: %d ISBN failed Error: %s", i, errs)
|
1267 | 1157 |
}
|
1268 | 1158 |
} else {
|
1269 | |
if IsEqual(t, errs, nil) {
|
|
1159 |
if IsEqual(errs, nil) {
|
1270 | 1160 |
t.Fatalf("Index: %d ISBN failed Error: %s", i, errs)
|
1271 | 1161 |
} else {
|
1272 | 1162 |
val := errs[""]
|
|
1299 | 1189 |
errs := validate.Field(test.param, "isbn13")
|
1300 | 1190 |
|
1301 | 1191 |
if test.expected == true {
|
1302 | |
if !IsEqual(t, errs, nil) {
|
|
1192 |
if !IsEqual(errs, nil) {
|
1303 | 1193 |
t.Fatalf("Index: %d ISBN13 failed Error: %s", i, errs)
|
1304 | 1194 |
}
|
1305 | 1195 |
} else {
|
1306 | |
if IsEqual(t, errs, nil) {
|
|
1196 |
if IsEqual(errs, nil) {
|
1307 | 1197 |
t.Fatalf("Index: %d ISBN13 failed Error: %s", i, errs)
|
1308 | 1198 |
} else {
|
1309 | 1199 |
val := errs[""]
|
|
1337 | 1227 |
errs := validate.Field(test.param, "isbn10")
|
1338 | 1228 |
|
1339 | 1229 |
if test.expected == true {
|
1340 | |
if !IsEqual(t, errs, nil) {
|
|
1230 |
if !IsEqual(errs, nil) {
|
1341 | 1231 |
t.Fatalf("Index: %d ISBN10 failed Error: %s", i, errs)
|
1342 | 1232 |
}
|
1343 | 1233 |
} else {
|
1344 | |
if IsEqual(t, errs, nil) {
|
|
1234 |
if IsEqual(errs, nil) {
|
1345 | 1235 |
t.Fatalf("Index: %d ISBN10 failed Error: %s", i, errs)
|
1346 | 1236 |
} else {
|
1347 | 1237 |
val := errs[""]
|
|
2701 | 2591 |
errs := validate.Field(test.param, "url")
|
2702 | 2592 |
|
2703 | 2593 |
if test.expected == true {
|
2704 | |
if !IsEqual(t, errs, nil) {
|
|
2594 |
if !IsEqual(errs, nil) {
|
2705 | 2595 |
t.Fatalf("Index: %d URL failed Error: %s", i, errs)
|
2706 | 2596 |
}
|
2707 | 2597 |
} else {
|
2708 | |
if IsEqual(t, errs, nil) {
|
|
2598 |
if IsEqual(errs, nil) {
|
2709 | 2599 |
t.Fatalf("Index: %d URL failed Error: %s", i, errs)
|
2710 | 2600 |
} else {
|
2711 | 2601 |
val := errs[""]
|
|
2765 | 2655 |
errs := validate.Field(test.param, "uri")
|
2766 | 2656 |
|
2767 | 2657 |
if test.expected == true {
|
2768 | |
if !IsEqual(t, errs, nil) {
|
|
2658 |
if !IsEqual(errs, nil) {
|
2769 | 2659 |
t.Fatalf("Index: %d URI failed Error: %s", i, errs)
|
2770 | 2660 |
}
|
2771 | 2661 |
} else {
|
2772 | |
if IsEqual(t, errs, nil) {
|
|
2662 |
if IsEqual(errs, nil) {
|
2773 | 2663 |
t.Fatalf("Index: %d URI failed Error: %s", i, errs)
|
2774 | 2664 |
} else {
|
2775 | 2665 |
val := errs[""]
|