| Wanming Lin | 7183ea1 | 2019-03-18 02:18:44 | [diff] [blame] | 1 | <!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. |
| 9 | const 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 | |
| 41 | for (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 | |
| 56 | function 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 | |
| 65 | function 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> |