1+ classdef textractOpenAIEmbeddings < matlab .unittest .TestCase
2+ % Tests for extractOpenAIEmbeddings
3+
4+ % Copyright 2023 The MathWorks, Inc.
5+
6+ methods (TestClassSetup )
7+ function saveEnvVar(testCase )
8+ % Ensures key is not in environment variable for tests
9+ openAIEnvVar = " OPENAI_API_KEY" ;
10+ if isenv(openAIEnvVar )
11+ key = getenv(openAIEnvVar );
12+ unsetenv(openAIEnvVar );
13+ testCase .addTeardown(@(x ) setenv(openAIEnvVar , x ), key );
14+ end
15+ end
16+ end
17+
18+ properties (TestParameter )
19+ InvalidInput = iGetInvalidInput;
20+ end
21+
22+ methods (Test )
23+ % Test methods
24+ function embedsDifferentStringTypes(testCase )
25+ testCase .verifyWarningFree(@()extractOpenAIEmbeddings(" bla" , ApiKey= " this-is-not-a-real-key" ));
26+ testCase .verifyWarningFree(@()extractOpenAIEmbeddings(' bla' , ApiKey= " this-is-not-a-real-key" ));
27+ testCase .verifyWarningFree(@()extractOpenAIEmbeddings({' bla' }, ApiKey= " this-is-not-a-real-key" ));
28+ end
29+
30+ function keyNotFound(testCase )
31+ testCase .verifyError(@()extractOpenAIEmbeddings(" bla" ), " llms:keyMustBeSpecified" );
32+ end
33+
34+ function useAllNVP(testCase )
35+ testCase .verifyWarningFree(@()extractOpenAIEmbeddings(" bla" , ModelName= " text-embedding-ada-002" , ...
36+ ApiKey= " this-is-not-a-real-key" , TimeOut= 10 ));
37+ end
38+
39+ function verySmallTimeOutErrors(testCase )
40+ testCase .verifyError(@()extractOpenAIEmbeddings(" bla" , TimeOut= 0.0001 , ApiKey= " false-key" ), " MATLAB:webservices:Timeout" )
41+ end
42+
43+ function testInvalidInputs(testCase , InvalidInput )
44+ testCase .verifyError(@()extractOpenAIEmbeddings(InvalidInput.Input{: }), InvalidInput .Error );
45+ end
46+ end
47+ end
48+
49+ function invalidInput = iGetInvalidInput
50+ invalidInput = struct( ...
51+ " InvalidTimeOutType" , struct( ...
52+ " Input" ,{{ " bla" , " TimeOut" , " 2" }},...
53+ " Error" , " MATLAB:validators:mustBeReal" ), ...
54+ ...
55+ " InvalidTimeOutSize" , struct( ...
56+ " Input" ,{{ " bla" , " TimeOut" , [1 1 1 ] }},...
57+ " Error" , " MATLAB:validation:IncompatibleSize" ), ...
58+ ...
59+ " WrongTypeText" ,struct( ...
60+ " Input" ,{{ 123 }},...
61+ " Error" ," MATLAB:validators:mustBeText" ),...
62+ ...
63+ " InvalidModelNameType" ,struct( ...
64+ " Input" ,{{" bla" , " ModelName" , 0 }},...
65+ " Error" ," MATLAB:validators:mustBeMember" ),...
66+ ...
67+ " InvalidModelNameSize" ,struct( ...
68+ " Input" ,{{" bla" , " ModelName" , [" gpt-3.5-turbo" , " gpt-3.5-turbo" ] }},...
69+ " Error" ," MATLAB:validation:IncompatibleSize" ),...
70+ ...
71+ " InvalidModelNameOption" ,struct( ...
72+ " Input" ,{{" bla" , " ModelName" , " gpt" }},...
73+ " Error" ," MATLAB:validators:mustBeMember" ),...
74+ ...
75+ " InvalidApiKeyType" ,struct( ...
76+ " Input" ,{{" bla" , " ApiKey" 123 }},...
77+ " Error" ," MATLAB:validators:mustBeNonzeroLengthText" ),...
78+ ...
79+ " InvalidApiKeySize" ,struct( ...
80+ " Input" ,{{" bla" , " ApiKey" [" abc" " abc" ] }},...
81+ " Error" ," MATLAB:validators:mustBeTextScalar" ));
82+ end
0 commit comments