From 7185ca12460a060208aeff821df0f93cf0bf0138 Mon Sep 17 00:00:00 2001 From: kevinanielsen Date: Sat, 21 Oct 2023 10:46:41 +0200 Subject: [PATCH 1/6] test: add test for classifyImage --- test/classifyImage.test.ts | 16 ++++++++++++++++ test/testMetadata.json | 1 + 2 files changed, 17 insertions(+) create mode 100644 test/classifyImage.test.ts create mode 100644 test/testMetadata.json diff --git a/test/classifyImage.test.ts b/test/classifyImage.test.ts new file mode 100644 index 0000000..5311c04 --- /dev/null +++ b/test/classifyImage.test.ts @@ -0,0 +1,16 @@ +import { describe } from "mocha"; +import classifyImage from "../src/index"; +import assert from "assert"; + +const metadata = require("./testMetadata.json"); +const model = "https://teachablemachine.withgoogle.com/models/jAIOHvmge"; +const image = + "https://www.stgeorges.nhs.uk/wp-content/uploads/2014/03/hand-2.jpeg"; + +describe("classifyImage function", async () => { + it("returns hand when shown a picture of a hand", async () => { + const result = await classifyImage(model, image, metadata); + + assert.equal(result[0].label, "Hand"); + }); +}); diff --git a/test/testMetadata.json b/test/testMetadata.json new file mode 100644 index 0000000..e9a6292 --- /dev/null +++ b/test/testMetadata.json @@ -0,0 +1 @@ +{"tfjsVersion":"1.3.1","tmVersion":"2.4.7","packageVersion":"0.8.4-alpha2","packageName":"@teachablemachine/image","timeStamp":"2023-10-21T07:45:22.875Z","userMetadata":{},"modelName":"tm-my-image-model","labels":["Hand","No hand"],"imageSize":224} \ No newline at end of file From 7fc2f51def839f99e9c69aaa5b8af1bba70f6e28 Mon Sep 17 00:00:00 2001 From: kevinanielsen Date: Sat, 21 Oct 2023 10:47:08 +0200 Subject: [PATCH 2/6] feat: change export to export default --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index ca8b1ec..d94d523 100644 --- a/src/index.ts +++ b/src/index.ts @@ -71,4 +71,4 @@ const classifyImage: ClassifyImageType = async ( return result.sort((a, b) => Number(b.probability) - Number(a.probability)); }; -module.exports = classifyImage; +export default classifyImage; From 11bfc33e897bd3a7789018eac1a4c169ef8e66b1 Mon Sep 17 00:00:00 2001 From: kevinanielsen Date: Sat, 21 Oct 2023 10:47:30 +0200 Subject: [PATCH 3/6] test: update npm test script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e7d942e..0504f3b 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ ], "scripts": { "build": "tsup", - "test": "mocha" + "test": "mocha --require ts-node/register 'test/*.test.ts' --timeout 6000" }, "homepage": "https://github.com/kevinanielsen/tfjs-image-node/", "repository": { From 067e76b7dc8012c4037371cb870a3200d91938c9 Mon Sep 17 00:00:00 2001 From: kevinanielsen Date: Sat, 21 Oct 2023 10:47:54 +0200 Subject: [PATCH 4/6] chore(deps): add @types/mocha --- package-lock.json | 11 +++++++++-- yarn.lock | 5 +++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba995c6..300be7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,19 @@ { "name": "tfjs-image-node", - "version": "0.0.1", + "version": "1.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "tfjs-image-node", - "version": "0.0.1", + "version": "1.0.2", "license": "MIT", "dependencies": { "@tensorflow/tfjs": "^4.12.0", "jimp": "^0.22.10" }, "devDependencies": { + "@types/mocha": "^10.0.3", "@types/node": "^20.8.7", "mocha": "^10.2.0", "ts-node": "^10.9.1", @@ -692,6 +693,12 @@ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", "license": "MIT" }, + "node_modules/@types/mocha": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", + "dev": true + }, "node_modules/@types/node": { "version": "20.8.7", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", diff --git a/yarn.lock b/yarn.lock index 41a0e18..8df8c17 100644 --- a/yarn.lock +++ b/yarn.lock @@ -429,6 +429,11 @@ resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz" integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== +"@types/mocha@^10.0.3": + version "10.0.3" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz" + integrity sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ== + "@types/node-fetch@^2.1.2": version "2.6.7" resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.7.tgz" From a614c65b6b1e15dfa7d8f75e56877484dbeca99c Mon Sep 17 00:00:00 2001 From: kevinanielsen Date: Sat, 21 Oct 2023 10:50:45 +0200 Subject: [PATCH 5/6] test: add assertion for other image --- test/classifyImage.test.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/test/classifyImage.test.ts b/test/classifyImage.test.ts index 5311c04..6b6e2dd 100644 --- a/test/classifyImage.test.ts +++ b/test/classifyImage.test.ts @@ -4,13 +4,20 @@ import assert from "assert"; const metadata = require("./testMetadata.json"); const model = "https://teachablemachine.withgoogle.com/models/jAIOHvmge"; -const image = +const imageHand = "https://www.stgeorges.nhs.uk/wp-content/uploads/2014/03/hand-2.jpeg"; +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, image, metadata); + const result = await classifyImage(model, imageHand, metadata); 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); + + assert.equal(result[0].label, "No hand"); + }); }); From 81237b89b497bda36e64541df19626dea59f644b Mon Sep 17 00:00:00 2001 From: kevinanielsen Date: Sat, 21 Oct 2023 10:56:30 +0200 Subject: [PATCH 6/6] test: add assertion for probability level --- test/classifyImage.test.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/classifyImage.test.ts b/test/classifyImage.test.ts index 6b6e2dd..1ed3129 100644 --- a/test/classifyImage.test.ts +++ b/test/classifyImage.test.ts @@ -15,9 +15,16 @@ describe("classifyImage function", async () => { 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); assert.equal(result[0].label, "No hand"); }); + + it("returns a probability level", async () => { + const result = await classifyImage(model, imageNoHand, metadata); + + assert.notEqual(result[0].probability, null); + }); });