@@ -39,6 +39,7 @@ class TestUserDefaults : XCTestCase {
39
39
( " test_setValue_IntFromString " , test_setValue_IntFromString ) ,
40
40
( " test_setValue_DoubleFromString " , test_setValue_DoubleFromString ) ,
41
41
( " test_volatileDomains " , test_volatileDomains) ,
42
+ ( " test_persistentDomain " , test_persistentDomain ) ,
42
43
]
43
44
}
44
45
@@ -289,4 +290,43 @@ class TestUserDefaults : XCTestCase {
289
290
XCTAssertEqual ( defaultsIn [ dataKey] as! Data , defaultsOut [ dataKey] as! Data )
290
291
XCTAssertEqual ( defaultsIn [ boolKey] as! Bool , defaultsOut [ boolKey] as! Bool )
291
292
}
293
+
294
+ func test_persistentDomain( ) {
295
+ let int = ( key: " An Integer " , value: 1234 )
296
+ let double = ( key: " A Double " , value: 5678.0 )
297
+ let string = ( key: " A String " , value: " Some string " )
298
+ let array = ( key: " An Array " , value: [ 1 , 2 , 3 , 4 , " Surprise " ] as [ AnyHashable ] )
299
+ let dictionary = ( key: " A Dictionary " , value: [ " Swift " : " Imperative " , " Haskell " : " Functional " , " LISP " : " LISP " , " Today " : Date ( ) ] as [ String : AnyHashable ] )
300
+
301
+ let domainName = " org.swift.Foundation.TestPersistentDomainName "
302
+
303
+ let defaults1 = UserDefaults ( suiteName: nil ) !
304
+
305
+ defaults1. removePersistentDomain ( forName: domainName)
306
+ XCTAssertNil ( defaults1. persistentDomain ( forName: domainName) )
307
+
308
+ defaults1. setPersistentDomain ( [ int. key: int. value,
309
+ double. key: double. value,
310
+ string. key: string. value,
311
+ array. key: array. value,
312
+ dictionary. key: dictionary. value] ,
313
+ forName: domainName)
314
+
315
+ let defaults2 = UserDefaults ( suiteName: nil ) !
316
+ let returned = defaults2. persistentDomain ( forName: domainName)
317
+ XCTAssertNotNil ( returned)
318
+
319
+ if let returned = returned {
320
+ XCTAssertEqual ( returned [ int. key] as! Int , int. value)
321
+ XCTAssertEqual ( returned [ double. key] as! Double , double. value)
322
+ XCTAssertEqual ( returned [ string. key] as! String , string. value)
323
+ XCTAssertEqual ( returned [ array. key] as! [ AnyHashable ] , array. value)
324
+ XCTAssertEqual ( returned [ dictionary. key] as! [ String : AnyHashable ] , dictionary. value)
325
+ }
326
+
327
+ defaults2. removeSuite ( named: domainName)
328
+
329
+ let defaults3 = UserDefaults ( suiteName: nil ) !
330
+ XCTAssertNil ( defaults3. persistentDomain ( forName: domainName) )
331
+ }
292
332
}
0 commit comments