-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtable_test.go
More file actions
92 lines (79 loc) · 2.05 KB
/
table_test.go
File metadata and controls
92 lines (79 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// SPDX-License-Identifier: MIT
// Copyright (c) 2026 WoozyMasta
// Source: github.com/woozymasta/stringtable
package stringtable
import (
"errors"
"strings"
"testing"
)
func TestParseCSVDuplicateKey(t *testing.T) {
t.Parallel()
input := "" +
`Language,original,english` + "\n" +
`UI_OK,OK,OK` + "\n" +
`UI_OK,Another,Another` + "\n"
_, err := ParseCSVReader(strings.NewReader(input))
if err == nil {
t.Fatal("ParseCSVReader error = nil, want duplicate key error")
}
if !errors.Is(err, ErrDuplicateKey) {
t.Fatalf("error = %v, want ErrDuplicateKey", err)
}
}
func TestFormatCSVWritesAllDefaultLanguagesByDefault(t *testing.T) {
t.Parallel()
table := &Table{
Languages: []string{"english", "russian"},
Rows: []Row{
{
Key: "UI_OK",
Original: "OK",
Translations: map[string]string{
"english": "OK",
"russian": "Ок",
},
},
},
}
data, err := FormatCSV(table)
if err != nil {
t.Fatalf("FormatCSV error: %v", err)
}
header := strings.Split(strings.TrimSpace(string(data)), "\n")[0]
for _, language := range DefaultLanguages {
if !strings.Contains(header, ","+language) &&
!strings.HasSuffix(header, ","+language+"\r") {
t.Fatalf("header misses default language %q: %q", language, header)
}
}
}
func TestFormatCSVWithOptionsUseTableLanguagesOnly(t *testing.T) {
t.Parallel()
table := &Table{
Languages: []string{"english", "russian"},
Rows: []Row{
{
Key: "UI_OK",
Original: "OK",
Translations: map[string]string{
"english": "OK",
"russian": "Ок",
},
},
},
}
data, err := FormatCSVWithOptions(table, &WriteOptions{
UseTableLanguagesOnly: true,
})
if err != nil {
t.Fatalf("FormatCSVWithOptions error: %v", err)
}
header := strings.Split(strings.TrimSpace(string(data)), "\n")[0]
if strings.Contains(header, ",german") {
t.Fatalf("header contains unexpected default language: %q", header)
}
if !strings.Contains(header, ",english") || !strings.Contains(header, ",russian") {
t.Fatalf("header misses expected table languages: %q", header)
}
}