Skip to main content
Glama
tree_test.go1.58 kB
package collections import ( "fmt" "iter" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func Test_Tree_Implements_TreeProvider(t *testing.T) { var _ TreeProvider[fmt.Stringer] = &Tree[fmt.Stringer]{} assert.Implements(t, (*TreeProvider[fmt.Stringer])(nil), &Tree[fmt.Stringer]{}) } type testTreeNode struct { val int children []*testTreeNode } func (n *testTreeNode) Node() *testTreeNode { return n } func (n *testTreeNode) Children() iter.Seq[TreeProvider[*testTreeNode]] { return iter.Seq[TreeProvider[*testTreeNode]](func(yield func(TreeProvider[*testTreeNode]) bool) { for _, child := range n.children { if !yield(child) { break } } }) } func Test_CopyTree(t *testing.T) { root := &testTreeNode{ val: 1, children: []*testTreeNode{ {val: 2}, {val: 3}, {val: 4}, }, } result := CopyTree(root) require.Equal(t, 1, result.node.val) require.Equal(t, 3, len(result.children)) require.Equal(t, 2, result.children[0].Node().val) require.Equal(t, 3, result.children[1].Node().val) require.Equal(t, 4, result.children[2].Node().val) } // func Test_FilterTree(t *testing.T) { // root := &testTreeNode{ // val: 1, children: []*testTreeNode{ // {val: 2}, // {val: 3}, // {val: 4}, // }, // } // result := FilterTree(root, func(node *testTreeNode) bool { // return node.val%2 != 0 // }) // require.NotNil(t, result) // require.Equal(t, 1, result.node.val) // require.Equal(t, 1, len(result.children)) // require.Equal(t, 3, result.children[0].Node().val) // }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mholzen/workflowy'

If you have feedback or need assistance with the MCP directory API, please join our Discord server