diff --git a/Tests/XMLCoderTests/BooksTest.swift b/Tests/XMLCoderTests/BooksTest.swift
index 078f044c..d8e6c8d9 100644
--- a/Tests/XMLCoderTests/BooksTest.swift
+++ b/Tests/XMLCoderTests/BooksTest.swift
@@ -187,49 +187,41 @@ final class BooksTest: XCTestCase {
return formatter
}()
- func testBookXML() {
+ func testBookXML() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
decoder.dateDecodingStrategy = .formatted(formatter)
encoder.dateEncodingStrategy = .formatted(formatter)
- do {
- let book1 = try decoder.decode(Book.self, from: bookXML)
- XCTAssertEqual(book1.publishDate,
- Date(timeIntervalSince1970: 970_358_400))
-
- let data = try encoder.encode(book1, withRootKey: "book",
- header: XMLHeader(version: 1.0,
- encoding: "UTF-8"))
- let book2 = try decoder.decode(Book.self, from: data)
- XCTAssertEqual(book1, book2)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let book1 = try decoder.decode(Book.self, from: bookXML)
+ XCTAssertEqual(book1.publishDate,
+ Date(timeIntervalSince1970: 970_358_400))
+
+ let data = try encoder.encode(book1, withRootKey: "book",
+ header: XMLHeader(version: 1.0,
+ encoding: "UTF-8"))
+ let book2 = try decoder.decode(Book.self, from: data)
+ XCTAssertEqual(book1, book2)
}
- func testCatalogXML() {
+ func testCatalogXML() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
decoder.dateDecodingStrategy = .formatted(formatter)
encoder.dateEncodingStrategy = .formatted(formatter)
- do {
- let catalog1 = try decoder.decode(Catalog.self, from: catalogXML)
- XCTAssertEqual(catalog1.books.count, 12)
- XCTAssertEqual(catalog1.books[0].publishDate,
- Date(timeIntervalSince1970: 970_358_400))
-
- let data = try encoder.encode(catalog1, withRootKey: "catalog",
- header: XMLHeader(version: 1.0,
- encoding: "UTF-8"))
- let catalog2 = try decoder.decode(Catalog.self, from: data)
- XCTAssertEqual(catalog1, catalog2)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let catalog1 = try decoder.decode(Catalog.self, from: catalogXML)
+ XCTAssertEqual(catalog1.books.count, 12)
+ XCTAssertEqual(catalog1.books[0].publishDate,
+ Date(timeIntervalSince1970: 970_358_400))
+
+ let data = try encoder.encode(catalog1, withRootKey: "catalog",
+ header: XMLHeader(version: 1.0,
+ encoding: "UTF-8"))
+ let catalog2 = try decoder.decode(Catalog.self, from: data)
+ XCTAssertEqual(catalog1, catalog2)
}
static var allTests = [
diff --git a/Tests/XMLCoderTests/BreakfastTest.swift b/Tests/XMLCoderTests/BreakfastTest.swift
index 6a8803d0..17ebea24 100644
--- a/Tests/XMLCoderTests/BreakfastTest.swift
+++ b/Tests/XMLCoderTests/BreakfastTest.swift
@@ -57,22 +57,18 @@ private struct Food: Codable, Equatable {
}
final class BreakfastTest: XCTestCase {
- func testXML() {
+ func testXML() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
- do {
- let menu1 = try decoder.decode(Menu.self, from: xml)
- XCTAssertEqual(menu1.food.count, 5)
+ let menu1 = try decoder.decode(Menu.self, from: xml)
+ XCTAssertEqual(menu1.food.count, 5)
- let data = try encoder.encode(menu1, withRootKey: "breakfast_menu",
- header: XMLHeader(version: 1.0,
- encoding: "UTF-8"))
- let menu2 = try decoder.decode(Menu.self, from: data)
- XCTAssertEqual(menu1, menu2)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let data = try encoder.encode(menu1, withRootKey: "breakfast_menu",
+ header: XMLHeader(version: 1.0,
+ encoding: "UTF-8"))
+ let menu2 = try decoder.decode(Menu.self, from: data)
+ XCTAssertEqual(menu1, menu2)
}
static var allTests = [
diff --git a/Tests/XMLCoderTests/CDTest.swift b/Tests/XMLCoderTests/CDTest.swift
index 26885a5f..8734ce8c 100644
--- a/Tests/XMLCoderTests/CDTest.swift
+++ b/Tests/XMLCoderTests/CDTest.swift
@@ -44,26 +44,21 @@ private let lastCD = CD(title: "Unchain my heart",
year: 1987)
final class CDTest: XCTestCase {
- func testXML() {
+ func testXML() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
- do {
- let cdCatalog1 = try decoder.decode(CDCatalog.self,
- from: cdCatalogXML)
- XCTAssertEqual(cdCatalog1.cds.count, 26)
- XCTAssertEqual(cdCatalog1.cds[25], lastCD)
+ let cdCatalog1 = try decoder.decode(CDCatalog.self,
+ from: cdCatalogXML)
+ XCTAssertEqual(cdCatalog1.cds.count, 26)
+ XCTAssertEqual(cdCatalog1.cds[25], lastCD)
- let data = try encoder.encode(cdCatalog1, withRootKey: "CATALOG",
- header: XMLHeader(version: 1.0,
- encoding: "UTF-8"))
- let cdCatalog2 = try decoder.decode(CDCatalog.self, from: data)
+ let data = try encoder.encode(cdCatalog1, withRootKey: "CATALOG",
+ header: XMLHeader(version: 1.0,
+ encoding: "UTF-8"))
+ let cdCatalog2 = try decoder.decode(CDCatalog.self, from: data)
- XCTAssertEqual(cdCatalog1, cdCatalog2)
-
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ XCTAssertEqual(cdCatalog1, cdCatalog2)
}
static var allTests = [
diff --git a/Tests/XMLCoderTests/Minimal/BoolTests.swift b/Tests/XMLCoderTests/Minimal/BoolTests.swift
index 0d0b2a32..1d9803aa 100644
--- a/Tests/XMLCoderTests/Minimal/BoolTests.swift
+++ b/Tests/XMLCoderTests/Minimal/BoolTests.swift
@@ -20,7 +20,16 @@ class BoolTests: XCTestCase {
(true, "true"),
]
- func testAttribute() {
+ func testMissing() {
+ let decoder = XMLDecoder()
+
+ let xmlString = ""
+ let xmlData = xmlString.data(using: .utf8)!
+
+ XCTAssertThrowsError(try decoder.decode(Container.self, from: xmlData))
+ }
+
+ func testAttribute() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
@@ -29,48 +38,40 @@ class BoolTests: XCTestCase {
}
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
- func testElement() {
+ func testElement() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
encoder.outputFormatting = [.prettyPrinted]
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- \(xmlString)
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ \(xmlString)
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
diff --git a/Tests/XMLCoderTests/Minimal/DataTests.swift b/Tests/XMLCoderTests/Minimal/DataTests.swift
index 59ad255f..695d3e3a 100644
--- a/Tests/XMLCoderTests/Minimal/DataTests.swift
+++ b/Tests/XMLCoderTests/Minimal/DataTests.swift
@@ -21,7 +21,16 @@ class DataTests: XCTestCase {
(Data(base64Encoded: "bG9yZW0gaXBzdW0=")!, "bG9yZW0gaXBzdW0="),
]
- func testAttribute() {
+ func testMissing() {
+ let decoder = XMLDecoder()
+
+ let xmlString = ""
+ let xmlData = xmlString.data(using: .utf8)!
+
+ XCTAssertThrowsError(try decoder.decode(Container.self, from: xmlData))
+ }
+
+ func testAttribute() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
@@ -30,48 +39,40 @@ class DataTests: XCTestCase {
}
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
- func testElement() {
+ func testElement() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
encoder.outputFormatting = [.prettyPrinted]
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- \(xmlString)
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ \(xmlString)
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
diff --git a/Tests/XMLCoderTests/Minimal/DateTests.swift b/Tests/XMLCoderTests/Minimal/DateTests.swift
index 14aca3a9..ec73ab7e 100644
--- a/Tests/XMLCoderTests/Minimal/DateTests.swift
+++ b/Tests/XMLCoderTests/Minimal/DateTests.swift
@@ -19,7 +19,16 @@ class DateTests: XCTestCase {
(Date(timeIntervalSince1970: 0.0), "0.0"),
]
- func testAttribute() {
+ func testMissing() {
+ let decoder = XMLDecoder()
+
+ let xmlString = ""
+ let xmlData = xmlString.data(using: .utf8)!
+
+ XCTAssertThrowsError(try decoder.decode(Container.self, from: xmlData))
+ }
+
+ func testAttribute() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
@@ -30,25 +39,21 @@ class DateTests: XCTestCase {
encoder.dateEncodingStrategy = .secondsSince1970
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
- func testElement() {
+ func testElement() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
@@ -57,23 +62,19 @@ class DateTests: XCTestCase {
encoder.dateEncodingStrategy = .secondsSince1970
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- \(xmlString)
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ \(xmlString)
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
diff --git a/Tests/XMLCoderTests/Minimal/DecimalTests.swift b/Tests/XMLCoderTests/Minimal/DecimalTests.swift
index ed835869..6cdcc5a2 100644
--- a/Tests/XMLCoderTests/Minimal/DecimalTests.swift
+++ b/Tests/XMLCoderTests/Minimal/DecimalTests.swift
@@ -21,7 +21,16 @@ class DecimalTests: XCTestCase {
(Decimal(12.34), "12.34"),
]
- func testAttribute() {
+ func testMissing() {
+ let decoder = XMLDecoder()
+
+ let xmlString = ""
+ let xmlData = xmlString.data(using: .utf8)!
+
+ XCTAssertThrowsError(try decoder.decode(Container.self, from: xmlData))
+ }
+
+ func testAttribute() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
@@ -30,48 +39,40 @@ class DecimalTests: XCTestCase {
}
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
- func testElement() {
+ func testElement() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
encoder.outputFormatting = [.prettyPrinted]
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- \(xmlString)
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ \(xmlString)
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
diff --git a/Tests/XMLCoderTests/Minimal/FloatTests.swift b/Tests/XMLCoderTests/Minimal/FloatTests.swift
index d76aeab4..5455e268 100644
--- a/Tests/XMLCoderTests/Minimal/FloatTests.swift
+++ b/Tests/XMLCoderTests/Minimal/FloatTests.swift
@@ -21,7 +21,16 @@ class FloatTests: XCTestCase {
(42.0, "42.0"),
]
- func testAttribute() {
+ func testMissing() {
+ let decoder = XMLDecoder()
+
+ let xmlString = ""
+ let xmlData = xmlString.data(using: .utf8)!
+
+ XCTAssertThrowsError(try decoder.decode(Container.self, from: xmlData))
+ }
+
+ func testAttribute() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
@@ -30,48 +39,40 @@ class FloatTests: XCTestCase {
}
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
- func testElement() {
+ func testElement() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
encoder.outputFormatting = [.prettyPrinted]
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- \(xmlString)
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ \(xmlString)
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
diff --git a/Tests/XMLCoderTests/Minimal/IntTests.swift b/Tests/XMLCoderTests/Minimal/IntTests.swift
index 1c2088bd..ff778736 100644
--- a/Tests/XMLCoderTests/Minimal/IntTests.swift
+++ b/Tests/XMLCoderTests/Minimal/IntTests.swift
@@ -21,7 +21,16 @@ class IntTests: XCTestCase {
(42, "42"),
]
- func testAttribute() {
+ func testMissing() {
+ let decoder = XMLDecoder()
+
+ let xmlString = ""
+ let xmlData = xmlString.data(using: .utf8)!
+
+ XCTAssertThrowsError(try decoder.decode(Container.self, from: xmlData))
+ }
+
+ func testAttribute() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
@@ -30,48 +39,40 @@ class IntTests: XCTestCase {
}
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
- func testElement() {
+ func testElement() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
encoder.outputFormatting = [.prettyPrinted]
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- \(xmlString)
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ \(xmlString)
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
diff --git a/Tests/XMLCoderTests/Minimal/KeyedTests.swift b/Tests/XMLCoderTests/Minimal/KeyedTests.swift
index a5d7e32d..9052f30d 100644
--- a/Tests/XMLCoderTests/Minimal/KeyedTests.swift
+++ b/Tests/XMLCoderTests/Minimal/KeyedTests.swift
@@ -13,68 +13,49 @@ class KeyedTests: XCTestCase {
let value: [String: Int]
}
- func testEmpty() {
+ func testEmpty() throws {
let decoder = XMLDecoder()
- do {
- let xmlString =
- """
-
-
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, [:])
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString = ""
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, [:])
}
- func testSingleElement() {
+ func testSingleElement() throws {
let decoder = XMLDecoder()
- do {
- let xmlString =
- """
-
-
-
- 12
-
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, ["foo": 12])
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+
+ 12
+
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, ["foo": 12])
}
- func testMultiElement() {
+ func testMultiElement() throws {
let decoder = XMLDecoder()
- do {
- let xmlString =
- """
-
-
-
- 12
- 34
-
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, ["foo": 12, "bar": 34])
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+
+ 12
+ 34
+
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, ["foo": 12, "bar": 34])
}
func testAttribute() {
diff --git a/Tests/XMLCoderTests/Minimal/NullTests.swift b/Tests/XMLCoderTests/Minimal/NullTests.swift
index fee3b0d1..eab31772 100644
--- a/Tests/XMLCoderTests/Minimal/NullTests.swift
+++ b/Tests/XMLCoderTests/Minimal/NullTests.swift
@@ -13,7 +13,7 @@ class NullTests: XCTestCase {
let value: Int?
}
- func testAttribute() {
+ func testAttribute() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
@@ -21,44 +21,36 @@ class NullTests: XCTestCase {
return { _ in .attribute }
}
- do {
- let xmlString =
- """
-
- """
- let xmlData = xmlString.data(using: .utf8)!
+ let xmlString =
+ """
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertNil(decoded.value)
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertNil(decoded.value)
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
- func testElement() {
+ func testElement() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
encoder.outputFormatting = [.prettyPrinted]
- do {
- let xmlString =
- """
-
- """
- let xmlData = xmlString.data(using: .utf8)!
+ let xmlString =
+ """
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertNil(decoded.value)
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertNil(decoded.value)
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
static var allTests = [
diff --git a/Tests/XMLCoderTests/Minimal/StringTests.swift b/Tests/XMLCoderTests/Minimal/StringTests.swift
index 5636ca1b..9c9766f7 100644
--- a/Tests/XMLCoderTests/Minimal/StringTests.swift
+++ b/Tests/XMLCoderTests/Minimal/StringTests.swift
@@ -25,7 +25,16 @@ class StringTests: XCTestCase {
("foobar", "foobar"),
]
- func testAttribute() {
+ func testMissing() {
+ let decoder = XMLDecoder()
+
+ let xmlString = ""
+ let xmlData = xmlString.data(using: .utf8)!
+
+ XCTAssertThrowsError(try decoder.decode(Container.self, from: xmlData))
+ }
+
+ func testAttribute() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
@@ -34,48 +43,40 @@ class StringTests: XCTestCase {
}
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
- func testElement() {
+ func testElement() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
encoder.outputFormatting = [.prettyPrinted]
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- \(xmlString)
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ \(xmlString)
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
diff --git a/Tests/XMLCoderTests/Minimal/UIntTests.swift b/Tests/XMLCoderTests/Minimal/UIntTests.swift
index 27fc15f3..3476cc0d 100644
--- a/Tests/XMLCoderTests/Minimal/UIntTests.swift
+++ b/Tests/XMLCoderTests/Minimal/UIntTests.swift
@@ -20,7 +20,16 @@ class UIntTests: XCTestCase {
(42, "42"),
]
- func testAttribute() {
+ func testMissing() {
+ let decoder = XMLDecoder()
+
+ let xmlString = ""
+ let xmlData = xmlString.data(using: .utf8)!
+
+ XCTAssertThrowsError(try decoder.decode(Container.self, from: xmlData))
+ }
+
+ func testAttribute() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
@@ -29,48 +38,40 @@ class UIntTests: XCTestCase {
}
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
- func testElement() {
+ func testElement() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
encoder.outputFormatting = [.prettyPrinted]
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- \(xmlString)
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ \(xmlString)
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
diff --git a/Tests/XMLCoderTests/Minimal/URLTests.swift b/Tests/XMLCoderTests/Minimal/URLTests.swift
index a5ddf568..f62fb3b1 100644
--- a/Tests/XMLCoderTests/Minimal/URLTests.swift
+++ b/Tests/XMLCoderTests/Minimal/URLTests.swift
@@ -20,7 +20,16 @@ class URLTests: XCTestCase {
(URL(string: "http://example.com")!, "http://example.com"),
]
- func testAttribute() {
+ func testMissing() {
+ let decoder = XMLDecoder()
+
+ let xmlString = ""
+ let xmlData = xmlString.data(using: .utf8)!
+
+ XCTAssertThrowsError(try decoder.decode(Container.self, from: xmlData))
+ }
+
+ func testAttribute() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
@@ -29,48 +38,40 @@ class URLTests: XCTestCase {
}
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
- func testElement() {
+ func testElement() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
encoder.outputFormatting = [.prettyPrinted]
for (value, xmlString) in values {
- do {
- let xmlString =
- """
-
- \(xmlString)
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, value)
-
- let encoded = try encoder.encode(decoded, withRootKey: "container")
- XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ \(xmlString)
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, value)
+
+ let encoded = try encoder.encode(decoded, withRootKey: "container")
+ XCTAssertEqual(String(data: encoded, encoding: .utf8)!, xmlString)
}
}
diff --git a/Tests/XMLCoderTests/Minimal/UnkeyedTests.swift b/Tests/XMLCoderTests/Minimal/UnkeyedTests.swift
index 3c9468bb..7d746fb4 100644
--- a/Tests/XMLCoderTests/Minimal/UnkeyedTests.swift
+++ b/Tests/XMLCoderTests/Minimal/UnkeyedTests.swift
@@ -13,64 +13,45 @@ class UnkeyedTests: XCTestCase {
let value: [String]
}
- func testEmpty() {
+ func testEmpty() throws {
let decoder = XMLDecoder()
- do {
- let xmlString =
- """
-
-
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, [])
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString = ""
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, [])
}
- func testSingleElement() {
+ func testSingleElement() throws {
let decoder = XMLDecoder()
- do {
- let xmlString =
- """
-
-
- foo
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, ["foo"])
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ foo
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, ["foo"])
}
- func testMultiElement() {
+ func testMultiElement() throws {
let decoder = XMLDecoder()
- do {
- let xmlString =
- """
-
-
- foo
- bar
-
- """
- let xmlData = xmlString.data(using: .utf8)!
-
- let decoded = try decoder.decode(Container.self, from: xmlData)
- XCTAssertEqual(decoded.value, ["foo", "bar"])
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let xmlString =
+ """
+
+ foo
+ bar
+
+ """
+ let xmlData = xmlString.data(using: .utf8)!
+
+ let decoded = try decoder.decode(Container.self, from: xmlData)
+ XCTAssertEqual(decoded.value, ["foo", "bar"])
}
func testAttribute() {
diff --git a/Tests/XMLCoderTests/NoteTest.swift b/Tests/XMLCoderTests/NoteTest.swift
index a1f8f809..72501bbe 100644
--- a/Tests/XMLCoderTests/NoteTest.swift
+++ b/Tests/XMLCoderTests/NoteTest.swift
@@ -37,36 +37,27 @@ private struct Note: Codable, Equatable {
}
final class NoteTest: XCTestCase {
- func testValidXML() {
+ func testValidXML() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
- do {
- let note1 = try decoder.decode(Note.self, from: validXml)
- XCTAssertEqual(note1.to, "Tove")
- XCTAssertEqual(note1.from, "Jani")
- XCTAssertEqual(note1.heading, "Reminder")
- XCTAssertEqual(note1.body, "Don't forget me this weekend!")
+ let note1 = try decoder.decode(Note.self, from: validXml)
+ XCTAssertEqual(note1.to, "Tove")
+ XCTAssertEqual(note1.from, "Jani")
+ XCTAssertEqual(note1.heading, "Reminder")
+ XCTAssertEqual(note1.body, "Don't forget me this weekend!")
- let data = try encoder.encode(note1, withRootKey: "note",
- header: XMLHeader(version: 1.0,
- encoding: "UTF-8"))
- let note2 = try decoder.decode(Note.self, from: data)
- XCTAssertEqual(note1, note2)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ let data = try encoder.encode(note1, withRootKey: "note",
+ header: XMLHeader(version: 1.0,
+ encoding: "UTF-8"))
+ let note2 = try decoder.decode(Note.self, from: data)
+ XCTAssertEqual(note1, note2)
}
func testInvalidXML() {
let decoder = XMLDecoder()
- do {
- _ = try decoder.decode(Note.self, from: invalidXml)
- XCTFail("Expected failure due to malformed XML.")
- } catch {
- // success!
- }
+ XCTAssertThrowsError(try decoder.decode(Note.self, from: invalidXml))
}
static var allTests = [
diff --git a/Tests/XMLCoderTests/PlantTest.swift b/Tests/XMLCoderTests/PlantTest.swift
index 80993437..771749ba 100644
--- a/Tests/XMLCoderTests/PlantTest.swift
+++ b/Tests/XMLCoderTests/PlantTest.swift
@@ -109,25 +109,21 @@ private let lastPlant = Plant(common: "Cardinal Flower",
amountAvailable: 22299)
final class PlantTest: XCTestCase {
- func testXML() {
+ func testXML() throws {
let decoder = XMLDecoder()
let encoder = XMLEncoder()
- do {
- let plantCatalog1 = try decoder.decode(PlantCatalog.self,
- from: plantCatalogXML)
- XCTAssertEqual(plantCatalog1.plants.count, 36)
- XCTAssertEqual(plantCatalog1.plants[35], lastPlant)
+ let plantCatalog1 = try decoder.decode(PlantCatalog.self,
+ from: plantCatalogXML)
+ XCTAssertEqual(plantCatalog1.plants.count, 36)
+ XCTAssertEqual(plantCatalog1.plants[35], lastPlant)
- let data = try encoder.encode(plantCatalog1, withRootKey: "CATALOG",
- header: XMLHeader(version: 1.0,
- encoding: "UTF-8"))
- let plantCatalog2 = try decoder.decode(PlantCatalog.self, from: data)
+ let data = try encoder.encode(plantCatalog1, withRootKey: "CATALOG",
+ header: XMLHeader(version: 1.0,
+ encoding: "UTF-8"))
+ let plantCatalog2 = try decoder.decode(PlantCatalog.self, from: data)
- XCTAssertEqual(plantCatalog1, plantCatalog2)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ XCTAssertEqual(plantCatalog1, plantCatalog2)
}
static var allTests = [
diff --git a/Tests/XMLCoderTests/RJITest.swift b/Tests/XMLCoderTests/RJITest.swift
index 6f94423c..fef4492f 100644
--- a/Tests/XMLCoderTests/RJITest.swift
+++ b/Tests/XMLCoderTests/RJITest.swift
@@ -141,7 +141,7 @@ class RJITest: XCTestCase {
let type: String
}
- func testRSS() {
+ func testRSS() throws {
let decoder = XMLDecoder()
// let encoder = XMLEncoder()
@@ -149,39 +149,18 @@ class RJITest: XCTestCase {
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
decoder.dateDecodingStrategy = .formatted(dateFormatter)
- do {
-// let rss1
- _ = try decoder.decode(RSS.self, from: rjiSampleXML)
- // this is a very peculiar case of `XMLCoder` not being able to decode an XML
- // that it itself encoded
-// data = try encoder.encode(rss1, withRootKey: "note",
-// header: XMLHeader(version: 1.0,
-// encoding: "UTF-8"))
-// let rss2 = try decoder.decode(RSS.self, from: data)
-// XCTAssertEqual(rss1, rss2)
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
- }
-
- func testBenchmarkRSS() throws {
- let decoder = XMLDecoder()
-
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
- decoder.dateDecodingStrategy = .formatted(dateFormatter)
-
- measure {
- do {
- _ = try decoder.decode(RSS.self, from: rjiSampleXML)
- } catch {
- XCTFail("failed to decode test xml: \(error)")
- }
- }
+// let rss1
+ _ = try decoder.decode(RSS.self, from: rjiSampleXML)
+ // this is a very peculiar case of `XMLCoder` not being able to decode an XML
+ // that it itself encoded
+// data = try encoder.encode(rss1, withRootKey: "note",
+// header: XMLHeader(version: 1.0,
+// encoding: "UTF-8"))
+// let rss2 = try decoder.decode(RSS.self, from: data)
+// XCTAssertEqual(rss1, rss2)
}
static var allTests = [
("testRSS", testRSS),
- ("testBenchmarkRSS", testBenchmarkRSS),
]
}
diff --git a/Tests/XMLCoderTests/RelationshipsTest.swift b/Tests/XMLCoderTests/RelationshipsTest.swift
index 776c1d32..767ec575 100644
--- a/Tests/XMLCoderTests/RelationshipsTest.swift
+++ b/Tests/XMLCoderTests/RelationshipsTest.swift
@@ -45,17 +45,13 @@ private struct Relationship: Codable {
}
final class RelationshipsTest: XCTestCase {
- func testDecoder() {
- do {
- let decoder = XMLDecoder()
- decoder.keyDecodingStrategy = .convertFromCapitalized
+ func testDecoder() throws {
+ let decoder = XMLDecoder()
+ decoder.keyDecodingStrategy = .convertFromCapitalized
- let rels = try decoder.decode(Relationships.self, from: xml)
+ let rels = try decoder.decode(Relationships.self, from: xml)
- XCTAssertEqual(rels.items[0].id, "rId1")
- } catch {
- XCTAssert(false, "failed to decode test xml: \(error)")
- }
+ XCTAssertEqual(rels.items[0].id, "rId1")
}
static var allTests = [