Skip to content

Commit de110fc

Browse files
committed
first test, of JSONUnarchiver
1 parent 8800156 commit de110fc

File tree

3 files changed

+68
-54
lines changed

3 files changed

+68
-54
lines changed

Example/JSONCoding.xcodeproj/project.pbxproj

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10-
607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; };
10+
607FACEC1AFB9204008FA782 /* JSONUnarchiver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* JSONUnarchiver.swift */; };
1111
CEE38F439386755CBEFDE6EA /* Pods_JSONCoding_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A24C9DAB021CD503FC19C0E4 /* Pods_JSONCoding_Tests.framework */; };
1212
/* End PBXBuildFile section */
1313

@@ -17,7 +17,7 @@
1717
36246745792588BD7FF76D1C /* Pods-JSONCoding_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JSONCoding_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-JSONCoding_Tests/Pods-JSONCoding_Tests.release.xcconfig"; sourceTree = "<group>"; };
1818
607FACE51AFB9204008FA782 /* JSONCoding_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = JSONCoding_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
1919
607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
20-
607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = "<group>"; };
20+
607FACEB1AFB9204008FA782 /* JSONUnarchiver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONUnarchiver.swift; sourceTree = "<group>"; };
2121
7DACE38BDD5F45ED4EA47AC0 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
2222
8C38B400C844F2C157922E56 /* JSONCoding.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = JSONCoding.podspec; path = ../JSONCoding.podspec; sourceTree = "<group>"; };
2323
A24C9DAB021CD503FC19C0E4 /* Pods_JSONCoding_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_JSONCoding_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -57,7 +57,7 @@
5757
607FACE81AFB9204008FA782 /* Tests */ = {
5858
isa = PBXGroup;
5959
children = (
60-
607FACEB1AFB9204008FA782 /* Tests.swift */,
60+
607FACEB1AFB9204008FA782 /* JSONUnarchiver.swift */,
6161
607FACE91AFB9204008FA782 /* Supporting Files */,
6262
);
6363
path = Tests;
@@ -219,7 +219,7 @@
219219
isa = PBXSourcesBuildPhase;
220220
buildActionMask = 2147483647;
221221
files = (
222-
607FACEC1AFB9204008FA782 /* Tests.swift in Sources */,
222+
607FACEC1AFB9204008FA782 /* JSONUnarchiver.swift in Sources */,
223223
);
224224
runOnlyForDeploymentPostprocessing = 0;
225225
};

Example/Tests/JSONUnarchiver.swift

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
//
2+
// JSONUnarchiverSpec.swift
3+
// JSONCoding
4+
//
5+
// Created by Jim Roepcke on 2017-01-02.
6+
// Copyright © 2016- Jim Roepcke.
7+
//
8+
// Permission is hereby granted, free of charge, to any person obtaining a copy
9+
// of this software and associated documentation files (the "Software"), to
10+
// deal in the Software without restriction, including without limitation the
11+
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
12+
// sell copies of the Software, and to permit persons to whom the Software is
13+
// furnished to do so, subject to the following conditions:
14+
//
15+
// The above copyright notice and this permission notice shall be included in
16+
// all copies or substantial portions of the Software.
17+
//
18+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23+
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24+
// IN THE SOFTWARE.
25+
//
26+
import Quick
27+
import Nimble
28+
import JSONCoding
29+
30+
class JSONUnarchiverSpec: QuickSpec {
31+
override func spec() {
32+
describe("JSONUnarchiver") {
33+
34+
context("unarchiving top level JSONCoding values") {
35+
36+
it("can unarchive a VerySimpleTestThing") {
37+
let number = 42
38+
let json: JSON = ["number": number]
39+
do {
40+
let thing: VerySimpleTestThing = try JSONUnarchiver.topLevelUnarchived(with: json) { _ in }
41+
expect(thing.number) == number
42+
} catch {
43+
fail("\(error)")
44+
}
45+
}
46+
47+
}
48+
}
49+
}
50+
}
51+
52+
private struct VerySimpleTestThing: JSONCoding {
53+
54+
let number: Int
55+
56+
enum Key: String, JSONKey {
57+
case number
58+
}
59+
60+
static func _unarchived(with json: Any, unarchiver: JSONUnarchiving) throws -> VerySimpleTestThing {
61+
return VerySimpleTestThing(number: try Key.number.value(in: json))
62+
}
63+
64+
}

Example/Tests/Tests.swift

-50
This file was deleted.

0 commit comments

Comments
 (0)