X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/9f17bfb1173524553fff5301b0664267b430e6e3..e754189bc2aa32ec43a5dc4ee01d7a6c6e4e388c:/view_test.go?ds=sidebyside diff --git a/view_test.go b/view_test.go index be38873..0162f28 100644 --- a/view_test.go +++ b/view_test.go @@ -90,6 +90,45 @@ func TestViewRendersPendingLinesWithoutTheirMessage(t *testing.T) { 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, "\n", view.Context(tree, 0)) + require.Equal(t, "\n0+2|a\n", view.Context(tree, 2)) + require.Equal(t, "\n0+2|a\n", view.Context(tree, 3)) +} + func TestRestoreViewRejectsAGap(t *testing.T) { _, err := restoreView(viewState{ Lines: [][2]int{{0, 0}, {0, 2}},