From f22fdf5afb8da66c9abc4abaae59fcbf3fd6760e Mon Sep 17 00:00:00 2001 From: Vincent Esche Date: Tue, 24 Sep 2019 21:48:45 +0200 Subject: [PATCH] =?UTF-8?q?Removed=20redundancies=20from=20=E2=80=98SurgeT?= =?UTF-8?q?ests/ArithmeticTests.swift=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tests/SurgeTests/ArithmeticTests.swift | 119 ++++++++++++++----------- 1 file changed, 66 insertions(+), 53 deletions(-) diff --git a/Tests/SurgeTests/ArithmeticTests.swift b/Tests/SurgeTests/ArithmeticTests.swift index 018fed5..3c2e190 100644 --- a/Tests/SurgeTests/ArithmeticTests.swift +++ b/Tests/SurgeTests/ArithmeticTests.swift @@ -26,15 +26,28 @@ import XCTest // swiftlint:disable nesting type_body_length class ArithmeticTests: XCTestCase { - let n = 1_000 + static let n = 1_000 + + func monotonic(count: Int = ArithmeticTests.n) -> [Scalar] where Scalar: FloatingPoint { + return (1...count).map { Scalar($0) } + } + + func monotonicNormalized(count: Int = ArithmeticTests.n) -> [Scalar] where Scalar: FloatingPoint { + let scalarCount = Scalar(count) + return (1...count).map { Scalar($0) / scalarCount } + } + + func constant(_ value: Scalar, count: Int = ArithmeticTests.n) -> [Scalar] where Scalar: FloatingPoint { + return Array(repeating: value, count: count) + } // MARK: - Addition: In Place func test_add_in_place_array_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.addInPlace(&actual, rhs) @@ -47,8 +60,8 @@ class ArithmeticTests: XCTestCase { func test_add_in_place_array_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.addInPlace(&actual, rhs) @@ -63,8 +76,8 @@ class ArithmeticTests: XCTestCase { func test_sub_in_place_array_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.subInPlace(&actual, rhs) @@ -77,8 +90,8 @@ class ArithmeticTests: XCTestCase { func test_sub_in_place_array_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.subInPlace(&actual, rhs) @@ -93,8 +106,8 @@ class ArithmeticTests: XCTestCase { func test_mul_in_place_array_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.mulInPlace(&actual, rhs) @@ -107,8 +120,8 @@ class ArithmeticTests: XCTestCase { func test_mul_in_place_array_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.mulInPlace(&actual, rhs) @@ -123,8 +136,8 @@ class ArithmeticTests: XCTestCase { func test_div_in_place_array_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.divInPlace(&actual, rhs) @@ -137,8 +150,8 @@ class ArithmeticTests: XCTestCase { func test_div_in_place_array_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.divInPlace(&actual, rhs) @@ -153,8 +166,8 @@ class ArithmeticTests: XCTestCase { func test_mod_in_place_array_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) } - let rhs: [Scalar] = Array(repeating: 42, count: n) + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = constant(2.0) var actual: [Scalar] = lhs Surge.modInPlace(&actual, rhs) @@ -167,8 +180,8 @@ class ArithmeticTests: XCTestCase { func test_mod_in_place_array_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) } - let rhs: [Scalar] = Array(repeating: 42, count: n) + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = constant(2.0) var actual: [Scalar] = lhs Surge.modInPlace(&actual, rhs) @@ -183,8 +196,8 @@ class ArithmeticTests: XCTestCase { func test_remainder_in_place_array_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) } - let rhs: [Scalar] = Array(repeating: -42, count: n) + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = constant(-2.0) var actual: [Scalar] = lhs Surge.remainderInPlace(&actual, rhs) @@ -197,8 +210,8 @@ class ArithmeticTests: XCTestCase { func test_remainder_in_place_array_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) } - let rhs: [Scalar] = Array(repeating: -42, count: n) + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = constant(-2.0) var actual: [Scalar] = lhs Surge.remainderInPlace(&actual, rhs) @@ -213,7 +226,7 @@ class ArithmeticTests: XCTestCase { func test_exp_in_place_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.expInPlace(&actual) @@ -226,7 +239,7 @@ class ArithmeticTests: XCTestCase { func test_exp_in_place_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.expInPlace(&actual) @@ -241,7 +254,7 @@ class ArithmeticTests: XCTestCase { func test_exp2_in_place_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.exp2InPlace(&actual) @@ -254,7 +267,7 @@ class ArithmeticTests: XCTestCase { func test_exp2_in_place_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.exp2InPlace(&actual) @@ -269,8 +282,8 @@ class ArithmeticTests: XCTestCase { func test_pow_in_place_array_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = Array(repeating: 2.0, count: n) + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = constant(2.0) var actual: [Scalar] = lhs Surge.powInPlace(&actual, rhs) @@ -283,8 +296,8 @@ class ArithmeticTests: XCTestCase { func test_pow_in_place_array_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = Array(repeating: 2.0, count: n) + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = constant(2.0) var actual: [Scalar] = lhs Surge.powInPlace(&actual, rhs) @@ -297,7 +310,7 @@ class ArithmeticTests: XCTestCase { func test_pow_in_place_array_scalar_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() let rhs: Scalar = 2.0 var actual: [Scalar] = lhs @@ -311,7 +324,7 @@ class ArithmeticTests: XCTestCase { func test_pow_in_place_array_scalar_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() let rhs: Scalar = 2.0 var actual: [Scalar] = lhs @@ -327,7 +340,7 @@ class ArithmeticTests: XCTestCase { func test_sq_in_place_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.sqInPlace(&actual) @@ -340,7 +353,7 @@ class ArithmeticTests: XCTestCase { func test_sq_in_place_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.sqInPlace(&actual) @@ -355,7 +368,7 @@ class ArithmeticTests: XCTestCase { func test_sqrt_in_place_array_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) } + let lhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.sqrtInPlace(&actual) @@ -368,7 +381,7 @@ class ArithmeticTests: XCTestCase { func test_sqrt_in_place_array_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) } + let lhs: [Scalar] = monotonicNormalized() var actual: [Scalar] = lhs Surge.sqrtInPlace(&actual) @@ -383,8 +396,8 @@ class ArithmeticTests: XCTestCase { func test_dot_array_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() let actual: Scalar = Surge.dot(lhs, rhs) @@ -396,8 +409,8 @@ class ArithmeticTests: XCTestCase { func test_dot_array_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() let actual: Scalar = Surge.dot(lhs, rhs) @@ -411,7 +424,7 @@ class ArithmeticTests: XCTestCase { func test_sum_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() let actual: Scalar = Surge.sum(lhs) @@ -423,7 +436,7 @@ class ArithmeticTests: XCTestCase { func test_sum_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() let actual: Scalar = Surge.sum(lhs) @@ -437,8 +450,8 @@ class ArithmeticTests: XCTestCase { func test_dist_array_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() let actual: Scalar = Surge.dist(lhs, rhs) @@ -450,8 +463,8 @@ class ArithmeticTests: XCTestCase { func test_dist_array_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() let actual: Scalar = Surge.dist(lhs, rhs) @@ -465,8 +478,8 @@ class ArithmeticTests: XCTestCase { func test_distsq_array_array_float() { typealias Scalar = Float - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() let actual: Scalar = Surge.distSq(lhs, rhs) @@ -480,8 +493,8 @@ class ArithmeticTests: XCTestCase { func test_distsq_array_array_double() { typealias Scalar = Double - let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } - let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) } + let lhs: [Scalar] = monotonicNormalized() + let rhs: [Scalar] = monotonicNormalized() let actual: Scalar = Surge.distSq(lhs, rhs)