TM-SGNL-iOS/SignalServiceKit/tests/Util/UnknownEnumCodableTest.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

53 lines
1.4 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
@testable import SignalServiceKit
public import XCTest
public class UnknownEnumCodableTest: XCTestCase {
enum StringEnum: String, UnknownEnumCodable {
case first
case second
case unknown
}
func test_unknownStringEnum() throws {
let cases: [String: StringEnum] = [
"\"first\"": .first,
"\"second\"": .second,
"\"unknown\"": .unknown,
"\"whatever\"": .unknown,
"\"\"": .unknown
]
let decoder = JSONDecoder()
for (raw, expected) in cases {
let parsed = try decoder.decode(StringEnum.self, from: raw.data(using: .utf8)!)
XCTAssertEqual(parsed, expected)
}
}
enum IntEnum: Int, UnknownEnumCodable {
case hundo = 100
case life = 42
case unknown = -1
}
func test_unknownIntEnum() throws {
let cases: [String: IntEnum] = [
"100": .hundo,
"42": .life,
"-1": .unknown,
"333": .unknown,
"0": .unknown
]
let decoder = JSONDecoder()
for (raw, expected) in cases {
let parsed = try decoder.decode(IntEnum.self, from: raw.data(using: .utf8)!)
XCTAssertEqual(parsed, expected)
}
}
}