]> git.giacomolli.uk - onechat/blobdiff - view_test.go
Build the nodes from a queue in the background
[onechat] / view_test.go
index be38873b046391c7c260feda0ffab933e5f24da8..0162f28d43617a85da1e7a40767ebe52163ac408 100644 (file)
@@ -90,6 +90,45 @@ func TestViewRendersPendingLinesWithoutTheirMessage(t *testing.T) {
        require.Equal(t, 7+len(pending), view.Size(tree))
 }
 
        require.Equal(t, 7+len(pending), view.Size(tree))
 }
 
+func TestViewCoarsenTakesTheCoarserLines(t *testing.T) {
+       view, err := restoreView(viewState{
+               Lines: [][2]int{{1, 0}, {0, 2}, {0, 3}, {0, 4}, {0, 5}},
+       }, 100, 100, builtTree{})
+       require.NoError(t, err)
+
+       other, err := restoreView(viewState{
+               Lines: [][2]int{{0, 0}, {0, 1}, {1, 1}, {0, 4}, {0, 5}},
+       }, 100, 100, builtTree{})
+       require.NoError(t, err)
+
+       view.Coarsen(other, builtTree{})
+       require.Equal(t, []nodeKey{{1, 0}, {1, 1}, {0, 4}, {0, 5}}, view.lines)
+
+       view.low = 2
+       view.Coarsen(other, builtTree{})
+       require.Equal(t, []nodeKey{{2, 0}, {1, 2}}, view.lines)
+       require.False(t, view.merging)
+}
+
+func TestViewContextStopsAtTheFirstPendingLine(t *testing.T) {
+       tree := partTree{
+               sizes: map[nodeKey]int{
+                       {0, 0}: 1,
+                       {0, 1}: 1,
+                       {1, 0}: 1,
+                       {0, 3}: 1,
+               },
+       }
+
+       view, err := restoreView(viewState{
+               Lines: [][2]int{{1, 0}, {0, 2}, {0, 3}},
+       }, 100, 100, tree)
+       require.NoError(t, err)
+       require.Equal(t, "<chat>\n</chat>", view.Context(tree, 0))
+       require.Equal(t, "<chat>\n0+2|a\n</chat>", view.Context(tree, 2))
+       require.Equal(t, "<chat>\n0+2|a\n</chat>", view.Context(tree, 3))
+}
+
 func TestRestoreViewRejectsAGap(t *testing.T) {
        _, err := restoreView(viewState{
                Lines: [][2]int{{0, 0}, {0, 2}},
 func TestRestoreViewRejectsAGap(t *testing.T) {
        _, err := restoreView(viewState{
                Lines: [][2]int{{0, 0}, {0, 2}},