@@ -7,9 +7,11 @@ import (
7
7
"fmt"
8
8
"io"
9
9
"net/http"
10
+ "reflect"
10
11
"testing"
11
12
12
13
"github.com/sashabaranov/go-openai/internal/test"
14
+ "github.com/sashabaranov/go-openai/internal/test/checks"
13
15
)
14
16
15
17
var errTestRequestBuilderFailed = errors .New ("test request builder failed" )
@@ -43,38 +45,68 @@ func TestDecodeResponse(t *testing.T) {
43
45
testCases := []struct {
44
46
name string
45
47
value interface {}
48
+ expected interface {}
46
49
body io.Reader
47
50
hasError bool
48
51
}{
49
52
{
50
- name : "nil input" ,
51
- value : nil ,
52
- body : bytes .NewReader ([]byte ("" )),
53
+ name : "nil input" ,
54
+ value : nil ,
55
+ body : bytes .NewReader ([]byte ("" )),
56
+ expected : nil ,
53
57
},
54
58
{
55
- name : "string input" ,
56
- value : & stringInput ,
57
- body : bytes .NewReader ([]byte ("test" )),
59
+ name : "string input" ,
60
+ value : & stringInput ,
61
+ body : bytes .NewReader ([]byte ("test" )),
62
+ expected : "test" ,
58
63
},
59
64
{
60
65
name : "map input" ,
61
66
value : & map [string ]interface {}{},
62
67
body : bytes .NewReader ([]byte (`{"test": "test"}` )),
68
+ expected : map [string ]interface {}{
69
+ "test" : "test" ,
70
+ },
63
71
},
64
72
{
65
73
name : "reader return error" ,
66
74
value : & stringInput ,
67
75
body : & errorReader {err : errors .New ("dummy" )},
68
76
hasError : true ,
69
77
},
78
+ {
79
+ name : "audio text input" ,
80
+ value : & audioTextResponse {},
81
+ body : bytes .NewReader ([]byte ("test" )),
82
+ expected : audioTextResponse {
83
+ Text : "test" ,
84
+ },
85
+ },
86
+ }
87
+
88
+ assertEqual := func (t * testing.T , expected , actual interface {}) {
89
+ t .Helper ()
90
+ if expected == actual {
91
+ return
92
+ }
93
+ v := reflect .ValueOf (actual ).Elem ().Interface ()
94
+ if ! reflect .DeepEqual (v , expected ) {
95
+ t .Fatalf ("Unexpected value: %v, expected: %v" , v , expected )
96
+ }
70
97
}
71
98
72
99
for _ , tc := range testCases {
73
100
t .Run (tc .name , func (t * testing.T ) {
74
101
err := decodeResponse (tc .body , tc .value )
75
- if (err != nil ) != tc .hasError {
76
- t .Errorf ("Unexpected error: %v" , err )
102
+ if tc .hasError {
103
+ checks .HasError (t , err , "Unexpected nil error" )
104
+ return
105
+ }
106
+ if err != nil {
107
+ t .Fatalf ("Unexpected error: %v" , err )
77
108
}
109
+ assertEqual (t , tc .expected , tc .value )
78
110
})
79
111
}
80
112
}
0 commit comments