ics - folder_test.go
1 package ics
2
3 import (
4 "bytes"
5 "io"
6 "strings"
7 "testing"
8 "unicode/utf8"
9 )
10
11 func TestFolder(t *testing.T) {
12 tests := []struct {
13 Input, Output string
14 }{
15 {"A", "A"},
16 {"AB", "AB"},
17 {"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW\r\n XYZ"},
18 {"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW\r\n XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRS\r\n TUVWXYZ"},
19 {"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ\r\nABCDEFGHIJKLMNOPQRSTUVWXYZ", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ\r\nABCDEFGHIJKLMNOPQRSTUVWXYZ"},
20 {"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV€XYZ", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV\r\n €XYZ"},
21 }
22 var buf bytes.Buffer
23 for n, test := range tests {
24 io.Copy(&folder{w: &buf}, strings.NewReader(test.Input))
25 if str := buf.String(); str != test.Output {
26 t.Errorf("test %d.1: expecting output %q, got %q", n+1, test.Output, str)
27 }
28 buf.Reset()
29 f := &folder{w: &buf}
30 var b [4]byte
31 for _, r := range test.Input {
32 s := utf8.EncodeRune(b[:], r)
33 f.Write(b[:s])
34 }
35 if str := buf.String(); str != test.Output {
36 t.Errorf("test %d.2: expecting output %q, got %q", n+1, test.Output, str)
37 }
38 buf.Reset()
39 }
40 }