forked from yuin/gopher-lua
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstringlib_rep_test.go
More file actions
109 lines (96 loc) · 3.55 KB
/
stringlib_rep_test.go
File metadata and controls
109 lines (96 loc) · 3.55 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package lua
import (
"testing"
)
func TestStringRep(t *testing.T) {
L := NewState()
defer L.Close()
// Тест: повторение без разделителя
if err := L.DoString(`result = string.rep("ab", 3)`); err != nil {
t.Fatal(err)
}
result := L.GetField(L.Get(EnvironIndex), "result").String()
if result != "ababab" {
t.Errorf("string.rep(\"ab\", 3) = %q, expected \"ababab\"", result)
}
// Тест: повторение с разделителем
if err := L.DoString(`result = string.rep("ab", 3, "-")`); err != nil {
t.Fatal(err)
}
result = L.GetField(L.Get(EnvironIndex), "result").String()
if result != "ab-ab-ab" {
t.Errorf("string.rep(\"ab\", 3, \"-\") = %q, expected \"ab-ab-ab\"", result)
}
// Тест: повторение с пустым разделителем
if err := L.DoString(`result = string.rep("ab", 3, "")`); err != nil {
t.Fatal(err)
}
result = L.GetField(L.Get(EnvironIndex), "result").String()
if result != "ababab" {
t.Errorf("string.rep(\"ab\", 3, \"\") = %q, expected \"ababab\"", result)
}
// Тест: повторение 0 раз
if err := L.DoString(`result = string.rep("ab", 0)`); err != nil {
t.Fatal(err)
}
result = L.GetField(L.Get(EnvironIndex), "result").String()
if result != "" {
t.Errorf("string.rep(\"ab\", 0) = %q, expected \"\"", result)
}
// Тест: повторение отрицательное число раз
if err := L.DoString(`result = string.rep("ab", -1)`); err != nil {
t.Fatal(err)
}
result = L.GetField(L.Get(EnvironIndex), "result").String()
if result != "" {
t.Errorf("string.rep(\"ab\", -1) = %q, expected \"\"", result)
}
// Тест: повторение 1 раз
if err := L.DoString(`result = string.rep("ab", 1)`); err != nil {
t.Fatal(err)
}
result = L.GetField(L.Get(EnvironIndex), "result").String()
if result != "ab" {
t.Errorf("string.rep(\"ab\", 1) = %q, expected \"ab\"", result)
}
// Тест: повторение с длинным разделителем
if err := L.DoString(`result = string.rep("x", 4, "---")`); err != nil {
t.Fatal(err)
}
result = L.GetField(L.Get(EnvironIndex), "result").String()
if result != "x---x---x---x" {
t.Errorf("string.rep(\"x\", 4, \"---\") = %q, expected \"x---x---x---x\"", result)
}
// Тест: повторение пустой строки
if err := L.DoString(`result = string.rep("", 5)`); err != nil {
t.Fatal(err)
}
result = L.GetField(L.Get(EnvironIndex), "result").String()
if result != "" {
t.Errorf("string.rep(\"\", 5) = %q, expected \"\"", result)
}
// Тест: повторение с разделителем для одного элемента
if err := L.DoString(`result = string.rep("ab", 1, "-")`); err != nil {
t.Fatal(err)
}
result = L.GetField(L.Get(EnvironIndex), "result").String()
if result != "ab" {
t.Errorf("string.rep(\"ab\", 1, \"-\") = %q, expected \"ab\"", result)
}
// Тест: повторение с разделителем для двух элементов
if err := L.DoString(`result = string.rep("ab", 2, "-")`); err != nil {
t.Fatal(err)
}
result = L.GetField(L.Get(EnvironIndex), "result").String()
if result != "ab-ab" {
t.Errorf("string.rep(\"ab\", 2, \"-\") = %q, expected \"ab-ab\"", result)
}
// Тест: Unicode строка с разделителем
if err := L.DoString(`result = string.rep("аб", 3, "|")`); err != nil {
t.Fatal(err)
}
result = L.GetField(L.Get(EnvironIndex), "result").String()
if result != "аб|аб|аб" {
t.Errorf("string.rep(\"аб\", 3, \"|\") = %q, expected \"аб|аб|аб\"", result)
}
}