From 81f02e9258e2d7b8aa45e0590cb089bfc6b5f807 Mon Sep 17 00:00:00 2001 From: Deborah Mendes Ferreira Date: Sat, 20 Apr 2024 20:32:01 +0100 Subject: [PATCH] Fixing checks for images and empty prompts. --- openAIImages.m | 8 +++++--- tests/test_files/solar.png | Bin 0 -> 66229 bytes tests/topenAIImages.m | 22 ++++++++++++++++++---- 3 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 tests/test_files/solar.png diff --git a/openAIImages.m b/openAIImages.m index e60aa16..818d17b 100644 --- a/openAIImages.m +++ b/openAIImages.m @@ -86,7 +86,7 @@ arguments this (1,1) openAIImages - prompt {mustBeTextScalar} + prompt {mustBeNonzeroLengthTextScalar} nvp.NumImages (1,1) {mustBePositive, mustBeInteger,... mustBeLessThanOrEqual(nvp.NumImages,10)} = 1 nvp.Size (1,1) string {mustBeMember(nvp.Size, ["256x256", "512x512", ... @@ -176,7 +176,7 @@ arguments this (1,1) openAIImages imagePath {mustBeValidFileType(imagePath)} - prompt {mustBeTextScalar} + prompt {mustBeNonzeroLengthTextScalar} nvp.MaskImagePath {mustBeValidFileType(nvp.MaskImagePath)} nvp.NumImages (1,1) {mustBePositive, mustBeInteger,... mustBeLessThanOrEqual(nvp.NumImages,10)} = 1 @@ -345,7 +345,9 @@ function validatePromptSize(model, prompt) function mustBeValidFileType(filePath) mustBeFile(filePath); s = dir(filePath); - if ~endsWith(s.name, ".png") + imgDetails = imfinfo(filePath); + imgFormat = imgDetails.Format; + if ~(imgFormat=="png") error("llms:pngExpected", ... llms.utils.errorMessageCatalog.getMessage("llms:pngExpected")); end diff --git a/tests/test_files/solar.png b/tests/test_files/solar.png new file mode 100644 index 0000000000000000000000000000000000000000..fc37277c503b3b751351fc1a5b49868bb76f2c45 GIT binary patch literal 66229 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 Xo{v&*)uJ0W@UXc)Z~=VfpV|KbzUGb# literal 0 HcmV?d00001 diff --git a/tests/topenAIImages.m b/tests/topenAIImages.m index 4e70f9a..2b625e1 100644 --- a/tests/topenAIImages.m +++ b/tests/topenAIImages.m @@ -105,6 +105,12 @@ function constructModelWithAllNVP(testCase) testCase.verifyEqual(mdl.ModelName, modelName); end + function fakePNGImage(testCase) + mdl = openAIImages(ApiKey="this-is-not-a-real-key"); + fakePng = fullfile("test_files", "solar.png"); + testCase.verifyError(@()edit(mdl,fakePng, "bla"), "llms:pngExpected"); + end + function invalidInputsConstructor(testCase, InvalidConstructorInput) testCase.verifyError(@()openAIImages(InvalidConstructorInput.Input{:}), InvalidConstructorInput.Error); end @@ -157,11 +163,15 @@ function invalidInputsVariation(testCase, InvalidVariationInput) invalidGenerateInput = struct( ... "EmptyInput",struct( ... "Input",{{ [] }},... - "Error","MATLAB:validators:mustBeTextScalar"),... + "Error","MATLAB:validators:mustBeNonzeroLengthText"),... ... "InvalidInputType",struct( ... "Input",{{ 123 }},... - "Error","MATLAB:validators:mustBeTextScalar"),... + "Error","MATLAB:validators:mustBeNonzeroLengthText"),... + ... + "InvalidPromptLen",struct( ... + "Input",{{ "" }},... + "Error","MATLAB:validators:mustBeNonzeroLengthText"),... ... "InvalidNumImagesType",struct( ... "Input",{{ "prompt" "NumImages" "2" }},... @@ -233,17 +243,21 @@ function invalidInputsVariation(testCase, InvalidVariationInput) "Input",{{ 123, "prompt" }},... "Error","MATLAB:validators:mustBeNonzeroLengthText"),... ... + "InvalidPromptLen",struct( ... + "Input",{{ validImage, "" }},... + "Error","MATLAB:validators:mustBeNonzeroLengthText"),... + ... "InvalidImageExtension",struct( ... "Input",{{ nonPNGImage, "prompt" }},... "Error","llms:pngExpected"),... ... "EmptyPrompt",struct( ... "Input",{{ validImage, [] }},... - "Error","MATLAB:validators:mustBeTextScalar"),... + "Error","MATLAB:validators:mustBeNonzeroLengthText"),... ... "InvalidPromptType",struct( ... "Input",{{ validImage, 123 }},... - "Error","MATLAB:validators:mustBeTextScalar"),... + "Error","MATLAB:validators:mustBeNonzeroLengthText"),... ... "InvalidMaskImage",struct( ... "Input",{{ validImage, "foo", "MaskImagePath", 123 }},...