1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift open source project
//
// Copyright (c) 2021 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
@testable import Basics
import XCTest
final class EnvironmentKeyTests: XCTestCase {
func test_comparable() {
let key0 = EnvironmentKey("Test")
let key1 = EnvironmentKey("Test1")
XCTAssertLessThan(key0, key1)
let key2 = EnvironmentKey("test")
XCTAssertLessThan(key0, key2)
}
func test_customStringConvertible() {
let key = EnvironmentKey("Test")
XCTAssertEqual(key.description, "Test")
}
func test_encodable() throws {
let key = EnvironmentKey("Test")
let data = try JSONEncoder().encode(key)
let string = String(data: data, encoding: .utf8)
XCTAssertEqual(string, #""Test""#)
}
func test_equatable() {
let key0 = EnvironmentKey("Test")
let key1 = EnvironmentKey("Test")
XCTAssertEqual(key0, key1)
let key2 = EnvironmentKey("Test2")
XCTAssertNotEqual(key0, key2)
#if os(Windows)
// Test case insensitivity on windows
let key2 = EnvironmentKey("teSt")
XCTAssertEqual(key0, key2)
#endif
}
func test_expressibleByStringLiteral() {
let key0 = EnvironmentKey("Test")
XCTAssertEqual(key0, "Test")
}
func test_decodable() throws {
let jsonString = #""Test""#
let data = jsonString.data(using: .utf8)!
let key = try JSONDecoder().decode(EnvironmentKey.self, from: data)
XCTAssertEqual(key.rawValue, "Test")
}
func test_hashable() {
var set = Set<EnvironmentKey>()
let key0 = EnvironmentKey("Test")
XCTAssertTrue(set.insert(key0).inserted)
let key1 = EnvironmentKey("Test")
XCTAssertTrue(set.contains(key1))
XCTAssertFalse(set.insert(key1).inserted)
let key2 = EnvironmentKey("Test2")
XCTAssertFalse(set.contains(key2))
XCTAssertTrue(set.insert(key2).inserted)
#if os(Windows)
// Test case insensitivity on windows
let key3 = EnvironmentKey("teSt")
XCTAssertTrue(set.contains(key3))
XCTAssertFalse(set.insert(key3).inserted)
#endif
XCTAssertEqual(set, ["Test", "Test2"])
}
func test_rawRepresentable() {
let key = EnvironmentKey(rawValue: "Test")
XCTAssertEqual(key?.rawValue, "Test")
}
}
|