From 66db31f96565606fa2210541643244bc13679158 Mon Sep 17 00:00:00 2001 From: kevinanielsen Date: Sat, 21 Oct 2023 12:10:27 +0200 Subject: [PATCH 1/2] feat: add error for missing parameter --- src/index.ts | 8 ++++++-- test/classifyImage.test.ts | 42 ++++++++++++++++++++++++++++---------- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/src/index.ts b/src/index.ts index d94d523..c81757f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,14 +14,18 @@ type ClassifyImageType = ( MODEL_DIR_PATH: string, IMAGE_FILE_PATH: string, METADATA: IMetadata -) => Promise; +) => Promise; const classifyImage: ClassifyImageType = async ( MODEL_DIR_PATH: string, IMAGE_FILE_PATH: string, METADATA: IMetadata ) => { - let labels: string[] = METADATA.labels; + if (!MODEL_DIR_PATH || !IMAGE_FILE_PATH || !METADATA) { + return new Error("MISSING_PARAMETER"); + } + + let labels: string[] = METADATA["labels"]; const model = await tf.loadLayersModel(`${MODEL_DIR_PATH}/model.json`); diff --git a/test/classifyImage.test.ts b/test/classifyImage.test.ts index 1ed3129..1295267 100644 --- a/test/classifyImage.test.ts +++ b/test/classifyImage.test.ts @@ -10,21 +10,41 @@ const imageNoHand = "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Black_colour.jpg/640px-Black_colour.jpg"; describe("classifyImage function", async () => { - it("returns hand when shown a picture of a hand", async () => { - const result = await classifyImage(model, imageHand, metadata); + describe("returns", async () => { + it("returns hand when shown a picture of a hand", async () => { + const result = await classifyImage(model, imageHand, metadata); + if (result instanceof Error) { + return new Error(); + } else { + assert.equal(result[0].label, "Hand"); + } + }); - assert.equal(result[0].label, "Hand"); - }); + it("returns 'No hand' when shown a picture not including hand", async () => { + const result = await classifyImage(model, imageNoHand, metadata); - it("returns 'No hand' when shown a picture not including hand", async () => { - const result = await classifyImage(model, imageNoHand, metadata); + if (result instanceof Error) { + return new Error(); + } else { + assert.equal(result[0].label, "No hand"); + } + }); - assert.equal(result[0].label, "No hand"); + it("returns a probability level", async () => { + const result = await classifyImage(model, imageNoHand, metadata); + if (result instanceof Error) { + return new Error(); + } else { + assert.notEqual(result[0].probability, null); + } + }); }); + describe("Error boundries", async () => { + it("returns an error when missing a parameter", async () => { + //@ts-expect-error + const result = await classifyImage(imageNoHand, metadata); - it("returns a probability level", async () => { - const result = await classifyImage(model, imageNoHand, metadata); - - assert.notEqual(result[0].probability, null); + assert.ok(result instanceof Error); + }); }); }); From ca2b94ef409f08f2462aa1a73b9daaf05cc9f54a Mon Sep 17 00:00:00 2001 From: kevinanielsen Date: Sat, 21 Oct 2023 12:11:03 +0200 Subject: [PATCH 2/2] chore(npm): change version to 1.0.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0504f3b..9f71a4d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tfjs-image-node", - "version": "1.0.2", + "version": "1.0.3", "description": "A simple image classifier using tfjs and running in node.js", "main": "./dist/index.js", "module": "./dist/index.mjs",