language-model-availability.tentative.https.window.js (2303B)
1 // META: title=Language Model Availability 2 // META: script=/resources/testdriver.js 3 // META: script=../resources/util.js 4 // META: timeout=long 5 6 'use strict'; 7 8 // These tests have no availability requirements, they only test the API shape. 9 10 promise_test(async () => { 11 assert_true(!!LanguageModel); 12 assert_equals(typeof LanguageModel.availability, 'function'); 13 }, 'LanguageModel.availability() is defined'); 14 15 promise_test(async () => { 16 const availability = await LanguageModel.availability(); 17 assert_in_array(availability, kValidAvailabilities); 18 }, 'LanguageModel.availability() returns a valid value with no options'); 19 20 promise_test(async (t) => { 21 return promise_rejects_js(t, RangeError, LanguageModel.availability({ 22 expectedInputs: [{type: 'text', languages: ['en-abc-invalid']}] 23 })); 24 }, 'LanguageModel.availability() rejects when given invalid language tags'); 25 26 promise_test(async () => { 27 // An array of plausible test option values. 28 const kCreateOptionsSpec = [ 29 {topK: [undefined, -2, 0, 1, 1.5, 3, 99]}, // Nominally int 1-10+. 30 {temperature: [undefined, -0.5, 0, 0.6, 1, 7]}, // Nominally float 0-1. 31 {expectedInputs: [undefined, [], [{type: 'text'}], 32 [{type: 'text'}, {type: 'audio'}, {type: 'image'}], 33 [{type: 'text', languages: ['en', 'ja', 'ko']}], 34 [{type: 'audio', languages: ['es']}, {type: 'image', languages: ['fr']}], 35 ]}, 36 {expectedOutputs: [undefined, [], [{type: 'text'}], 37 [{type: 'text'}, {type: 'audio'}, {type: 'image'}], 38 [{type: 'text', languages: ['en', 'ja', 'ko']}], 39 [{type: 'audio', languages: ['es']}, {type: 'image', languages: ['fr']}], 40 ]}, 41 {initialPrompts: [undefined, [], [{role: 'system', content: 'have fun'}], 42 [{role: 'system', content: 'have fun'}, {role: 'user', content: 'be good'}], 43 [{role: 'system', content: 'be good'}, {role: 'system', content: 'be bad'}], 44 [{role: 'system', content: 'have fun'}, {role: 'system', content: 'be bad'}], 45 ]}, 46 ]; 47 for (const options of generateOptionCombinations(kCreateOptionsSpec)) { 48 const availability = await LanguageModel.availability(options); 49 assert_in_array(availability, kValidAvailabilities, JSON.stringify(options)); 50 } 51 }, 'LanguageModel.availability() returns a valid value with plausible options');