forked from WeTransfer/WeScan
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCIRectangleDetectorTests.swift
58 lines (41 loc) · 1.76 KB
/
CIRectangleDetectorTests.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//
// CIRectangleDetectorTests.swift
// WeScanTests
//
// Created by James Campbell on 8/8/18.
// Copyright © 2018 WeTransfer. All rights reserved.
//
import FBSnapshotTestCase
import XCTest
@testable import WeScan
final class CIRectangleDetectorTests: FBSnapshotTestCase {
override func setUp() {
super.setUp()
recordMode = false
agnosticOptions = .OS
}
func testCorrectlyDetectsAndReturnsQuadilateral() {
let targetSize = CGSize(width: 150, height: 150)
let containerLayer = CALayer()
containerLayer.backgroundColor = UIColor.white.cgColor
containerLayer.frame = CGRect(origin: .zero, size: targetSize)
containerLayer.masksToBounds = true
let targetLayer = CALayer()
targetLayer.backgroundColor = UIColor.black.cgColor
targetLayer.frame = containerLayer.frame.insetBy(dx: 5, dy: 5)
containerLayer.addSublayer(targetLayer)
UIGraphicsBeginImageContextWithOptions(targetSize, true, 0.0)
containerLayer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
let ciImage = CIImage(cgImage: image.cgImage!)
let quad = CIRectangleDetector.rectangle(forImage: ciImage)!
let resultView = UIView(frame: containerLayer.frame)
resultView.layer.addSublayer(containerLayer)
let quadView = QuadrilateralView(frame: resultView.bounds)
quadView.drawQuadrilateral(quad: quad, animated: false)
quadView.backgroundColor = UIColor.red
resultView.addSubview(quadView)
FBSnapshotVerifyView(resultView)
}
}