package functional_test import ( "testing" . "github.com/yusing/go-proxy/internal/utils/functional" . "github.com/yusing/go-proxy/internal/utils/testing" ) func TestNewMapFrom(t *testing.T) { m := NewMapFrom(map[string]int{ "a": 1, "b": 2, "c": 3, }) ExpectEqual(t, m.Size(), 3) ExpectTrue(t, m.Has("a")) ExpectTrue(t, m.Has("b")) ExpectTrue(t, m.Has("c")) } func TestMapFind(t *testing.T) { m := NewMapFrom(map[string]map[string]int{ "a": { "a": 1, }, "b": { "a": 1, "b": 2, }, "c": { "b": 2, "c": 3, }, }) res := MapFind(m, func(inner map[string]int) (int, bool) { if _, ok := inner["c"]; ok && inner["c"] == 3 { return inner["c"], true } return 0, false }) ExpectEqual(t, res, 3) } func TestMergeFrom(t *testing.T) { m1 := NewMapFrom(map[string]int{ "a": 1, "b": 2, "c": 3, "d": 4, }) m2 := NewMapFrom(map[string]int{ "a": 1, "c": 123, "e": 456, "f": 6, }) dup := m1.MergeFrom(m2) ExpectEqual(t, m1.Size(), 6) ExpectTrue(t, m1.Has("e")) ExpectTrue(t, m1.Has("f")) c, _ := m1.Load("c") d, _ := m1.Load("d") e, _ := m1.Load("e") f, _ := m1.Load("f") ExpectEqual(t, c, 3) ExpectEqual(t, d, 4) ExpectEqual(t, e, 456) ExpectEqual(t, f, 6) ExpectEqual(t, dup.Size(), 2) ExpectTrue(t, dup.Has("a")) ExpectTrue(t, dup.Has("c")) }