mirror of
https://github.com/pocketbase/pocketbase.git
synced 2025-03-20 14:31:09 +02:00
63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
|
package validators_test
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/pocketbase/pocketbase/core/validators"
|
||
|
)
|
||
|
|
||
|
func Equal(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
strA := "abc"
|
||
|
strB := "abc"
|
||
|
strC := "123"
|
||
|
var strNilPtr *string
|
||
|
var strNilPtr2 *string
|
||
|
|
||
|
scenarios := []struct {
|
||
|
valA any
|
||
|
valB any
|
||
|
expectError bool
|
||
|
}{
|
||
|
{nil, nil, false},
|
||
|
{"", "", false},
|
||
|
{"", "456", true},
|
||
|
{"123", "", true},
|
||
|
{"123", "456", true},
|
||
|
{"123", "123", false},
|
||
|
{true, false, true},
|
||
|
{false, true, true},
|
||
|
{false, false, false},
|
||
|
{true, true, false},
|
||
|
{0, 0, false},
|
||
|
{0, 1, true},
|
||
|
{1, 2, true},
|
||
|
{1, 1, false},
|
||
|
{&strA, &strA, false},
|
||
|
{&strA, &strB, false},
|
||
|
{&strA, &strC, true},
|
||
|
{"abc", &strA, false},
|
||
|
{&strA, "abc", false},
|
||
|
{"abc", &strC, true},
|
||
|
{"test", 123, true},
|
||
|
{nil, 123, true},
|
||
|
{nil, strA, true},
|
||
|
{nil, &strA, true},
|
||
|
{nil, strNilPtr, false},
|
||
|
{strNilPtr, strNilPtr2, false},
|
||
|
}
|
||
|
|
||
|
for i, s := range scenarios {
|
||
|
t.Run(fmt.Sprintf("%d_%v_%v", i, s.valA, s.valB), func(t *testing.T) {
|
||
|
err := validators.Equal(s.valA)(s.valB)
|
||
|
|
||
|
hasErr := err != nil
|
||
|
if hasErr != s.expectError {
|
||
|
t.Fatalf("Expected hasErr to be %v, got %v (%v)", s.expectError, hasErr, err)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|