Passed
Pull Request — main (#40)
by Serhii
01:18
created

tests/uk_test.go   A

Size/Duplication

Total Lines 119
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 11
eloc 95
dl 0
loc 119
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
B tests.TestParseUk 0 72 5
B tests.TestParseUkWithSeconds 0 31 6
1
package tests
2
3
import (
4
	"testing"
5
	"time"
6
7
	"github.com/SerhiiCho/timeago/v3"
8
)
9
10
const langUk = "uk"
11
12
func TestParseUk(t *testing.T) {
13
	cases := []struct {
14
		date time.Time
15
		res  string
16
	}{
17
		{subSeconds(60), "1 хвилина тому"},
18
		{subMinutes(1), "1 хвилина тому"},
19
		{subMinutes(2), "2 хвилини тому"},
20
		{subMinutes(5), "5 хвилин тому"},
21
		{subMinutes(9), "9 хвилин тому"},
22
		{subMinutes(10), "10 хвилин тому"},
23
		{subMinutes(11), "11 хвилин тому"},
24
		{subMinutes(20), "20 хвилин тому"},
25
		{subMinutes(21), "21 хвилина тому"},
26
		{subMinutes(22), "22 хвилини тому"},
27
		{subMinutes(30), "30 хвилин тому"},
28
		{subMinutes(31), "31 хвилина тому"},
29
		{subMinutes(59), "59 хвилин тому"},
30
		{subMinutes(60), "1 година тому"},
31
		{subHours(1), "1 година тому"},
32
		{subHours(2), "2 години тому"},
33
		{subHours(9), "9 годин тому"},
34
		{subHours(10), "10 годин тому"},
35
		{subHours(11), "11 годин тому"},
36
		{subHours(20), "20 годин тому"},
37
		{subHours(21), "21 година тому"},
38
		{subHours(23), "23 години тому"},
39
		{subHours(24), "1 день тому"},
40
		{subDays(1), "1 день тому"},
41
		{subDays(2), "2 дні тому"},
42
		{subDays(3), "3 дні тому"},
43
		{subDays(4), "4 дні тому"},
44
		{subDays(5), "5 днів тому"},
45
		{subDays(6), "6 днів тому"},
46
		{subDays(7), "1 тиждень тому"},
47
		{subWeeks(1), "1 тиждень тому"},
48
		{subWeeks(2), "2 тижні тому"},
49
		{subWeeks(3), "3 тижні тому"},
50
		{subMonths(1), "1 місяць тому"},
51
		{subMonths(2), "2 місяці тому"},
52
		{subMonths(3), "3 місяці тому"},
53
		{subMonths(4), "4 місяці тому"},
54
		{subMonths(5), "5 місяців тому"},
55
		{subMonths(6), "6 місяців тому"},
56
		{subMonths(7), "7 місяців тому"},
57
		{subMonths(8), "8 місяців тому"},
58
		{subMonths(9), "9 місяців тому"},
59
		{subMonths(10), "10 місяців тому"},
60
		{subMonths(11), "11 місяців тому"},
61
		{subMonths(12), "1 рік тому"},
62
		{subYears(1), "1 рік тому"},
63
		{subYears(2), "2 роки тому"},
64
		{subYears(5), "5 років тому"},
65
		{subYears(6), "6 років тому"},
66
		{subYears(7), "7 років тому"},
67
		{subYears(21), "21 рік тому"},
68
		{subYears(31), "31 рік тому"},
69
		{subYears(100), "100 років тому"},
70
	}
71
72
	for _, tc := range cases {
73
		t.Run("result for "+tc.date.String(), func(test *testing.T) {
74
			timeago.Reconfigure(timeago.Config{Language: langUk})
75
76
			res, err := timeago.Parse(tc.date)
77
78
			if err != nil {
79
				test.Errorf("Error must be nil, but got %v instead", err)
80
			}
81
82
			if res != tc.res {
83
				test.Errorf("Result must be %s, but got %s instead", tc.res, res)
84
			}
85
		})
86
	}
87
}
88
89
func TestParseUkWithSeconds(t *testing.T) {
90
	cases := []struct {
91
		date time.Time
92
		res  []string
93
	}{
94
		{subSeconds(0), []string{"0 секунд тому", "1 секунда тому"}},
95
		{subSeconds(1), []string{"1 секунда тому", "2 секунди тому"}},
96
		{subSeconds(2), []string{"2 секунди тому", "3 секунди тому"}},
97
		{subSeconds(3), []string{"3 секунди тому", "4 секунди тому"}},
98
		{subSeconds(4), []string{"4 секунди тому", "5 секунд тому"}},
99
		{subSeconds(9), []string{"9 секунд тому", "10 секунд тому"}},
100
		{subSeconds(10), []string{"10 секунд тому", "11 секунд тому"}},
101
		{subSeconds(11), []string{"11 секунд тому", "12 секунд тому"}},
102
		{subSeconds(29), []string{"29 секунд тому", "30 секунд тому"}},
103
		{subSeconds(30), []string{"30 секунд тому", "31 секунда тому"}},
104
		{subSeconds(31), []string{"31 секунда тому", "32 секунди тому"}},
105
		{subSeconds(59), []string{"59 секунд тому", "1 хвилина тому"}},
106
	}
107
108
	for _, tc := range cases {
109
		t.Run("result for "+tc.date.String(), func(test *testing.T) {
110
			timeago.Reconfigure(timeago.Config{Language: langUk})
111
112
			res, err := timeago.Parse(tc.date)
113
114
			if err != nil {
115
				test.Errorf("Error must be nil, but got %v instead", err)
116
			}
117
118
			if res != tc.res[0] && res != tc.res[1] {
119
				test.Errorf("Result must be %s or %s, but got %s instead", tc.res[0], tc.res[1], res)
120
			}
121
		})
122
	}
123
}
124