blob: 8cfaaa6030df24d9d679154449dc84b30c4cb36b [file] [log] [blame]
// RUN: %target-run-simple-swift
// REQUIRES: executable_test
import StdlibUnittest
var DictionaryTests = TestSuite("Dictionary")
DictionaryTests.test("index<Hashable>(forKey:)") {
let d: [AnyHashable : Int] = [
AnyHashable(10) : 1010,
AnyHashable(20) : 2020,
AnyHashable(30.0) : 3030,
]
expectEqual(1010, d[d.index(forKey: 10)!].value)
expectEqual(2020, d[d.index(forKey: 20)!].value)
expectEqual(3030, d[d.index(forKey: 30.0)!].value)
expectNil(d.index(forKey: 10.0))
expectNil(d.index(forKey: 20.0))
expectNil(d.index(forKey: 30))
}
DictionaryTests.test("subscript<Hashable>(_:)") {
var d: [AnyHashable : Int] = [
AnyHashable(10) : 1010,
AnyHashable(20) : 2020,
AnyHashable(30.0) : 3030,
]
expectEqual(1010, d[10])
expectEqual(2020, d[20])
expectEqual(3030, d[30.0])
d[10] = 101010
do {
let expected: [AnyHashable : Int] = [
AnyHashable(10) : 101010,
AnyHashable(20) : 2020,
AnyHashable(30.0) : 3030,
]
expectEqual(expected, d)
}
d[20] = 202020
do {
let expected: [AnyHashable : Int] = [
AnyHashable(10) : 101010,
AnyHashable(20) : 202020,
AnyHashable(30.0) : 3030,
]
expectEqual(expected, d)
}
d[30.0] = 303030
do {
let expected: [AnyHashable : Int] = [
AnyHashable(10) : 101010,
AnyHashable(20) : 202020,
AnyHashable(30.0) : 303030,
]
expectEqual(expected, d)
}
}
DictionaryTests.test("updateValue<Hashable>(_:forKey:)") {
var d: [AnyHashable : Int] = [
AnyHashable(10) : 1010,
AnyHashable(20) : 2020,
AnyHashable(30.0) : 3030,
]
expectEqual(1010, d.updateValue(101010, forKey: 10)!)
do {
let expected: [AnyHashable : Int] = [
AnyHashable(10) : 101010,
AnyHashable(20) : 2020,
AnyHashable(30.0) : 3030,
]
expectEqual(expected, d)
}
expectEqual(2020, d.updateValue(202020, forKey: 20)!)
do {
let expected: [AnyHashable : Int] = [
AnyHashable(10) : 101010,
AnyHashable(20) : 202020,
AnyHashable(30.0) : 3030,
]
expectEqual(expected, d)
}
expectEqual(3030, d.updateValue(303030, forKey: 30.0)!)
do {
let expected: [AnyHashable : Int] = [
AnyHashable(10) : 101010,
AnyHashable(20) : 202020,
AnyHashable(30.0) : 303030,
]
expectEqual(expected, d)
}
expectNil(d.updateValue(4040, forKey: 10.0))
do {
let expected: [AnyHashable : Int] = [
AnyHashable(10) : 101010,
AnyHashable(20) : 202020,
AnyHashable(30.0) : 303030,
AnyHashable(10.0) : 4040,
]
expectEqual(expected, d)
}
expectNil(d.updateValue(5050, forKey: 20.0))
do {
let expected: [AnyHashable : Int] = [
AnyHashable(10) : 101010,
AnyHashable(20) : 202020,
AnyHashable(30.0) : 303030,
AnyHashable(10.0) : 4040,
AnyHashable(20.0) : 5050,
]
expectEqual(expected, d)
}
expectNil(d.updateValue(6060, forKey: 30))
do {
let expected: [AnyHashable : Int] = [
AnyHashable(10) : 101010,
AnyHashable(20) : 202020,
AnyHashable(30.0) : 303030,
AnyHashable(10.0) : 4040,
AnyHashable(20.0) : 5050,
AnyHashable(30) : 6060,
]
expectEqual(expected, d)
}
}
DictionaryTests.test("removeValue<Hashable>(forKey:)") {
var d: [AnyHashable : Int] = [
AnyHashable(10) : 1010,
AnyHashable(20) : 2020,
AnyHashable(30.0) : 3030,
]
expectNil(d.removeValue(forKey: 10.0))
expectNil(d.removeValue(forKey: 20.0))
expectNil(d.removeValue(forKey: 30))
expectEqual(1010, d.removeValue(forKey: 10)!)
expectEqual(2020, d.removeValue(forKey: 20)!)
expectEqual(3030, d.removeValue(forKey: 30.0)!)
}
runAllTests()