reprogl

Форк
0
/
model_test.go 
85 строк · 1.6 Кб
1
package hashid
2

3
import (
4
	"errors"
5
	"strconv"
6
	"testing"
7
)
8

9
func TestDecode(t *testing.T) {
10
	tests := []struct {
11
		hash   string
12
		id     int
13
		isMale bool
14
		isUser bool
15
	}{
16
		{
17
			hash:   "ZQD5TM",
18
			id:     27,
19
			isUser: false,
20
			isMale: true,
21
		},
22
		{
23
			hash:   "04RETW",
24
			id:     27,
25
			isUser: false,
26
			isMale: false,
27
		},
28
		{
29
			hash:   "0WMMUN",
30
			id:     48,
31
			isUser: true,
32
			isMale: true,
33
		},
34
	}
35

36
	for idx, item := range tests {
37
		t.Run(strconv.Itoa(idx), func(t *testing.T) {
38
			model, err := Decode(item.hash, true)
39
			if err != nil {
40
				t.Errorf("decode error: %s", err.Error())
41
				return
42
			}
43

44
			if model.ID != item.id {
45
				t.Errorf("%s : ID got %d; want %d", item.hash, model.ID, item.id)
46
			}
47
			if model.IsUser() != item.isUser {
48
				t.Errorf("%s : wrong isUser detection", item.hash)
49
			}
50
			if model.IsMale() != item.isMale {
51
				t.Errorf("%s : wrong isMale detection", item.hash)
52
			}
53
		})
54
	}
55
}
56

57
func TestDecodeWithWrongOptions(t *testing.T) {
58
	tests := []string{"NVMW17", "XR5LU6", "ZDMLHM", "4R6HQ3"}
59

60
	for idx, item := range tests {
61
		t.Run(strconv.Itoa(idx), func(t *testing.T) {
62
			_, err := Decode(item, true)
63
			if err != nil {
64
				if !errors.Is(err, WrongOptions) {
65
					t.Errorf("decode error: %s", err.Error())
66
				}
67
			} else {
68
				t.Errorf("decode error: ignore wrong options")
69
			}
70
		})
71
	}
72
}
73

74
func TestDecodeNotAvatarWithWrongOptions(t *testing.T) {
75
	tests := []string{"NVMW17", "XR5LU6", "ZDMLHM", "4R6HQ3"}
76

77
	for idx, item := range tests {
78
		t.Run(strconv.Itoa(idx), func(t *testing.T) {
79
			_, err := Decode(item, false)
80
			if err != nil {
81
				t.Errorf("decode error: %s", err.Error())
82
			}
83
		})
84
	}
85
}
86

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.