Files
swift-composable-architectu…/Tests/ComposableArchitectureTests/IdentifiedArrayTests.swift
Stephen Celis c77bb6ceaf Update Format Workflow (#127)
* Update Format Workflow

* Update IdentifiedArrayTests.swift
2020-05-22 13:08:00 -04:00

153 lines
3.5 KiB
Swift

import XCTest
@testable import ComposableArchitecture
final class IdentifiedArrayTests: XCTestCase {
func testIdSubscript() {
struct User: Equatable, Identifiable {
let id: Int
var name: String
}
let array: IdentifiedArray = [User(id: 1, name: "Blob")]
XCTAssertEqual(array[id: 1], .some(User(id: 1, name: "Blob")))
}
func testRemoveId() {
struct User: Equatable, Identifiable {
let id: Int
var name: String
}
var array: IdentifiedArray = [User(id: 1, name: "Blob")]
XCTAssertEqual(array.remove(id: 1), User(id: 1, name: "Blob"))
XCTAssertEqual(array, [])
}
func testInsert() {
struct User: Equatable, Identifiable {
let id: Int
var name: String
}
var array: IdentifiedArray = [User(id: 1, name: "Blob")]
array.insert(User(id: 2, name: "Blob Jr."), at: 0)
XCTAssertEqual(array, [User(id: 2, name: "Blob Jr."), User(id: 1, name: "Blob")])
}
func testInsertContentsOf() {
struct User: Equatable, Identifiable {
let id: Int
var name: String
}
var array: IdentifiedArray = [User(id: 1, name: "Blob")]
array.insert(contentsOf: [User(id: 3, name: "Blob Sr."), User(id: 2, name: "Blob Jr.")], at: 0)
XCTAssertEqual(
array,
[User(id: 3, name: "Blob Sr."), User(id: 2, name: "Blob Jr."), User(id: 1, name: "Blob")]
)
}
func testRemoveAt() {
struct User: Equatable, Identifiable {
let id: Int
var name: String
}
var array: IdentifiedArray = [
User(id: 3, name: "Blob Sr."),
User(id: 2, name: "Blob Jr."),
User(id: 1, name: "Blob"),
]
array.remove(at: 1)
XCTAssertEqual(array, [User(id: 3, name: "Blob Sr."), User(id: 1, name: "Blob")])
}
func testRemoveAllWhere() {
struct User: Equatable, Identifiable {
let id: Int
var name: String
}
var array: IdentifiedArray = [
User(id: 3, name: "Blob Sr."),
User(id: 2, name: "Blob Jr."),
User(id: 1, name: "Blob"),
]
array.removeAll(where: { $0.name.starts(with: "Blob ") })
XCTAssertEqual(array, [User(id: 1, name: "Blob")])
}
func testRemoveAtOffsets() {
struct User: Equatable, Identifiable {
let id: Int
var name: String
}
var array: IdentifiedArray = [
User(id: 3, name: "Blob Sr."),
User(id: 2, name: "Blob Jr."),
User(id: 1, name: "Blob"),
]
array.remove(atOffsets: [0, 2])
XCTAssertEqual(array, [User(id: 2, name: "Blob Jr.")])
}
func testMoveFromOffsets() {
struct User: Equatable, Identifiable {
let id: Int
var name: String
}
var array: IdentifiedArray = [
User(id: 3, name: "Blob Sr."),
User(id: 2, name: "Blob Jr."),
User(id: 1, name: "Blob"),
]
array.move(fromOffsets: [0], toOffset: 2)
XCTAssertEqual(
array,
[User(id: 2, name: "Blob Jr."), User(id: 3, name: "Blob Sr."), User(id: 1, name: "Blob")]
)
}
func testReplaceSubrange() {
struct User: Equatable, Identifiable {
let id: Int
var name: String
}
var array: IdentifiedArray = [
User(id: 3, name: "Blob Sr."),
User(id: 2, name: "Blob Jr."),
User(id: 1, name: "Blob"),
User(id: 2, name: "Blob Jr."),
]
array.replaceSubrange(
0...1,
with: [
User(id: 4, name: "Flob IV"),
User(id: 5, name: "Flob V"),
]
)
XCTAssertEqual(
array,
[
User(id: 4, name: "Flob IV"), User(id: 5, name: "Flob V"), User(id: 1, name: "Blob"),
User(id: 2, name: "Blob Jr."),
]
)
}
}