From 709156ee654bf98bbb790b58d577f4fa0758d08a Mon Sep 17 00:00:00 2001 From: Giles Payne Date: Sun, 6 Jun 2021 14:19:30 +0900 Subject: [PATCH] Add tests for Mat.at function --- modules/core/misc/objc/common/MatExt.swift | 12 +++++++---- modules/core/misc/objc/test/MatTest.swift | 24 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/modules/core/misc/objc/common/MatExt.swift b/modules/core/misc/objc/common/MatExt.swift index 032274af05..5ce3a5e6fb 100644 --- a/modules/core/misc/objc/common/MatExt.swift +++ b/modules/core/misc/objc/common/MatExt.swift @@ -33,6 +33,10 @@ func throwIncompatibleBufferSize(count: Int, channels: Int32) throws { ) } +public typealias T2 = (T, T) +public typealias T3 = (T, T, T) +public typealias T4 = (T, T, T, T) + public extension Mat { convenience init(rows:Int32, cols:Int32, type:Int32, data:[Int8]) { @@ -263,7 +267,7 @@ public class MatAt { private let mat: Mat private let indices: [Int32] - var v: N { + public var v: N { get { return N.getAt(m: mat, indices: indices) } @@ -271,7 +275,7 @@ public class MatAt { N.putAt(m: mat, indices: indices, v: value) } } - var v2c: (N, N) { + public var v2c: (N, N) { get { return N.getAt2c(m: mat, indices: indices) } @@ -279,7 +283,7 @@ public class MatAt { N.putAt2c(m: mat, indices: indices, v: value) } } - var v3c: (N, N, N) { + public var v3c: (N, N, N) { get { return N.getAt3c(m: mat, indices: indices) } @@ -287,7 +291,7 @@ public class MatAt { N.putAt3c(m: mat, indices: indices, v: value) } } - var v4c: (N, N, N, N) { + public var v4c: (N, N, N, N) { get { return N.getAt4c(m: mat, indices: indices) } diff --git a/modules/core/misc/objc/test/MatTest.swift b/modules/core/misc/objc/test/MatTest.swift index af26eb0bdb..14c440b5eb 100644 --- a/modules/core/misc/objc/test/MatTest.swift +++ b/modules/core/misc/objc/test/MatTest.swift @@ -1143,4 +1143,28 @@ class MatTests: OpenCVTestCase { XCTAssertEqual(5, bufferOut[63*80 + 63]) } + func testMatAt() { + let uc1 = Mat(rows: 2, cols: 3, type: CvType.CV_8U) + try! uc1.put(row: 0, col: 0, data: [1, 2, 3, 4, 5, 6] as [Int8]) + XCTAssertEqual(UInt8(1), uc1.at(row: 0, col: 0).v) + XCTAssertEqual(UInt8(2), uc1.at(row: 0, col: 1).v) + XCTAssertEqual(UInt8(3), uc1.at(row: 0, col: 2).v) + XCTAssertEqual(UInt8(4), uc1.at(row: 1, col: 0).v) + XCTAssertEqual(UInt8(5), uc1.at(row: 1, col: 1).v) + XCTAssertEqual(UInt8(6), uc1.at(row: 1, col: 2).v) + uc1.at(row: 0, col: 0).v = UInt8(7) + uc1.at(row: 0, col: 1).v = UInt8(8) + uc1.at(row: 0, col: 2).v = UInt8(9) + uc1.at(row: 1, col: 0).v = UInt8(10) + uc1.at(row: 1, col: 1).v = UInt8(11) + uc1.at(row: 1, col: 2).v = UInt8(12) + var data = [Int8](repeating: 0, count: 6) + try! uc1.get(row: 0, col: 0, data: &data) + XCTAssertEqual(data, [7, 8, 9, 10, 11, 12] as [Int8]) + let (b, g, r): T3 = rgbLena.at(row: 0, col: 0).v3c + XCTAssertEqual(b, UInt8(128)) + XCTAssertEqual(g, UInt8(138)) + XCTAssertEqual(r, UInt8(225)) + } + }