-
Notifications
You must be signed in to change notification settings - Fork 5
/
translation_test.go
135 lines (117 loc) · 3.99 KB
/
translation_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
package hfapigo_test
import (
"encoding/json"
"testing"
"github.com/Kardbord/hfapigo/v3"
"github.com/google/go-cmp/cmp"
)
func TestMarshalUnMarshalTranslationRequest(t *testing.T) {
// No options
{
trExpected := hfapigo.TranslationRequest{
Inputs: []string{"Меня зовут Вольфганг и я живу в Берлине"},
}
jsonBuf, err := json.Marshal(trExpected)
if err != nil {
t.Fatal(err)
}
trActual := hfapigo.TranslationRequest{}
err = json.Unmarshal(jsonBuf, &trActual)
if err != nil {
t.Fatal(err)
}
if !cmp.Equal(trExpected, trActual) {
t.Fatalf("Expected %v, got %v", trExpected, trActual)
}
}
// Options
{
trExpected := hfapigo.TranslationRequest{
Inputs: []string{"Меня зовут Вольфганг и я живу в Берлине"},
Options: *hfapigo.NewOptions().SetWaitForModel(true).SetUseGPU(false),
}
jsonBuf, err := json.Marshal(trExpected)
if err != nil {
t.Fatal(err)
}
trActual := hfapigo.TranslationRequest{}
err = json.Unmarshal(jsonBuf, &trActual)
if err != nil {
t.Fatal(err)
}
if !cmp.Equal(trExpected, trActual) {
t.Fatalf("Expected %v, got %v", trExpected, trActual)
}
}
}
func TestTranslationRequest(t *testing.T) {
// Minimal request
{
tresps, err := hfapigo.SendTranslationRequest(hfapigo.RecommendedRussianToEnglishModel, &hfapigo.TranslationRequest{
Inputs: []string{"Меня зовут Вольфганг и я живу в Берлине"},
Options: *hfapigo.NewOptions().SetWaitForModel(true),
})
if err != nil {
t.Fatal(err)
}
if len(tresps) == 0 {
t.Fatal("Expected nonzero number of response objects")
}
const expectedTranslationText = "My name is Wolfgang and I live in Berlin."
if tresps[0].TranslationText != expectedTranslationText {
t.Fatalf("Expected translation text %s, but got %s", expectedTranslationText, tresps[0].TranslationText)
}
}
// Multiple inputs
{
inputs := []string{
"Меня зовут Вольфганг и я живу в Берлине",
"Здравствуйте, не могли бы вы направить меня к автобусной остановке?",
}
tresps, err := hfapigo.SendTranslationRequest(hfapigo.RecommendedRussianToEnglishModel, &hfapigo.TranslationRequest{
Inputs: inputs,
Options: *hfapigo.NewOptions().SetWaitForModel(true),
})
if err != nil {
t.Fatal(err)
}
if len(tresps) != len(inputs) {
t.Fatalf("Expected %d number of responses, got %d", len(inputs), len(tresps))
}
const expectedTranslationText1 = "My name is Wolfgang and I live in Berlin."
if tresps[0].TranslationText != expectedTranslationText1 {
t.Fatalf("Expected translation text %s, but got %s", expectedTranslationText1, tresps[0].TranslationText)
}
const expectedTranslationText2 = "Hello, could you direct me to the bus stop?"
if tresps[1].TranslationText != expectedTranslationText2 {
t.Fatalf("Expected translation text %s, but got %s", expectedTranslationText2, tresps[1].TranslationText)
}
}
// Request with optional parameters
{
tresps, err := hfapigo.SendTranslationRequest(hfapigo.RecommendedRussianToEnglishModel, &hfapigo.TranslationRequest{
Inputs: []string{"Меня зовут Вольфганг и я живу в Берлине"},
Options: *hfapigo.NewOptions().SetWaitForModel(true).SetUseGPU(false),
})
if err != nil {
t.Fatal(err)
}
if len(tresps) == 0 {
t.Fatal("Expected nonzero number of response objects")
}
const expectedTranslationText = "My name is Wolfgang and I live in Berlin."
if tresps[0].TranslationText != expectedTranslationText {
t.Fatalf("Expected translation text %s, but got %s", expectedTranslationText, tresps[0].TranslationText)
}
}
// Invalid request
{
tresps, err := hfapigo.SendTranslationRequest(hfapigo.RecommendedRussianToEnglishModel, &hfapigo.TranslationRequest{})
if err == nil {
t.Fatalf("Expected an error - invalid request, got tresp=%v", tresps)
}
if tresps != nil {
t.Fatal("Expected nil response")
}
}
}