57 lines
1.0 KiB
Go
57 lines
1.0 KiB
Go
|
package common
|
||
|
|
||
|
import "testing"
|
||
|
|
||
|
func TestIsValidPIN(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
pin string
|
||
|
expected bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid PIN with 4 digits",
|
||
|
pin: "1234",
|
||
|
expected: true,
|
||
|
},
|
||
|
{
|
||
|
name: "Valid PIN with leading zeros",
|
||
|
pin: "0001",
|
||
|
expected: true,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid PIN with less than 4 digits",
|
||
|
pin: "123",
|
||
|
expected: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid PIN with more than 4 digits",
|
||
|
pin: "12345",
|
||
|
expected: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid PIN with letters",
|
||
|
pin: "abcd",
|
||
|
expected: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid PIN with special characters",
|
||
|
pin: "12@#",
|
||
|
expected: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Empty PIN",
|
||
|
pin: "",
|
||
|
expected: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
actual := IsValidPIN(tt.pin)
|
||
|
if actual != tt.expected {
|
||
|
t.Errorf("IsValidPIN(%q) = %v; expected %v", tt.pin, actual, tt.expected)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|