Passed
Push — master ( b486cf...8123a4 )
by Serhii
02:01 queued 28s
created

tests/ru_test.go   A

Size/Duplication

Total Lines 169
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 13
eloc 143
dl 0
loc 169
rs 10
c 0
b 0
f 0
1
package tests
2
3
import (
4
	"testing"
5
	"time"
6
7
	. "github.com/SerhiiCho/timeago"
8
)
9
10
func TestParseRu(t *testing.T) {
11
	cases := []struct {
12
		date   string
13
		result string
14
	}{
15
		{smallSubTime(-60 * time.Second), "1 минута назад"},
16
		{smallSubTime(-1 * time.Minute), "1 минута назад"},
17
		{smallSubTime(-2 * time.Minute), "2 минуты назад"},
18
		{smallSubTime(-5 * time.Minute), "5 минут назад"},
19
		{smallSubTime(-9 * time.Minute), "9 минут назад"},
20
		{smallSubTime(-10 * time.Minute), "10 минут назад"},
21
		{smallSubTime(-11 * time.Minute), "11 минут назад"},
22
		{smallSubTime(-20 * time.Minute), "20 минут назад"},
23
		{smallSubTime(-21 * time.Minute), "21 минута назад"},
24
		{smallSubTime(-22 * time.Minute), "22 минуты назад"},
25
		{smallSubTime(-30 * time.Minute), "30 минут назад"},
26
		{smallSubTime(-31 * time.Minute), "31 минута назад"},
27
		{smallSubTime(-59 * time.Minute), "59 минут назад"},
28
		{smallSubTime(-60 * time.Minute), "1 час назад"},
29
		{smallSubTime(-1 * time.Hour), "1 час назад"},
30
		{smallSubTime(-2 * time.Hour), "2 часа назад"},
31
		{smallSubTime(-9 * time.Hour), "9 часов назад"},
32
		{smallSubTime(-10 * time.Hour), "10 часов назад"},
33
		{smallSubTime(-11 * time.Hour), "11 часов назад"},
34
		{smallSubTime(-20 * time.Hour), "20 часов назад"},
35
		{smallSubTime(-21 * time.Hour), "21 час назад"},
36
		{smallSubTime(-23 * time.Hour), "23 часа назад"},
37
		{smallSubTime(-24 * time.Hour), "1 день назад"},
38
		{smallSubTime(-30 * time.Hour), "1 день назад"},
39
		{smallSubTime((-24 * 2) * time.Hour), "2 дня назад"},
40
		{smallSubTime((-24 * 6) * time.Hour), "6 дней назад"},
41
		{smallSubTime((-24 * 7) * time.Hour), "1 неделя назад"},
42
		{smallSubTime((-24 * 14) * time.Hour), "2 недели назад"},
43
		{smallSubTime((-24 * 21) * time.Hour), "3 недели назад"},
44
		{bigSubTime(0, 1, 1), "1 месяц назад"},
45
		{bigSubTime(0, 2, 1), "2 месяца назад"},
46
		{bigSubTime(0, 9, 1), "9 месяцев назад"},
47
		{bigSubTime(0, 11, 1), "11 месяцев назад"},
48
		{bigSubTime(0, 12, 1), "1 год назад"},
49
		{bigSubTime(1, 0, 1), "1 год назад"},
50
		{bigSubTime(2, 0, 1), "2 года назад"},
51
		{bigSubTime(5, 0, 1), "5 лет назад"},
52
		{bigSubTime(6, 0, 1), "6 лет назад"},
53
		{bigSubTime(7, 0, 1), "7 лет назад"},
54
		{bigSubTime(21, 0, 1), "21 год назад"},
55
		{bigSubTime(31, 0, 1), "31 год назад"},
56
		{bigSubTime(100, 0, 1), "100 лет назад"},
57
	}
58
59
	for _, tc := range cases {
60
		t.Run("result for "+tc.date, func(test *testing.T) {
61
			SetConfig(Config{
62
				Language: "ru",
63
				Location: "Europe/Kiev",
64
			})
65
66
			if res := Parse(tc.date); res != tc.result {
67
				test.Errorf("Result must be %s, but got %s instead", tc.result, res)
68
			}
69
		})
70
	}
71
}
72
73
func TestParseRuWithOnlineFlag(t *testing.T) {
74
	cases := []struct {
75
		date   string
76
		result string
77
	}{
78
		{smallSubTime(time.Second * 2), "В сети"},
79
		{smallSubTime(time.Second), "В сети"},
80
		{smallSubTime(-1 * time.Second), "В сети"},
81
		{smallSubTime(-2 * time.Second), "В сети"},
82
		{smallSubTime(-9 * time.Second), "В сети"},
83
		{smallSubTime(-10 * time.Second), "В сети"},
84
		{smallSubTime(-11 * time.Second), "В сети"},
85
		{smallSubTime(-20 * time.Second), "В сети"},
86
		{smallSubTime(-21 * time.Second), "В сети"},
87
		{smallSubTime(-22 * time.Second), "В сети"},
88
		{smallSubTime(-30 * time.Second), "В сети"},
89
		{smallSubTime(-31 * time.Second), "В сети"},
90
		{smallSubTime(-60 * time.Second), "1 минута назад"},
91
		{smallSubTime(-1 * time.Minute), "1 минута назад"},
92
		{smallSubTime(-2 * time.Minute), "2 минуты назад"},
93
		{smallSubTime(-9 * time.Minute), "9 минут назад"},
94
		{smallSubTime(-10 * time.Minute), "10 минут назад"},
95
		{smallSubTime(-11 * time.Minute), "11 минут назад"},
96
		{smallSubTime(-20 * time.Minute), "20 минут назад"},
97
		{smallSubTime(-21 * time.Minute), "21 минута назад"},
98
		{smallSubTime(-22 * time.Minute), "22 минуты назад"},
99
		{smallSubTime(-30 * time.Minute), "30 минут назад"},
100
		{smallSubTime(-31 * time.Minute), "31 минута назад"},
101
		{smallSubTime(-60 * time.Minute), "1 час назад"},
102
		{smallSubTime(-1 * time.Hour), "1 час назад"},
103
		{smallSubTime(-2 * time.Hour), "2 часа назад"},
104
		{smallSubTime(-9 * time.Hour), "9 часов назад"},
105
		{smallSubTime(-10 * time.Hour), "10 часов назад"},
106
		{smallSubTime(-11 * time.Hour), "11 часов назад"},
107
		{smallSubTime(-20 * time.Hour), "20 часов назад"},
108
		{smallSubTime(-21 * time.Hour), "21 час назад"},
109
		{smallSubTime(-23 * time.Hour), "23 часа назад"},
110
		{smallSubTime(-24 * time.Hour), "1 день назад"},
111
		{smallSubTime(-30 * time.Hour), "1 день назад"},
112
		{smallSubTime((-24 * 2) * time.Hour), "2 дня назад"},
113
		{smallSubTime((-24 * 6) * time.Hour), "6 дней назад"},
114
		{smallSubTime((-24 * 7) * time.Hour), "1 неделя назад"},
115
		{smallSubTime((-24 * 14) * time.Hour), "2 недели назад"},
116
		{smallSubTime((-24 * 21) * time.Hour), "3 недели назад"},
117
		{bigSubTime(0, 1, 1), "1 месяц назад"},
118
		{bigSubTime(0, 2, 1), "2 месяца назад"},
119
		{bigSubTime(0, 9, 1), "9 месяцев назад"},
120
		{bigSubTime(0, 11, 1), "11 месяцев назад"},
121
		{bigSubTime(0, 12, 1), "1 год назад"},
122
		{bigSubTime(1, 0, 1), "1 год назад"},
123
		{bigSubTime(2, 0, 1), "2 года назад"},
124
		{bigSubTime(5, 0, 1), "5 лет назад"},
125
		{bigSubTime(6, 0, 1), "6 лет назад"},
126
		{bigSubTime(7, 0, 1), "7 лет назад"},
127
		{bigSubTime(21, 0, 1), "21 год назад"},
128
		{bigSubTime(31, 0, 1), "31 год назад"},
129
		{bigSubTime(100, 0, 1), "100 лет назад"},
130
	}
131
132
	for _, tc := range cases {
133
		t.Run("result for "+tc.date, func(test *testing.T) {
134
135
			SetConfig(Config{
136
				Language: "ru",
137
			})
138
139
			if res := Parse(tc.date, "online"); res != tc.result {
140
				test.Errorf("Result must be %s, but got %s instead", tc.result, res)
141
			}
142
		})
143
	}
144
}
145
146
func TestParseRuWithSeconds(t *testing.T) {
147
	cases := []struct {
148
		date   string
149
		result []string
150
	}{
151
		{smallSubTime(time.Second * 2), []string{"0 секунд назад", "1 секунда назад"}},
152
		{smallSubTime(time.Second), []string{"0 секунд назад", "1 секунда назад"}},
153
		{smallSubTime(-1 * time.Second), []string{"1 секунда назад", "2 секунды назад"}},
154
		{smallSubTime(-2 * time.Second), []string{"2 секунды назад", "3 секунды назад"}},
155
		{smallSubTime(-3 * time.Second), []string{"3 секунды назад", "4 секунды назад"}},
156
		{smallSubTime(-4 * time.Second), []string{"4 секунды назад", "5 секунд назад"}},
157
		{smallSubTime(-9 * time.Second), []string{"9 секунд назад", "10 секунд назад"}},
158
		{smallSubTime(-10 * time.Second), []string{"10 секунд назад", "11 секунд назад"}},
159
		{smallSubTime(-11 * time.Second), []string{"11 секунд назад", "12 секунд назад"}},
160
		{smallSubTime(-29 * time.Second), []string{"29 секунд назад", "30 секунд назад"}},
161
		{smallSubTime(-30 * time.Second), []string{"30 секунд назад", "31 секунда назад"}},
162
		{smallSubTime(-31 * time.Second), []string{"31 секунда назад", "32 секунды назад"}},
163
	}
164
165
	for _, tc := range cases {
166
		t.Run("result for "+tc.date, func(test *testing.T) {
167
			SetConfig(Config{
168
				Language: "ru",
169
				Location: "Europe/Kiev",
170
			})
171
172
			if res := Parse(tc.date); res != tc.result[0] && res != tc.result[1] {
173
				test.Errorf("Result must be %s or %s, but got %s instead", tc.result[0], tc.result[1], res)
174
			}
175
		})
176
	}
177
}
178