60 lines
1.6 KiB
Swift
60 lines
1.6 KiB
Swift
//
|
|
// Copyright Amazon.com Inc. or its affiliates.
|
|
// All Rights Reserved.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
import XCTest
|
|
@testable import AWSCognitoAuthPlugin
|
|
|
|
class CombinedStateTests: XCTestCase {
|
|
|
|
func testSimpleCombinedState() {
|
|
let starting = ColorCounter(
|
|
color: .red,
|
|
counter: Counter(value: 0),
|
|
hasTriggered: false
|
|
)
|
|
|
|
let ending = ColorCounter.Resolver().logging().resolve(
|
|
oldState: starting,
|
|
byApplying: Color.Event.next
|
|
)
|
|
|
|
let expected = ColorCounter(
|
|
color: .orange,
|
|
counter: Counter(value: 0),
|
|
hasTriggered: false
|
|
)
|
|
|
|
XCTAssertEqual(ending.newState, expected)
|
|
}
|
|
|
|
/// As of this writing, this only tests the ColorCounter.Resolver logic, but at
|
|
/// some point, we expect to refactor the resolver logic to automatically apply
|
|
/// combined states. At that point, this will become a meaningful test of the
|
|
/// baked-in resolver's ability to automatically resolve nested/combined states
|
|
func testCombinedCanResolve() {
|
|
let starting = ColorCounter(
|
|
color: .orange,
|
|
counter: Counter(value: 2),
|
|
hasTriggered: false
|
|
)
|
|
|
|
let ending = ColorCounter.Resolver().logging().resolve(
|
|
oldState: starting,
|
|
byApplying: Color.Event.next
|
|
)
|
|
|
|
let expected = ColorCounter(
|
|
color: .yellow,
|
|
counter: Counter(value: 2),
|
|
hasTriggered: true
|
|
)
|
|
|
|
XCTAssertEqual(ending.newState, expected)
|
|
}
|
|
|
|
}
|