some additional tests to callsign validation

pull/2/head
Jean-Marc MEESSEN 5 years ago
parent bb70d9b98d
commit 42274b1429

@ -42,20 +42,28 @@ func ValidateCall(sign string) (call, errorMsg string) {
if validCallRegexp.MatchString(sp[0]) { if validCallRegexp.MatchString(sp[0]) {
//Callisign with suffix (unchecked) //Callisign with suffix (unchecked)
return sign, "" return sign, ""
} else {
//Callsign with prefix
//validate the part that should contain the call (sp[1])
if !validCallRegexp.MatchString(sp[1]) {
return wrongSign, "Invalid call"
}
//validate the prefix
if !validPrefixRegexp.MatchString(sp[0]) {
return wrongSign, "Invalid prefix"
}
return sign, ""
} }
//else we are dealing with a prefixed Callsign
//validate the part that should contain the call (sp[1])
if !validCallRegexp.MatchString(sp[1]) {
return wrongSign, "Invalid call"
}
//validate the prefix
if !validPrefixRegexp.MatchString(sp[0]) {
return wrongSign, "Invalid prefix"
}
return sign, ""
case 3: case 3:
return sign, "??????" //validate the part that should contain the call (sp[1])
if !validCallRegexp.MatchString(sp[1]) {
return wrongSign, "Invalid call"
}
//validate the prefix
if !validPrefixRegexp.MatchString(sp[0]) {
return wrongSign, "Invalid prefix"
}
//We don't check the suffix
return sign, ""
} }
return sign, "?????" return wrongSign, "Too many '/'"
} }

@ -15,45 +15,63 @@ func TestValidateCall(t *testing.T) {
{ {
"Good call (simple)", "Good call (simple)",
args{ sign: "on4kjm", }, args{ sign: "on4kjm", },
"ON4KJM", "ON4KJM", "",
"",
}, },
{ {
"Good call (suffix)", "Good call (suffix)",
args{ sign: "on4kjm/p", }, args{ sign: "on4kjm/p", },
"ON4KJM/P", "ON4KJM/P", "",
"",
}, },
{ {
"Good call (prefix only)", "Good call (prefix only)",
args{ sign: "DL/on4KJm", }, args{ sign: "DL/on4KJm", },
"DL/ON4KJM", "DL/ON4KJM", "",
"",
}, },
{ {
"Good call (prefix and suffix)", "Good call (prefix and suffix)",
args{ sign: "DL/on4KJm/p", }, args{ sign: "DL/on4KJm/p", },
"DL/ON4KJM/P", "DL/ON4KJM/P", "",
"", },
{
"Good call (Numerical prefix)",
args{ sign: "4x/on4KJm/p", },
"4X/ON4KJM/P", "",
},
{
"Good call (prefix and long suffix)",
args{ sign: "DL/on4KJm/qrpp ", },
"DL/ON4KJM/QRPP", "",
}, },
//Error cases //Error cases
{ {
"Pure junk passed", "Pure junk passed",
args{ sign: "aaaaaa", }, args{ sign: "aaaaaa", },
"*AAAAAA", "*AAAAAA", "Invalid call",
"Invalid call",
}, },
{ {
"empty string", "empty string",
args{ sign: "", }, args{ sign: "", },
"*", "*", "Invalid call",
"Invalid call",
}, },
{ {
"string with spaces", "string with spaces",
args{ sign: " ", }, args{ sign: " ", },
"*", "*", "Invalid call",
"Invalid call", },
{
"invalid prefix",
args{ sign: "xyz/on4kjm", },
"*XYZ/ON4KJM", "Invalid prefix",
},
{
"Too many /",
args{ sign: "F/on4kjm/p/x", },
"*F/ON4KJM/P/X", "Too many '/'",
},
{
"signe /",
args{ sign: "/", },
"*/", "Invalid call",
}, },
} }
for _, tt := range tests { for _, tt := range tests {

Loading…
Cancel
Save