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