-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse_test.go
81 lines (76 loc) · 2.07 KB
/
parse_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
package f8n
import (
"net/http"
"strings"
"testing"
)
// Тестирование вызова функции с ошибкой в аргументах.
func TestParseRequestWithNil(t *testing.T) {
var (
err error
obj *impl
ero Err
ok bool
)
// Проверка ошибки паники.
obj = New().(*impl)
if err = obj.ParseRequest(nil); err == nil {
t.Errorf("ParseRequest() == nil, ожидалась ошибка.")
return
}
if ero, ok = err.(Err); !ok {
t.Errorf("ParseRequest() = %q, не верный тип ошибки.", err)
return
}
if ero.Anchor() != Errors().RequestIsNil().Anchor() {
t.Errorf("ParseRequest() = %q, ожидалось: %q",
ero.Error(),
Errors().RequestIsNil().Error(),
)
return
}
}
// Тестирование множественных ошибок.
func TestMultipleErrorsFound(t *testing.T) {
const data = `http://localhost
?map=(group4:and:group5):and:(group1:and:group2:or:group3):or:(group4:or:group5):or:(group4:or:group5)
&map=group4:and:group5:and:
&map=(group5:or:(group1:or:():and:group5):and:group5):and:group4
&group1=field1:eq:value1
&group2=field2:ke:value2
&group3=field3:ke:value3
&group4=field1:ke:value4
&group5=field2:ke:value5
&limit=1&limit=2
&by=zzzz-1
&filter=aaa:aaa:aaa
`
var (
err error
rq *http.Request
obj *impl
ero Err
ok bool
errCount uint64
)
// Проверка ошибки паники.
obj = New().(*impl)
if rq, err = http.NewRequest("GET", strings.ReplaceAll(data, "\n", ""), nil); err != nil {
t.Errorf("Ошибка создания запроса: %s", err)
}
if err = obj.ParseRequest(rq, func(a []byte, b error) { errCount++ }); err == nil {
t.Errorf("ParseRequest() == nil, ожидалась ошибка.")
return
}
if ero, ok = err.(Err); !ok {
t.Errorf("ParseRequest() = %q, не верный тип ошибки.", err)
return
}
if ero.Anchor() != Errors().MultipleErrorsFound().Anchor() {
t.Errorf("ParseRequest() = %q, ожидалось: %q",
ero.Error(),
Errors().MultipleErrorsFound().Error(),
)
return
}
}