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}},