Skip to content
This repository was archived by the owner on Oct 18, 2023. It is now read-only.

Commit 3c09da6

Browse files
committedNov 11, 2017
added tests and docs for deep neural nets + added tests for new Mat utilities
1 parent 98a17b5 commit 3c09da6

File tree

3 files changed

+178
-0
lines changed

3 files changed

+178
-0
lines changed
 

‎test/tests/core/Mat/Mat.test.js

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,5 +450,77 @@ describe('Mat', () => {
450450
});
451451
});
452452
});
453+
454+
describe('findNonZero', () => {
455+
const expectOutput = (res) => {
456+
expect(res).to.be.an('array').lengthOf(3);
457+
};
458+
459+
const mat = new cv.Mat([
460+
[1, 0, 1],
461+
[0, 1, 0]
462+
], cv.CV_8U);
463+
464+
generateAPITests({
465+
getDut: () => mat,
466+
methodName: 'findNonZero',
467+
methodNameSpace: 'Mat',
468+
expectOutput
469+
});
470+
});
471+
472+
describe('padToSquare', () => {
473+
const expectOutput = (res) => {
474+
expect(res).to.be.instanceOf(cv.Mat);
475+
assertMetaData(res)(3, 3, cv.CV_8UC3);
476+
};
477+
478+
describe('cols > rows', () => {
479+
const mat = new cv.Mat([
480+
[[255, 255, 255], [0, 0, 0], [255, 255, 255]],
481+
[[0, 0, 0], [255, 255, 255], [0, 0, 0]]
482+
], cv.CV_8UC3);
483+
484+
generateAPITests({
485+
getDut: () => mat,
486+
getOptionalArgs: () => [new cv.Vec(255, 255, 255)],
487+
methodName: 'padToSquare',
488+
methodNameSpace: 'Mat',
489+
expectOutput
490+
});
491+
});
492+
493+
describe('rows > cols', () => {
494+
const mat = new cv.Mat([
495+
[[255, 255, 255], [0, 0, 0]],
496+
[[0, 0, 0], [255, 255, 255]],
497+
[[0, 0, 0], [255, 255, 255]]
498+
], cv.CV_8UC3);
499+
500+
generateAPITests({
501+
getDut: () => mat,
502+
getOptionalArgs: () => [new cv.Vec(255, 255, 255)],
503+
methodName: 'padToSquare',
504+
methodNameSpace: 'Mat',
505+
expectOutput
506+
});
507+
});
508+
509+
describe('rows === cols', () => {
510+
const mat = new cv.Mat([
511+
[[255, 255, 255], [0, 0, 0], [0, 0, 0]],
512+
[[0, 0, 0], [255, 255, 255], [0, 0, 0]],
513+
[[0, 0, 0], [255, 255, 255], [0, 0, 0]]
514+
], cv.CV_8UC3);
515+
516+
generateAPITests({
517+
getDut: () => mat,
518+
getOptionalArgs: () => [new cv.Vec(255, 255, 255)],
519+
methodName: 'padToSquare',
520+
methodNameSpace: 'Mat',
521+
expectOutput
522+
});
523+
});
524+
});
453525
});
454526

‎test/tests/modules/dnn/NetTests.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const cv = global.dut;
2+
const { generateAPITests } = global.utils;
3+
const { expect } = require('chai');
4+
5+
module.exports = (getTestImg) => {
6+
let blob;
7+
before(() => {
8+
blob = cv.blobFromImage(getTestImg());
9+
});
10+
11+
describe('setInput', () => {
12+
const expectOutput = () => {
13+
// expect to not throw
14+
};
15+
16+
generateAPITests({
17+
getDut: () => new cv.Net(),
18+
methodName: 'setInput',
19+
methodNameSpace: 'Net',
20+
getRequiredArgs: () => ([
21+
blob
22+
]),
23+
expectOutput
24+
});
25+
});
26+
27+
// TODO: load an actual model in tests
28+
describe.skip('forward', () => {
29+
const expectOutput = (res) => {
30+
expect(res).to.be.instanceOf(cv.Mat);
31+
};
32+
33+
generateAPITests({
34+
getDut: () => new cv.Net(),
35+
methodName: 'forward',
36+
methodNameSpace: 'Net',
37+
expectOutput
38+
});
39+
});
40+
};

‎test/tests/modules/dnn/dnn.test.js

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
const cv = global.dut;
2+
const {
3+
readTestImage,
4+
generateAPITests,
5+
assertMetaData
6+
} = global.utils;
7+
const { expect } = require('chai');
8+
const NetTests = require('./NetTests');
9+
10+
describe('dnn', () => {
11+
if (!cv.xmodules.dnn) {
12+
it('compiled without dnn');
13+
return;
14+
}
15+
16+
let testImg;
17+
18+
before(() => {
19+
testImg = readTestImage().resizeToMax(250);
20+
});
21+
22+
NetTests(() => testImg);
23+
24+
describe('blobFromImage', () => {
25+
const expectOutput = (res) => {
26+
expect(res).to.be.instanceOf(cv.Mat);
27+
assertMetaData(res)(-1, -1, cv.CV_32F);
28+
};
29+
30+
const getOptionalArgsMap = () => ([
31+
['scalefactor', 0.8],
32+
['size', new cv.Size(3, 3)],
33+
['mean', new cv.Vec(0.5, 0.5, 0.5)],
34+
['swapRB', true]
35+
]);
36+
37+
describe('blobFromImage', () => {
38+
generateAPITests({
39+
getDut: () => cv,
40+
methodName: 'blobFromImage',
41+
getRequiredArgs: () => ([
42+
testImg
43+
]),
44+
getOptionalArgsMap: () => ([
45+
['scalefactor', 0.8],
46+
['size', new cv.Size(3, 3)],
47+
['mean', new cv.Vec(0.5, 0.5, 0.5)],
48+
['swapRB', true]
49+
]),
50+
expectOutput
51+
});
52+
});
53+
54+
describe('blobFromImages', () => {
55+
generateAPITests({
56+
getDut: () => cv,
57+
methodName: 'blobFromImages',
58+
getRequiredArgs: () => ([
59+
[testImg, testImg]
60+
]),
61+
getOptionalArgsMap,
62+
expectOutput
63+
});
64+
});
65+
});
66+
});

0 commit comments

Comments
 (0)
This repository has been archived.