}
func TestFreeMergeJoinsShortSiblings(t *testing.T) {
- left := testNode(1, 2, "left")
- right := testNode(1, 3, "right")
+ left := treeTestNode(1, 2, "left")
+ right := treeTestNode(1, 3, "right")
node, free := freeMerge(left, right)
require.True(t, free)
- require.Equal(t, testNode(2, 1, "left\nright"), node)
+ require.Equal(t, treeTestNode(2, 1, "left\nright"), node)
- right = testNode(1, 3, strings.Repeat("r", nodeBytes-len("left")))
+ right = treeTestNode(1, 3, strings.Repeat("r", nodeBytes-len("left")))
_, free = freeMerge(left, right)
require.False(t, free)
}
require.NoError(t, tree.Close())
}()
- require.NoError(t, tree.Add(testNode(0, 0, "user: a")))
- require.ErrorContains(t, tree.Add(testNode(0, 0, "user: b")), "already built")
- require.ErrorContains(t, tree.Add(testNode(1, 0, "a b")), "child that is not built")
+ require.NoError(t, tree.Add(treeTestNode(0, 0, "user: a")))
+ require.ErrorContains(t, tree.Add(treeTestNode(0, 0, "user: b")), "already built")
+ require.ErrorContains(t, tree.Add(treeTestNode(1, 0, "a b")), "child that is not built")
- require.NoError(t, tree.Add(testNode(0, 1, "reply: b")))
- require.NoError(t, tree.Add(testNode(1, 0, "a b")))
+ require.NoError(t, tree.Add(treeTestNode(0, 1, "reply: b")))
+ require.NoError(t, tree.Add(treeTestNode(1, 0, "a b")))
- require.Equal(t, "user: a", readNode(t, tree, 0, 0).Text)
+ require.Equal(t, "user: a", treeReadNode(t, tree, 0, 0).Text)
}
func TestTreeReopenLoadsTheSameNodes(t *testing.T) {
require.NoError(t, err)
nodes := []Node{
- testNode(0, 1, "reply: b"),
- testNode(0, 0, "user: a"),
- testNode(1, 0, "user: a\nreply: b"),
+ treeTestNode(0, 1, "reply: b"),
+ treeTestNode(0, 0, "user: a"),
+ treeTestNode(1, 0, "user: a\nreply: b"),
}
for _, node := range nodes {
require.NoError(t, tree.Add(node))
require.Equal(t, len(nodes), tree.Count())
for _, node := range nodes {
- require.Equal(t, node, readNode(t, tree, node.Level, node.Index))
+ require.Equal(t, node, treeReadNode(t, tree, node.Level, node.Index))
}
}
require.NoError(t, err)
nodes := []Node{
- testNode(0, 1, "reply: b"),
- testNode(0, 0, "user: a"),
- testNode(1, 0, "user: a\nreply: b"),
+ treeTestNode(0, 1, "reply: b"),
+ treeTestNode(0, 0, "user: a"),
+ treeTestNode(1, 0, "user: a\nreply: b"),
}
for _, node := range nodes {
require.NoError(t, tree.Add(node))
require.Equal(t, len(nodes), tree.Count())
for _, node := range nodes {
- require.Equal(t, node, readNode(t, tree, node.Level, node.Index))
+ require.Equal(t, node, treeReadNode(t, tree, node.Level, node.Index))
}
}
tree, err := openTree(t.Context(), root, 2, clock.Now)
require.NoError(t, err)
- require.NoError(t, tree.Add(testNode(0, 0, "user: a")))
- require.NoError(t, tree.Add(testNode(0, 1, "reply: b")))
+ require.NoError(t, tree.Add(treeTestNode(0, 0, "user: a")))
+ require.NoError(t, tree.Add(treeTestNode(0, 1, "reply: b")))
require.NoError(t, tree.Close())
// A crash after the line write and in the middle of the index writes.
}()
require.Equal(t, 2, tree.Count())
- require.Equal(t, "reply: b", readNode(t, tree, 0, 1).Text)
- require.NoError(t, tree.Add(testNode(1, 0, "user: a\nreply: b")))
-}
-
-// isBuilt tells if the node (l, i) of tree is built.
-func isBuilt(t *testing.T, tree *Tree, level, index int) bool {
- t.Helper()
-
- built, err := tree.Built(level, index)
- require.NoError(t, err)
-
- return built
-}
-
-// readNode reads the node (l, i) of tree, which must be built.
-func readNode(t *testing.T, tree *Tree, level, index int) Node {
- t.Helper()
-
- node, built, err := tree.Node(level, index)
- require.NoError(t, err)
- require.True(t, built, "node (%d, %d)", level, index)
-
- return node
-}
-
-func testNode(level, index int, text string) Node {
- return Node{
- Level: level,
- Index: index,
- Text: text,
- Size: len(text),
- }
+ require.Equal(t, "reply: b", treeReadNode(t, tree, 0, 1).Text)
+ require.NoError(t, tree.Add(treeTestNode(1, 0, "user: a\nreply: b")))
}