blob: 4e9615a03d0d079bc55eee0f76b50b6d1de8b859 [file] [log] [blame]
Wanming Lin7183ea12019-03-18 02:18:441<!DOCTYPE html>
2<script src="/resources/testharness.js"></script>
3<script src="/resources/testharnessreport.js"></script>
4<script src="resources/shapedetection-helpers.js"></script>
5<script>
6
7// These tests verify that a Detector's detect() works on an HTMLCanvasElement
8// and on an OffscreenCanvas.
9const canvasElementTests =
10 [
11 {
12 createDetector: () => { return new FaceDetector(); },
13 createCanvas: () => { return document.createElement("canvas"); },
14 mockTestName: "FaceDetectionTest",
15 detectionResultTest: FaceDetectorDetectionResultTest,
16 name: "Face - detect(HTMLCanvasElement)"
17 },
18 {
19 createDetector: () => { return new FaceDetector(); },
20 createCanvas: () => { return new OffscreenCanvas(300, 150); },
21 mockTestName: "FaceDetectionTest",
22 detectionResultTest: FaceDetectorDetectionResultTest,
23 name: "Face - detect(OffscreenCanvas)"
24 },
25 {
26 createDetector: () => { return new BarcodeDetector(); },
27 createCanvas: () => { return document.createElement("canvas"); },
28 mockTestName: "BarcodeDetectionTest",
29 detectionResultTest: BarcodeDetectorDetectionResultTest,
30 name: "Barcode - detect(HTMLCanvasElement)"
31 },
32 {
33 createDetector: () => { return new BarcodeDetector(); },
34 createCanvas: () => { return new OffscreenCanvas(300, 150); },
35 mockTestName: "BarcodeDetectionTest",
36 detectionResultTest: BarcodeDetectorDetectionResultTest,
37 name: "Barcode - detect(OffscreenCanvas)"
38 }
39 ];
40
41for (let canvasElementTest of canvasElementTests) {
42 detection_test(canvasElementTest.mockTestName, async (t, detectionTest) => {
43 const img = new Image();
44 const imgWatcher = new EventWatcher(t, img, ["load", "error"]);
45 img.src = "/images/green-16x16.png";
46 await imgWatcher.wait_for("load");
47 const canvas = canvasElementTest.createCanvas();
48 canvas.getContext("2d").drawImage(img, 0, 0);
49
50 const detector = canvasElementTest.createDetector();
51 const detectionResult = await detector.detect(canvas);
52 canvasElementTest.detectionResultTest(detectionResult, detectionTest);
53 }, canvasElementTest.name);
54}
55
56function FaceDetectorDetectionResultTest(detectionResult, mockTest) {
57 const imageReceivedByMock =
58 mockTest.MockFaceDetectionProvider().getFrameData();
59 assert_equals(imageReceivedByMock.byteLength, 180000, "Image length");
60 const GREEN_PIXEL = 0xFF00FF00;
61 assert_equals(imageReceivedByMock[0], GREEN_PIXEL, "Pixel color");
62 assert_equals(detectionResult.length, 3, "Number of faces");
63}
64
65function BarcodeDetectorDetectionResultTest(detectionResult, mockTest) {
66 assert_equals(detectionResult.length, 2, "Number of barcodes");
67 assert_equals(detectionResult[0].rawValue, "cats", "barcode 1");
68 assert_equals(detectionResult[0].format, "qr_code", "barcode 1 format");
69 assert_equals(detectionResult[1].rawValue, "dogs", "barcode 2");
70 assert_equals(detectionResult[1].format, "code_128", "barcode 2 format");
71}
72
73</script>