-
Notifications
You must be signed in to change notification settings - Fork 5
/
text_classification_test.go
132 lines (119 loc) · 3.21 KB
/
text_classification_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
package hfapigo_test
import (
"encoding/json"
"testing"
"github.com/Kardbord/hfapigo/v3"
"github.com/google/go-cmp/cmp"
)
func TestMarhshalUnMarshalTextClassificationRequest(t *testing.T) {
// No options
{
tcExpected := hfapigo.TextClassificationRequest{
Inputs: []string{"You know, I find you quite fascinating."},
}
jsonBuf, err := json.Marshal(tcExpected)
if err != nil {
t.Fatal(err)
}
trActual := hfapigo.TextClassificationRequest{}
err = json.Unmarshal(jsonBuf, &trActual)
if err != nil {
t.Fatal(err)
}
if !cmp.Equal(tcExpected, trActual) {
t.Fatalf("Expected %v, got %v", tcExpected, trActual)
}
}
// Options
{
tcExpected := hfapigo.TextClassificationRequest{
Inputs: []string{
"You know, I find you quite fascinating.",
"I don't really care for your disposition.",
},
Options: *hfapigo.NewOptions().SetWaitForModel(true),
}
jsonBuf, err := json.Marshal(tcExpected)
if err != nil {
t.Fatal(err)
}
trActual := hfapigo.TextClassificationRequest{}
err = json.Unmarshal(jsonBuf, &trActual)
if err != nil {
t.Fatal(err)
}
if !cmp.Equal(tcExpected, trActual) {
t.Fatalf("Expected %v, got %v", tcExpected, trActual)
}
}
}
func TestTextClassificationRequest(t *testing.T) {
// Minimal request
{
tcresps, err := hfapigo.SendTextClassificationRequest(hfapigo.RecommendedTextClassificationModel, &hfapigo.TextClassificationRequest{
Inputs: []string{"You know, I find you quite fascinating."},
Options: *hfapigo.NewOptions().SetWaitForModel(true),
})
if err != nil {
t.Fatal(err)
}
if len(tcresps) != 1 {
t.Fatal("Expected 1 response object")
}
if len(tcresps[0].Labels) == 0 {
t.Fatal("Expected at least one label in response")
}
if tcresps[0].Labels[0].Name == "" {
t.Fatal("Expected non-empty label name")
}
if tcresps[0].Labels[0].Score == 0.0 {
t.Fatal("Expected nonzero score")
}
}
// Multiple inputs
{
tcresps, err := hfapigo.SendTextClassificationRequest(hfapigo.RecommendedTextClassificationModel, &hfapigo.TextClassificationRequest{
Inputs: []string{
"You know, I find you quite fascinating.",
"I don't really care for your disposition.",
},
Options: *hfapigo.NewOptions().SetWaitForModel(true),
})
if err != nil {
t.Fatal(err)
}
if len(tcresps) != 2 {
t.Fatal("Expected 2 response objects")
}
if len(tcresps[0].Labels) == 0 {
t.Fatal("Expected at least one label in response")
}
if tcresps[0].Labels[0].Name == "" {
t.Fatal("Expected non-empty label name")
}
if tcresps[0].Labels[0].Score == 0.0 {
t.Fatal("Expected nonzero score")
}
if len(tcresps[1].Labels) == 0 {
t.Fatal("Expected at least one label in response")
}
if tcresps[1].Labels[0].Name == "" {
t.Fatal("Expected non-empty label")
}
if tcresps[1].Labels[0].Score == 0.0 {
t.Fatal("Expected nonzero score")
}
}
// Invalid request
{
tcresps, err := hfapigo.SendTextClassificationRequest(hfapigo.RecommendedTextClassificationModel, &hfapigo.TextClassificationRequest{
Options: *hfapigo.NewOptions().SetWaitForModel(true),
})
if err == nil {
t.Fatal("Expected error - invalid request")
}
if tcresps != nil {
t.Fatal("Expected nil response - invalid request")
}
}
}