]> git.giacomolli.uk - onechat/blob - view_layout_test.go
Name the tools that check the Go rules
[onechat] / view_layout_test.go
1 package main
2
3 import (
4 "path/filepath"
5 "testing"
6
7 "github.com/stretchr/testify/require"
8 )
9
10 func TestViewLayoutKeepsTheMessagesItSent(t *testing.T) {
11 path := filepath.Join(t.TempDir(), viewLayoutFileName)
12 layout, err := loadViewLayout(path)
13 require.NoError(t, err)
14
15 texts, err := layout.Split(nil)
16 require.NoError(t, err)
17 require.Equal(t, []string{"<chat>\n"}, texts)
18
19 texts, err = layout.Split([]string{"0+1|a\n", "1+1|b\n"})
20 require.NoError(t, err)
21 require.Equal(t, []string{"<chat>\n", "0+1|a\n1+1|b\n"}, texts)
22
23 // The same lines give the same messages, also after a restart.
24 layout, err = loadViewLayout(path)
25 require.NoError(t, err)
26
27 texts, err = layout.Split([]string{"0+1|a\n", "1+1|b\n"})
28 require.NoError(t, err)
29 require.Equal(t, []string{"<chat>\n", "0+1|a\n1+1|b\n"}, texts)
30
31 texts, err = layout.Split([]string{"0+1|a\n", "1+1|b\n", "2+1|c\n"})
32 require.NoError(t, err)
33 require.Equal(t, []string{"<chat>\n", "0+1|a\n1+1|b\n", "2+1|c\n"}, texts)
34 }
35
36 func TestViewLayoutStartsAgainAtAChangedMessage(t *testing.T) {
37 layout, err := loadViewLayout(filepath.Join(t.TempDir(), viewLayoutFileName))
38 require.NoError(t, err)
39
40 _, err = layout.Split([]string{"0+1|a\n"})
41 require.NoError(t, err)
42
43 _, err = layout.Split([]string{"0+1|a\n", "1+1|b\n", "2+1|c\n"})
44 require.NoError(t, err)
45
46 // A batch merges lines 1 and 2, so the second message changes, and the
47 // rest becomes one new message.
48 texts, err := layout.Split([]string{"0+1|a\n", "1+2|b c\n", "3+1|d\n"})
49 require.NoError(t, err)
50 require.Equal(t, []string{"<chat>\n0+1|a\n", "1+2|b c\n3+1|d\n"}, texts)
51
52 // A view that lost lines starts again with one message.
53 texts, err = layout.Split([]string{"0+4|all\n"})
54 require.NoError(t, err)
55 require.Equal(t, []string{"<chat>\n0+4|all\n"}, texts)
56 }