groupware: improve JMAP integration tests for ContactCards

This commit is contained in:
Pascal Bleser
2025-11-18 17:36:39 +01:00
parent cf6496476a
commit 6ca0003859
5 changed files with 308 additions and 108 deletions

View File

@@ -176,3 +176,51 @@ func FirstKey[K comparable, V any](m map[K]V) *K {
}
return nil
}
func Any[E any](s []E, predicate func(E) bool) bool {
if len(s) < 1 {
return false
}
for _, e := range s {
if predicate(e) {
return true
}
}
return false
}
func AnyKey[K comparable, V any](m map[K]V, predicate func(K) bool) bool {
if len(m) < 1 {
return false
}
for k := range m {
if predicate(k) {
return true
}
}
return false
}
func AnyValue[K comparable, V any](m map[K]V, predicate func(V) bool) bool {
if len(m) < 1 {
return false
}
for _, v := range m {
if predicate(v) {
return true
}
}
return false
}
func AnyItem[K comparable, V any](m map[K]V, predicate func(K, V) bool) bool {
if len(m) < 1 {
return false
}
for k, v := range m {
if predicate(k, v) {
return true
}
}
return false
}

View File

@@ -121,3 +121,46 @@ func TestMissing(t *testing.T) {
})
}
}
func TestAny(t *testing.T) {
always := func(s string) bool { return true }
never := func(s string) bool { return false }
assert.True(t, Any([]string{"a", "b", "c"}, always))
assert.False(t, Any([]string{}, always))
assert.False(t, Any(nil, always))
assert.False(t, Any([]string{"a", "b", "c"}, never))
assert.False(t, Any(nil, never))
}
func TestAnyKey(t *testing.T) {
always := func(s string) bool { return true }
never := func(s string) bool { return false }
assert.True(t, AnyKey(map[string]bool{"a": true, "b": false}, always))
assert.False(t, AnyKey(map[string]bool{}, always))
assert.False(t, AnyKey[string, bool](nil, always))
assert.False(t, AnyKey(map[string]bool{"a": true, "b": false}, never))
assert.False(t, AnyKey[string, bool](nil, never))
}
func TestAnyValue(t *testing.T) {
always := func(b bool) bool { return true }
never := func(b bool) bool { return false }
assert.True(t, AnyValue(map[string]bool{"a": true, "b": false}, always))
assert.False(t, AnyValue(map[string]bool{}, always))
assert.False(t, AnyValue[string, bool](nil, always))
assert.False(t, AnyValue(map[string]bool{"a": true, "b": false}, never))
assert.False(t, AnyValue[string, bool](nil, never))
}
func TestAnyItem(t *testing.T) {
always := func(s string, b bool) bool { return true }
never := func(s string, b bool) bool { return false }
assert.True(t, AnyItem(map[string]bool{"a": true, "b": false}, always))
assert.False(t, AnyItem(map[string]bool{}, always))
assert.False(t, AnyItem[string, bool](nil, always))
assert.False(t, AnyItem(map[string]bool{"a": true, "b": false}, never))
assert.False(t, AnyItem[string, bool](nil, never))
}