66 lines
1.6 KiB
Swift
66 lines
1.6 KiB
Swift
//
|
|
// Copyright Amazon.com Inc. or its affiliates.
|
|
// All Rights Reserved.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
@testable import AWSPinpointAnalyticsPlugin
|
|
import Foundation
|
|
|
|
class MockUserDefaults: UserDefaultsBehaviour {
|
|
var data: [String: UserDefaultsBehaviourValue] = [:]
|
|
var mockedValue: UserDefaultsBehaviourValue?
|
|
|
|
func addMockValue(_ value: UserDefaultsBehaviourValue?, forKey key: String) {
|
|
data[key] = value
|
|
}
|
|
|
|
var saveCount = 0
|
|
func save(_ value: UserDefaultsBehaviourValue?, forKey key: String) {
|
|
saveCount += 1
|
|
data[key] = value
|
|
}
|
|
|
|
var removeObjectCount = 0
|
|
func removeObject(forKey key: String) {
|
|
removeObjectCount += 1
|
|
data[key] = nil
|
|
}
|
|
|
|
var stringForKeyCount = 0
|
|
func string(forKey key: String) -> String? {
|
|
stringForKeyCount += 1
|
|
if let stored = data[key] as? String {
|
|
return stored
|
|
}
|
|
return mockedValue as? String
|
|
}
|
|
|
|
var dataForKeyCount = 0
|
|
var dataForKeyCountMap: [String: Int] = [:]
|
|
func data(forKey key: String) -> Data? {
|
|
dataForKeyCountMap[key] = dataForKeyCountMap[key, default: 0] + 1
|
|
dataForKeyCount += 1
|
|
if let stored = data[key] as? Data {
|
|
return stored
|
|
}
|
|
return mockedValue as? Data
|
|
}
|
|
|
|
var objectForKeyCount = 0
|
|
func object(forKey key: String) -> Any? {
|
|
objectForKeyCount += 1
|
|
if let stored = data[key] {
|
|
return stored
|
|
}
|
|
return mockedValue
|
|
}
|
|
|
|
func resetCounters() {
|
|
saveCount = 0
|
|
dataForKeyCount = 0
|
|
stringForKeyCount = 0
|
|
}
|
|
}
|