-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvalidation_test.go
160 lines (157 loc) · 4.73 KB
/
validation_test.go
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package calc_test
import (
"testing"
"github.com/antklim/go-calc"
"github.com/stretchr/testify/assert"
)
func TestValidations(t *testing.T) {
testCases := []struct {
desc string
args []float64
validation calc.Validation
assert func(t *testing.T, err error)
}{
{
desc: "addition validation returns error when arguments list is nil",
args: nil,
validation: calc.AddValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "arguments list cannot be nil")
},
},
{
desc: "addition validation returns error when arguments list is empty",
args: []float64{},
validation: calc.AddValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "arguments list should have at least two elements")
},
},
{
desc: "addition validation returns nil when arguments list is valid",
args: []float64{1, 2},
validation: calc.AddValidation,
assert: func(t *testing.T, err error) {
assert.NoError(t, err)
},
},
{
desc: "subtraction validation returns error when arguments list is nil",
args: nil,
validation: calc.SubValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "arguments list cannot be nil")
},
},
{
desc: "subtraction validation returns error when arguments list is empty",
args: []float64{},
validation: calc.SubValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "arguments list should have at least two elements")
},
},
{
desc: "subtraction validation returns nil when arguments list is valid",
args: []float64{1, 2},
validation: calc.SubValidation,
assert: func(t *testing.T, err error) {
assert.NoError(t, err)
},
},
{
desc: "multiplication validation returns error when arguments list is nil",
args: nil,
validation: calc.MulValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "arguments list cannot be nil")
},
},
{
desc: "multiplication validation returns error when arguments list is empty",
args: []float64{},
validation: calc.MulValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "arguments list should have at least two elements")
},
},
{
desc: "multiplication validation returns nil when arguments list is valid",
args: []float64{1, 2},
validation: calc.MulValidation,
assert: func(t *testing.T, err error) {
assert.NoError(t, err)
},
},
{
desc: "division validation returns error when arguments list is nil",
args: nil,
validation: calc.DivValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "arguments list cannot be nil")
},
},
{
desc: "division validation returns error when arguments list is empty",
args: []float64{},
validation: calc.DivValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "arguments list should have at least two elements")
},
},
{
desc: "division validation returns error when divisor is zero",
args: []float64{1, 0},
validation: calc.DivValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "divisor cannot be zero")
},
},
{
desc: "division validation returns nil when arguments list is valid",
args: []float64{1, 2},
validation: calc.DivValidation,
assert: func(t *testing.T, err error) {
assert.NoError(t, err)
},
},
{
desc: "square root validation returns error when arguments list is nil",
args: nil,
validation: calc.SqrtValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "arguments list cannot be nil")
},
},
{
desc: "square root validation returns error when arguments list is empty",
args: []float64{},
validation: calc.SqrtValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "arguments list should have at least one element")
},
},
{
desc: "square root validation returns error when argument is negative",
args: []float64{-1},
validation: calc.SqrtValidation,
assert: func(t *testing.T, err error) {
assert.EqualError(t, err, "square root argument cannot be negative")
},
},
{
desc: "square root validation returns nil when arguments list is valid",
args: []float64{1},
validation: calc.SqrtValidation,
assert: func(t *testing.T, err error) {
assert.NoError(t, err)
},
},
}
for _, tC := range testCases {
t.Run(tC.desc, func(t *testing.T) {
err := tC.validation(tC.args)
tC.assert(t, err)
})
}
}