src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/eval/vals/has_key_test.go (about) 1 package vals 2 3 import ( 4 "testing" 5 6 "src.elv.sh/pkg/tt" 7 ) 8 9 type hasKeyer struct{ key any } 10 11 func (h hasKeyer) HasKey(k any) bool { return k == h.key } 12 13 func TestHasKey(t *testing.T) { 14 tt.Test(t, HasKey, 15 // Map 16 Args(MakeMap("k", "v"), "k").Rets(true), 17 Args(MakeMap("k", "v"), "bad").Rets(false), 18 // HasKeyer 19 Args(hasKeyer{"valid"}, "valid").Rets(true), 20 Args(hasKeyer{"valid"}, "invalid").Rets(false), 21 // Fallback to IterateKeys 22 Args(keysIterator{vs("lorem")}, "lorem").Rets(true), 23 Args(keysIterator{vs("lorem")}, "ipsum").Rets(false), 24 // Fallback to Len 25 Args(MakeList("lorem", "ipsum"), "0").Rets(true), 26 Args(MakeList("lorem", "ipsum"), "0..").Rets(true), 27 Args(MakeList("lorem", "ipsum"), "0..=").Rets(true), 28 Args(MakeList("lorem", "ipsum"), "..2").Rets(true), 29 Args(MakeList("lorem", "ipsum"), "..=2").Rets(false), 30 Args(MakeList("lorem", "ipsum"), "2").Rets(false), 31 Args(MakeList("lorem", "ipsum", "dolor", "sit"), "0..4").Rets(true), 32 Args(MakeList("lorem", "ipsum", "dolor", "sit"), "0..=4").Rets(false), 33 Args(MakeList("lorem", "ipsum", "dolor", "sit"), "1..3").Rets(true), 34 Args(MakeList("lorem", "ipsum", "dolor", "sit"), "1..5").Rets(false), 35 Args(MakeList("lorem", "ipsum", "dolor", "sit"), "-2..=-1").Rets(true), 36 37 // Non-container 38 Args(1, "0").Rets(false), 39 ) 40 }