tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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');