Skip to content

Commit 7afe3ad

Browse files
committed
Add tests for encoding and decoding Flag
feature/make-flag-codable
1 parent 6d8e1be commit 7afe3ad

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

Tests/ArgumentEncodingTests/FlagTests.swift

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,52 @@ final class FlagTests: XCTestCase {
2727
}
2828
XCTAssertEqual(args, ["--verbose"])
2929
}
30+
31+
private struct FlagContainer: Equatable, Codable {
32+
@Flag var flag: Bool
33+
}
34+
35+
private struct BoolContainer: Equatable, Codable {
36+
var flag: Bool
37+
}
38+
39+
func testFlagEncode() throws {
40+
let encoder = JSONEncoder()
41+
42+
let flagFalse = Flag("key", enabled: false)
43+
XCTAssertEqual(try encoder.encode(flagFalse), try encoder.encode(false))
44+
45+
let flagTrue = Flag("key", enabled: true)
46+
XCTAssertEqual(try encoder.encode(flagTrue), try encoder.encode(true))
47+
48+
let containerFalse = FlagContainer(flag: false)
49+
XCTAssertEqual(try encoder.encode(containerFalse), try encoder.encode(BoolContainer(flag: false)))
50+
51+
let containerTrue = FlagContainer(flag: true)
52+
XCTAssertEqual(try encoder.encode(containerTrue), try encoder.encode(BoolContainer(flag: true)))
53+
}
54+
55+
func testFlagDecode() throws {
56+
let decoder = JSONDecoder()
57+
58+
let encodedTrue = try XCTUnwrap("true".data(using: .utf8))
59+
let encodedFalse = try XCTUnwrap("false".data(using: .utf8))
60+
61+
let encodedContainerTrue = try XCTUnwrap("""
62+
{
63+
"flag": true
64+
}
65+
""".data(using: .utf8))
66+
let encodedContainerFalse = try XCTUnwrap("""
67+
{
68+
"flag": false
69+
}
70+
""".data(using: .utf8))
71+
72+
XCTAssertEqual(try decoder.decode(Flag.self, from: encodedTrue), Flag(wrappedValue: true))
73+
XCTAssertEqual(try decoder.decode(Flag.self, from: encodedFalse), Flag(wrappedValue: false))
74+
75+
XCTAssertEqual(try decoder.decode(FlagContainer.self, from: encodedContainerTrue), FlagContainer(flag: true))
76+
XCTAssertEqual(try decoder.decode(FlagContainer.self, from: encodedContainerFalse), FlagContainer(flag: false))
77+
}
3078
}

0 commit comments

Comments
 (0)