@@ -48,42 +48,49 @@ fileprivate struct FridgeTestObject: Codable {
48
48
string_field = " Some f🧊ncy string "
49
49
int_field = Int . max
50
50
dict_field = InnerTestObject ( )
51
- arr_field = [ 100 , 200 , 300 , Int . random ( in : Int . min ... Int . max ) ]
52
- data_field = Data ( repeating: 0xAE , count: 0xABCDEF )
51
+ arr_field = [ 0xABCDEF , 0xCAB0CAB , 0xFADE , 0xEFCAD ]
52
+ data_field = Data ( repeating: 0xAE , count: 0xE1FE1 )
53
53
url_field = URL ( fileURLWithPath: " someFilePathOfAMockObject " )
54
54
}
55
55
}
56
56
57
57
fileprivate struct InnerTestObject : Codable {
58
- var field1 : Float = 1_234_567.890_001
59
- var field2 : Double = Double . pi
60
- var field3 : Set = Set ( [ 1 , 2 , 3 ] )
61
- var field4 : String ? = nil
58
+ var field1 : String ? = nil
59
+ var field2 : Float = 1_234_567.890_001
60
+ var field3 : Double = Double . pi
61
+ var field4 : Date = Date . init ( )
62
+ var field5 : Bool = !false
63
+
64
+ var field6 : Set = Set ( [ 1 , 2 , 3 ] )
65
+ var field7 : Array < Int64 > = Array . init ( )
62
66
}
63
67
64
68
extension FridgeTestObject : Equatable {
65
69
static func == ( lhs: FridgeTestObject , rhs: FridgeTestObject ) -> Bool {
66
70
let equality =
67
71
( lhs. string_field == rhs. string_field) &&
68
72
( lhs. int_field == rhs. int_field) &&
69
- ( lhs. arr_field == rhs. arr_field)
73
+ ( lhs. arr_field == rhs. arr_field) &&
74
+ ( lhs. data_field == rhs. data_field) &&
75
+ ( lhs. url_field == rhs. url_field)
70
76
71
77
return equality
72
78
}
73
79
}
74
80
81
+ // !! LET THE HUNT BEGIN !! 🕵️♂️🥷
75
82
final class FreezerTests : XCTestCase {
76
83
// SHARED TESTING OBJECT
77
84
let freezer = Freezer ( )
78
85
79
86
/// Tests weather an object can be saved without throwing error
80
- func testBasicFreezing ( ) {
81
- let testData1 = FridgeTestObject ( )
82
- XCTAssertNoThrow ( try freezer. freeze ( object: testData1 , identifier: FridgeTestObject . IDENTIFIER) )
87
+ func testObjectFreezing ( ) {
88
+ let testData = FridgeTestObject ( )
89
+ XCTAssertNoThrow ( try freezer. freeze ( object: testData , identifier: FridgeTestObject . IDENTIFIER) )
83
90
}
84
91
85
92
/// Tests weather an object can be loaded without throwing error
86
- func testBasicUnfreezing ( ) {
93
+ func testObjectUnfreezing ( ) {
87
94
//freeze an object first
88
95
let frozenObject = FridgeTestObject ( )
89
96
@@ -106,15 +113,37 @@ final class FreezerTests: XCTestCase {
106
113
}
107
114
108
115
/// Tests if array can be stored
109
- // func testFreezingAnArray() throws {
110
- // XCTAssertFalse(freezer.isAlreadyFrozen(identifier: "array.test"))
111
- //
112
- // let freezingArray = [1,2,3,4,5,6,7,8]
113
- // let objectArray: Array<FridgeTestObject> = [FridgeTestObject(), FridgeTestObject()]
114
- // try freezer.freeze(object: freezingArray, identifier: "array.test")
115
- // try freezer.freeze(object: objectArray, identifier: "array-object.test")
116
- //
117
- // let unpackedObject: [Int] = try freezer.unfreeze(identifier: "array.test")
118
- // XCTAssert(unpackedObject[0] == freezingArray[0])
119
- // }
116
+ func testArrayFreezing( ) throws {
117
+ XCTAssertFalse ( freezer. isAlreadyFrozen ( identifier: " array.test " ) )
118
+
119
+ let foundationArray = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
120
+ let customStructArray : Array < FridgeTestObject > = [ FridgeTestObject ( ) , FridgeTestObject ( ) ]
121
+ XCTAssertNoThrow ( try freezer. freeze ( objects: foundationArray, identifier: " foundation.array " ) )
122
+ XCTAssertNoThrow ( try freezer. freeze ( objects: customStructArray, identifier: " array-object.test " ) )
123
+
124
+ // make sure it actually throws when passed incorrectly
125
+ XCTAssertThrowsError ( try freezer. freeze ( object: foundationArray, identifier: " wrong.method.array " ) )
126
+ XCTAssertThrowsError ( try freezer. freeze ( object: customStructArray, identifier: " wrong.method.custom.array " ) )
127
+ }
128
+
129
+ /// Tests if array can be read from the storage
130
+ func testArrayUnFreezing( ) throws {
131
+ let expectedFoundationArray = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
132
+ let expectedStructArray : Array < FridgeTestObject > = [ FridgeTestObject ( ) , FridgeTestObject ( ) ]
133
+ var failureMessage : String
134
+
135
+ do {
136
+ // check foundation
137
+ failureMessage = " Foundation array issue "
138
+ let unfrozenFoundation : Array < Int > = try freezer. unfreeze ( identifier: " foundation.array " )
139
+ XCTAssert ( unfrozenFoundation == expectedFoundationArray)
140
+
141
+ failureMessage = " Array of custom struct issue "
142
+ let unfrozenCustomArray : Array < FridgeTestObject > = try freezer. unfreeze ( identifier: " array-object.test " )
143
+ XCTAssert ( unfrozenCustomArray [ 0 ] == expectedStructArray [ 0 ] )
144
+ // XCTAssert(unfrozenCustomArray[0].dict_field == expectedStructArray[0].dict_field)
145
+ } catch {
146
+ XCTFail ( failureMessage)
147
+ }
148
+ }
120
149
}
0 commit comments