Add family decoding failure test

This commit is contained in:
Christian Treffs 2020-08-06 10:49:27 +02:00
parent c960ed32e1
commit b662565a79
No known key found for this signature in database
GPG Key ID: 49A4B4B460BE3ED4
3 changed files with 243 additions and 1 deletions

View File

@ -107,6 +107,32 @@ final class Family1Tests: XCTestCase {
XCTAssertEqual(newEntities.count, 3)
XCTAssertEqual(family.count, 3)
}
func testFamilyFailDecoding() {
let jsonString = """
[{ "SomeOtherComp": { "someValue": "fail" } }]
"""
guard let jsonData = jsonString.data(using: .utf8) else {
XCTFail("Failed to read data from json string \(jsonString.count)")
return
}
let family = nexus.family(requires: Comp1.self)
XCTAssertTrue(family.isEmpty)
var jsonDecoder = JSONDecoder()
XCTAssertThrowsError(try family.decodeMembers(from: jsonData, using: &jsonDecoder)) { error in
switch error {
case let decodingError as DecodingError:
switch decodingError {
case .keyNotFound:
break
default:
XCTFail("Wrong error provided \(error)")
}
default:
XCTFail("Wrong error provided \(error)")
}
}
}
}
// MARK: - Family 2 test case
@ -218,6 +244,32 @@ final class Family2Tests: XCTestCase {
XCTAssertEqual(newEntities.count, 3)
XCTAssertEqual(family.count, 3)
}
func testFamilyFailDecoding() {
let jsonString = """
[{ "SomeOtherComp": { "someValue": "fail" } }]
"""
guard let jsonData = jsonString.data(using: .utf8) else {
XCTFail("Failed to read data from json string \(jsonString.count)")
return
}
let family = nexus.family(requiresAll: Comp1.self, Comp2.self)
XCTAssertTrue(family.isEmpty)
var jsonDecoder = JSONDecoder()
XCTAssertThrowsError(try family.decodeMembers(from: jsonData, using: &jsonDecoder)) { error in
switch error {
case let decodingError as DecodingError:
switch decodingError {
case .keyNotFound:
break
default:
XCTFail("Wrong error provided \(error)")
}
default:
XCTFail("Wrong error provided \(error)")
}
}
}
}
// MARK: - Family 3 test case
@ -335,6 +387,32 @@ final class Family3Tests: XCTestCase {
XCTAssertEqual(newEntities.count, 3)
XCTAssertEqual(family.count, 3)
}
func testFamilyFailDecoding() {
let jsonString = """
[{ "SomeOtherComp": { "someValue": "fail" } }]
"""
guard let jsonData = jsonString.data(using: .utf8) else {
XCTFail("Failed to read data from json string \(jsonString.count)")
return
}
let family = nexus.family(requiresAll: Comp1.self, Comp2.self, Comp3.self)
XCTAssertTrue(family.isEmpty)
var jsonDecoder = JSONDecoder()
XCTAssertThrowsError(try family.decodeMembers(from: jsonData, using: &jsonDecoder)) { error in
switch error {
case let decodingError as DecodingError:
switch decodingError {
case .keyNotFound:
break
default:
XCTFail("Wrong error provided \(error)")
}
default:
XCTFail("Wrong error provided \(error)")
}
}
}
}
// MARK: - Family 4 test case
@ -458,6 +536,32 @@ final class Family4Tests: XCTestCase {
XCTAssertEqual(newEntities.count, 3)
XCTAssertEqual(family.count, 3)
}
func testFamilyFailDecoding() {
let jsonString = """
[{ "SomeOtherComp": { "someValue": "fail" } }]
"""
guard let jsonData = jsonString.data(using: .utf8) else {
XCTFail("Failed to read data from json string \(jsonString.count)")
return
}
let family = nexus.family(requiresAll: Comp1.self, Comp2.self, Comp3.self, Comp4.self)
XCTAssertTrue(family.isEmpty)
var jsonDecoder = JSONDecoder()
XCTAssertThrowsError(try family.decodeMembers(from: jsonData, using: &jsonDecoder)) { error in
switch error {
case let decodingError as DecodingError:
switch decodingError {
case .keyNotFound:
break
default:
XCTFail("Wrong error provided \(error)")
}
default:
XCTFail("Wrong error provided \(error)")
}
}
}
}
// MARK: - Family 5 test case
@ -587,6 +691,32 @@ final class Family5Tests: XCTestCase {
XCTAssertEqual(newEntities.count, 3)
XCTAssertEqual(family.count, 3)
}
func testFamilyFailDecoding() {
let jsonString = """
[{ "SomeOtherComp": { "someValue": "fail" } }]
"""
guard let jsonData = jsonString.data(using: .utf8) else {
XCTFail("Failed to read data from json string \(jsonString.count)")
return
}
let family = nexus.family(requiresAll: Comp1.self, Comp2.self, Comp3.self, Comp4.self, Comp5.self)
XCTAssertTrue(family.isEmpty)
var jsonDecoder = JSONDecoder()
XCTAssertThrowsError(try family.decodeMembers(from: jsonData, using: &jsonDecoder)) { error in
switch error {
case let decodingError as DecodingError:
switch decodingError {
case .keyNotFound:
break
default:
XCTFail("Wrong error provided \(error)")
}
default:
XCTFail("Wrong error provided \(error)")
}
}
}
}
// MARK: - Family 6 test case
@ -722,6 +852,32 @@ final class Family6Tests: XCTestCase {
XCTAssertEqual(newEntities.count, 3)
XCTAssertEqual(family.count, 3)
}
func testFamilyFailDecoding() {
let jsonString = """
[{ "SomeOtherComp": { "someValue": "fail" } }]
"""
guard let jsonData = jsonString.data(using: .utf8) else {
XCTFail("Failed to read data from json string \(jsonString.count)")
return
}
let family = nexus.family(requiresAll: Comp1.self, Comp2.self, Comp3.self, Comp4.self, Comp5.self, Comp6.self)
XCTAssertTrue(family.isEmpty)
var jsonDecoder = JSONDecoder()
XCTAssertThrowsError(try family.decodeMembers(from: jsonData, using: &jsonDecoder)) { error in
switch error {
case let decodingError as DecodingError:
switch decodingError {
case .keyNotFound:
break
default:
XCTFail("Wrong error provided \(error)")
}
default:
XCTFail("Wrong error provided \(error)")
}
}
}
}
// MARK: - Family 7 test case
@ -863,6 +1019,32 @@ final class Family7Tests: XCTestCase {
XCTAssertEqual(newEntities.count, 3)
XCTAssertEqual(family.count, 3)
}
func testFamilyFailDecoding() {
let jsonString = """
[{ "SomeOtherComp": { "someValue": "fail" } }]
"""
guard let jsonData = jsonString.data(using: .utf8) else {
XCTFail("Failed to read data from json string \(jsonString.count)")
return
}
let family = nexus.family(requiresAll: Comp1.self, Comp2.self, Comp3.self, Comp4.self, Comp5.self, Comp6.self, Comp7.self)
XCTAssertTrue(family.isEmpty)
var jsonDecoder = JSONDecoder()
XCTAssertThrowsError(try family.decodeMembers(from: jsonData, using: &jsonDecoder)) { error in
switch error {
case let decodingError as DecodingError:
switch decodingError {
case .keyNotFound:
break
default:
XCTFail("Wrong error provided \(error)")
}
default:
XCTFail("Wrong error provided \(error)")
}
}
}
}
// MARK: - Family 8 test case
@ -1010,6 +1192,32 @@ final class Family8Tests: XCTestCase {
XCTAssertEqual(newEntities.count, 3)
XCTAssertEqual(family.count, 3)
}
func testFamilyFailDecoding() {
let jsonString = """
[{ "SomeOtherComp": { "someValue": "fail" } }]
"""
guard let jsonData = jsonString.data(using: .utf8) else {
XCTFail("Failed to read data from json string \(jsonString.count)")
return
}
let family = nexus.family(requiresAll: Comp1.self, Comp2.self, Comp3.self, Comp4.self, Comp5.self, Comp6.self, Comp7.self, Comp8.self)
XCTAssertTrue(family.isEmpty)
var jsonDecoder = JSONDecoder()
XCTAssertThrowsError(try family.decodeMembers(from: jsonData, using: &jsonDecoder)) { error in
switch error {
case let decodingError as DecodingError:
switch decodingError {
case .keyNotFound:
break
default:
XCTFail("Wrong error provided \(error)")
}
default:
XCTFail("Wrong error provided \(error)")
}
}
}
}
// MARK: - Components

View File

@ -92,7 +92,7 @@ final class Family{{ idx }}Tests: XCTestCase {
XCTAssertEqual(family.count, 10_000)
var idx: Int = 0
family.entityAndComponents.forEach { (entity, {{ CompsLowercased }}) in
XCTAssertEqual(entity.numComponents, {{ idx }})
XCTAssertEqual(entity.numComponents, {{ idx }})
{% for comp in components %}
XCTAssertEqual({{ comp|lowercase }}.value, {{ forloop.counter0 }}_000_000 + idx)
XCTAssertEqual(entity[\{{ comp }}.self], {{ comp|lowercase }})
@ -138,6 +138,32 @@ final class Family{{ idx }}Tests: XCTestCase {
XCTAssertEqual(newEntities.count, 3)
XCTAssertEqual(family.count, 3)
}
func testFamilyFailDecoding() {
let jsonString = """
[{ "SomeOtherComp": { "someValue": "fail" } }]
"""
guard let jsonData = jsonString.data(using: .utf8) else {
XCTFail("Failed to read data from json string \(jsonString.count)")
return
}
let family = nexus.family({% if components.count == 1 %}requires{% else %}requiresAll{%endif%}: {{ CompsSelf }})
XCTAssertTrue(family.isEmpty)
var jsonDecoder = JSONDecoder()
XCTAssertThrowsError(try family.decodeMembers(from: jsonData, using: &jsonDecoder)) { error in
switch error {
case let decodingError as DecodingError:
switch decodingError {
case .keyNotFound:
break
default:
XCTFail("Wrong error provided \(error)")
}
default:
XCTFail("Wrong error provided \(error)")
}
}
}
}
{% endfor %}

View File

@ -56,6 +56,7 @@ extension Family1Tests {
("testEntityIteration", testEntityIteration),
("testFamilyDecoding", testFamilyDecoding),
("testFamilyEncoding", testFamilyEncoding),
("testFamilyFailDecoding", testFamilyFailDecoding),
("testMemberCreation", testMemberCreation)
]
}
@ -70,6 +71,7 @@ extension Family2Tests {
("testEntityIteration", testEntityIteration),
("testFamilyDecoding", testFamilyDecoding),
("testFamilyEncoding", testFamilyEncoding),
("testFamilyFailDecoding", testFamilyFailDecoding),
("testMemberCreation", testMemberCreation)
]
}
@ -84,6 +86,7 @@ extension Family3Tests {
("testEntityIteration", testEntityIteration),
("testFamilyDecoding", testFamilyDecoding),
("testFamilyEncoding", testFamilyEncoding),
("testFamilyFailDecoding", testFamilyFailDecoding),
("testMemberCreation", testMemberCreation)
]
}
@ -98,6 +101,7 @@ extension Family4Tests {
("testEntityIteration", testEntityIteration),
("testFamilyDecoding", testFamilyDecoding),
("testFamilyEncoding", testFamilyEncoding),
("testFamilyFailDecoding", testFamilyFailDecoding),
("testMemberCreation", testMemberCreation)
]
}
@ -112,6 +116,7 @@ extension Family5Tests {
("testEntityIteration", testEntityIteration),
("testFamilyDecoding", testFamilyDecoding),
("testFamilyEncoding", testFamilyEncoding),
("testFamilyFailDecoding", testFamilyFailDecoding),
("testMemberCreation", testMemberCreation)
]
}
@ -126,6 +131,7 @@ extension Family6Tests {
("testEntityIteration", testEntityIteration),
("testFamilyDecoding", testFamilyDecoding),
("testFamilyEncoding", testFamilyEncoding),
("testFamilyFailDecoding", testFamilyFailDecoding),
("testMemberCreation", testMemberCreation)
]
}
@ -140,6 +146,7 @@ extension Family7Tests {
("testEntityIteration", testEntityIteration),
("testFamilyDecoding", testFamilyDecoding),
("testFamilyEncoding", testFamilyEncoding),
("testFamilyFailDecoding", testFamilyFailDecoding),
("testMemberCreation", testMemberCreation)
]
}
@ -154,6 +161,7 @@ extension Family8Tests {
("testEntityIteration", testEntityIteration),
("testFamilyDecoding", testFamilyDecoding),
("testFamilyEncoding", testFamilyEncoding),
("testFamilyFailDecoding", testFamilyFailDecoding),
("testMemberCreation", testMemberCreation)
]
}