@@ -52,6 +52,59 @@ async function toStringArray(
5252}
5353
5454describe ( '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+ } ) ;
55108 describe ( 'isAvailable' , ( ) => {
56109 it ( 'returns false if mode is only cloud' , async ( ) => {
57110 const adapter = new ChromeAdapter ( undefined , 'only_in_cloud' ) ;
@@ -110,7 +163,15 @@ describe('ChromeAdapter', () => {
110163 ) ;
111164 expect (
112165 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+ ]
114175 } )
115176 ) . to . be . true ;
116177 } ) ;
0 commit comments