@@ -52,6 +52,59 @@ async function toStringArray(
52
52
}
53
53
54
54
describe ( 'ChromeAdapter' , ( ) => {
55
+ describe ( 'constructor' , ( ) => {
56
+ it ( 'sets image as expected input type by default' , async ( ) => {
57
+ const languageModelProvider = {
58
+ availability : ( ) => Promise . resolve ( Availability . available )
59
+ } as LanguageModel ;
60
+ const availabilityStub = stub (
61
+ languageModelProvider ,
62
+ 'availability'
63
+ ) . resolves ( Availability . available ) ;
64
+ const adapter = new ChromeAdapter (
65
+ languageModelProvider ,
66
+ 'prefer_on_device'
67
+ ) ;
68
+ await adapter . isAvailable ( {
69
+ contents : [
70
+ {
71
+ role : 'user' ,
72
+ parts : [ { text : 'hi' } ]
73
+ }
74
+ ]
75
+ } ) ;
76
+ expect ( availabilityStub ) . to . have . been . calledWith ( {
77
+ expectedInputs : [ { type : 'image' } ]
78
+ } ) ;
79
+ } ) ;
80
+ it ( 'honors explicitly set expected inputs' , async ( ) => {
81
+ const languageModelProvider = {
82
+ availability : ( ) => Promise . resolve ( Availability . available )
83
+ } as LanguageModel ;
84
+ const availabilityStub = stub (
85
+ languageModelProvider ,
86
+ 'availability'
87
+ ) . resolves ( Availability . available ) ;
88
+ const onDeviceParams = {
89
+ // Explicitly sets expected inputs.
90
+ expectedInputs : [ { type : 'text' } ]
91
+ } as LanguageModelCreateOptions ;
92
+ const adapter = new ChromeAdapter (
93
+ languageModelProvider ,
94
+ 'prefer_on_device' ,
95
+ onDeviceParams
96
+ ) ;
97
+ await adapter . isAvailable ( {
98
+ contents : [
99
+ {
100
+ role : 'user' ,
101
+ parts : [ { text : 'hi' } ]
102
+ }
103
+ ]
104
+ } ) ;
105
+ expect ( availabilityStub ) . to . have . been . calledWith ( onDeviceParams ) ;
106
+ } ) ;
107
+ } ) ;
55
108
describe ( 'isAvailable' , ( ) => {
56
109
it ( 'returns false if mode is only cloud' , async ( ) => {
57
110
const adapter = new ChromeAdapter ( undefined , 'only_in_cloud' ) ;
@@ -110,7 +163,15 @@ describe('ChromeAdapter', () => {
110
163
) ;
111
164
expect (
112
165
await adapter . isAvailable ( {
113
- contents : [ { role : 'user' , parts : [ { text : 'hi' } ] } ]
166
+ contents : [
167
+ {
168
+ role : 'user' ,
169
+ parts : [
170
+ { text : 'describe this image' } ,
171
+ { inlineData : { mimeType : 'image/jpeg' , data : 'asd' } }
172
+ ]
173
+ }
174
+ ]
114
175
} )
115
176
) . to . be . true ;
116
177
} ) ;
0 commit comments