mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-17 23:18:27 +02:00
Add unit tests for NSArray mapping
This commit is contained in:
@@ -43,3 +43,4 @@
|
||||
#import "RoomViewController.h"
|
||||
#import "ContactDetailsViewController.h"
|
||||
#import "GroupDetailsViewController.h"
|
||||
#import "NSArray+Element.h"
|
||||
|
||||
95
RiotTests/NSArray+Element.swift
Normal file
95
RiotTests/NSArray+Element.swift
Normal file
@@ -0,0 +1,95 @@
|
||||
//
|
||||
// Copyright 2021 New Vector Ltd
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
|
||||
class NSArray_Element: XCTestCase {
|
||||
|
||||
var array: NSArray = NSArray() // will contain strings
|
||||
|
||||
override func setUpWithError() throws {
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
array = NSArray(array: ["str 1", "string 2", "test string 3"])
|
||||
}
|
||||
|
||||
override func tearDownWithError() throws {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
func testMap() throws {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
let mapped = array.vc_map { obj in
|
||||
guard let string = obj as? String else {
|
||||
XCTFail("Failed to setup test conditions")
|
||||
return -1
|
||||
}
|
||||
return string.count
|
||||
}
|
||||
|
||||
XCTAssertEqual(array.count, mapped.count, "Every element in the array must be mapped")
|
||||
XCTAssertTrue(mapped.allSatisfy({ $0 is Int }), "Every element must be an Int")
|
||||
XCTAssertTrue(mapped.allSatisfy({ ($0 as? Int ?? 0) > 0 }), "Every element must be an Int, greater than zero")
|
||||
}
|
||||
|
||||
func testCompactMap() throws {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
let nilMapped: [Any] = array.vc_compactMap { obj in
|
||||
return nil
|
||||
}
|
||||
XCTAssertTrue(nilMapped.isEmpty, "Mapped array must be empty")
|
||||
|
||||
let onlyOneNilMapped: [Any] = array.vc_compactMap { obj in
|
||||
guard let string = obj as? String else {
|
||||
XCTFail("Failed to setup test conditions")
|
||||
return -1
|
||||
}
|
||||
if string.hasSuffix("2") {
|
||||
return nil
|
||||
}
|
||||
return string.count
|
||||
}
|
||||
|
||||
XCTAssertEqual(array.count - 1, onlyOneNilMapped.count, "Every element in the array must be mapped, except 'string 2'")
|
||||
XCTAssertTrue(onlyOneNilMapped.allSatisfy({ $0 is Int }), "Every element must be an Int")
|
||||
XCTAssertTrue(onlyOneNilMapped.allSatisfy({ ($0 as? Int ?? 0) > 0 }), "Every element must be an Int, greater than zero")
|
||||
}
|
||||
|
||||
func testFlatMap() throws {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
let emptyMapped: [Any] = array.vc_flatMap { obj in
|
||||
return []
|
||||
}
|
||||
XCTAssertTrue(emptyMapped.isEmpty, "Mapped array must be empty")
|
||||
|
||||
let twiceMapped: [Any] = array.vc_flatMap { obj in
|
||||
guard let string = obj as? String else {
|
||||
XCTFail("Failed to setup test conditions")
|
||||
return []
|
||||
}
|
||||
return [string.count, string.count * 2]
|
||||
}
|
||||
XCTAssertEqual(array.count * 2, twiceMapped.count, "Mapped array must have twice time elements than the 'array'")
|
||||
|
||||
let constantMapped: [Any] = array.vc_flatMap { obj in
|
||||
return [1, 2]
|
||||
}
|
||||
XCTAssertEqual(array.count * 2, constantMapped.count, "Constantly mapped array must still have twice time elements than the 'array'")
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user