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", 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); + }); }); });