Skip to content

Commit 4315082

Browse files
committed
AnyHashable tests for Foundation types: add tests for bridging back to Swift types
1 parent 4b9e498 commit 4315082

14 files changed

+300
-2
lines changed

test/1_stdlib/TestAffineTransform.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,25 @@ class TestAffineTransform : TestAffineTransformSuper {
343343
expectNotEqual(anyHashables[0], anyHashables[1])
344344
expectEqual(anyHashables[1], anyHashables[2])
345345
}
346+
347+
func test_AnyHashableCreatedFromNSAffineTransform() {
348+
func makeNSAffineTransform(rotatedByDegrees angle: CGFloat) -> NSAffineTransform {
349+
let result = NSAffineTransform()
350+
result.rotate(byDegrees: angle)
351+
return result
352+
}
353+
let values: [NSAffineTransform] = [
354+
makeNSAffineTransform(rotatedByDegrees: 0),
355+
makeNSAffineTransform(rotatedByDegrees: 10),
356+
makeNSAffineTransform(rotatedByDegrees: 10),
357+
]
358+
let anyHashables = values.map(AnyHashable.init)
359+
expectEqual("AffineTransform", String(anyHashables[0].base.dynamicType))
360+
expectEqual("AffineTransform", String(anyHashables[1].base.dynamicType))
361+
expectEqual("AffineTransform", String(anyHashables[2].base.dynamicType))
362+
expectNotEqual(anyHashables[0], anyHashables[1])
363+
expectEqual(anyHashables[1], anyHashables[2])
364+
}
346365
}
347366

348367
#if !FOUNDATION_XCTEST
@@ -364,6 +383,7 @@ AffineTransformTests.test("test_TransformComposition") { TestAffineTransform().t
364383
AffineTransformTests.test("test_hashing_identity") { TestAffineTransform().test_hashing_identity() }
365384
AffineTransformTests.test("test_hashing_values") { TestAffineTransform().test_hashing_values() }
366385
AffineTransformTests.test("test_AnyHashableContainingAffineTransform") { TestAffineTransform().test_AnyHashableContainingAffineTransform() }
386+
AffineTransformTests.test("test_AnyHashableCreatedFromNSAffineTransform") { TestAffineTransform().test_AnyHashableCreatedFromNSAffineTransform() }
367387
runAllTests()
368388
#endif
369389

test/1_stdlib/TestCalendar.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,22 @@ class TestCalendar : TestCalendarSuper {
269269
expectNotEqual(anyHashables[0], anyHashables[1])
270270
expectEqual(anyHashables[1], anyHashables[2])
271271
}
272+
273+
func test_AnyHashableCreatedFromNSCalendar() {
274+
if #available(iOS 8.0, *) {
275+
let values: [NSCalendar] = [
276+
NSCalendar(identifier: .gregorian)!,
277+
NSCalendar(identifier: .japanese)!,
278+
NSCalendar(identifier: .japanese)!,
279+
]
280+
let anyHashables = values.map(AnyHashable.init)
281+
expectEqual("Calendar", String(anyHashables[0].base.dynamicType))
282+
expectEqual("Calendar", String(anyHashables[1].base.dynamicType))
283+
expectEqual("Calendar", String(anyHashables[2].base.dynamicType))
284+
expectNotEqual(anyHashables[0], anyHashables[1])
285+
expectEqual(anyHashables[1], anyHashables[2])
286+
}
287+
}
272288
}
273289

274290
#if !FOUNDATION_XCTEST
@@ -278,5 +294,6 @@ CalendarTests.test("test_bridgingAutoupdating") { TestCalendar().test_bridgingAu
278294
CalendarTests.test("test_equality") { TestCalendar().test_equality() }
279295
CalendarTests.test("test_properties") { TestCalendar().test_properties() }
280296
CalendarTests.test("test_AnyHashableContainingCalendar") { TestCalendar().test_AnyHashableContainingCalendar() }
297+
CalendarTests.test("test_AnyHashableCreatedFromNSCalendar") { TestCalendar().test_AnyHashableCreatedFromNSCalendar() }
281298
runAllTests()
282299
#endif

test/1_stdlib/TestCharacterSet.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,20 @@ class TestCharacterSet : TestCharacterSetSuper {
166166
expectNotEqual(anyHashables[0], anyHashables[1])
167167
expectEqual(anyHashables[1], anyHashables[2])
168168
}
169+
170+
func test_AnyHashableCreatedFromNSCharacterSet() {
171+
let values: [NSCharacterSet] = [
172+
NSCharacterSet(charactersIn: "ABC"),
173+
NSCharacterSet(charactersIn: "XYZ"),
174+
NSCharacterSet(charactersIn: "XYZ"),
175+
]
176+
let anyHashables = values.map(AnyHashable.init)
177+
expectEqual("CharacterSet", String(anyHashables[0].base.dynamicType))
178+
expectEqual("CharacterSet", String(anyHashables[1].base.dynamicType))
179+
expectEqual("CharacterSet", String(anyHashables[2].base.dynamicType))
180+
expectNotEqual(anyHashables[0], anyHashables[1])
181+
expectEqual(anyHashables[1], anyHashables[2])
182+
}
169183
}
170184

171185

@@ -180,6 +194,7 @@ CharacterSetTests.test("testInsertAndRemove") { TestCharacterSet().testInsertAnd
180194
CharacterSetTests.test("testBasics") { TestCharacterSet().testBasics() }
181195
CharacterSetTests.test("test_classForCoder") { TestCharacterSet().test_classForCoder() }
182196
CharacterSetTests.test("test_AnyHashableContainingCharacterSet") { TestCharacterSet().test_AnyHashableContainingCharacterSet() }
197+
CharacterSetTests.test("test_AnyHashableCreatedFromNSCharacterSet") { TestCharacterSet().test_AnyHashableCreatedFromNSCharacterSet() }
183198
runAllTests()
184199
#endif
185200

test/1_stdlib/TestData.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -879,6 +879,20 @@ class TestData : TestDataSuper {
879879
expectNotEqual(anyHashables[0], anyHashables[1])
880880
expectEqual(anyHashables[1], anyHashables[2])
881881
}
882+
883+
func test_AnyHashableCreatedFromNSData() {
884+
let values: [NSData] = [
885+
NSData(base64Encoded: "AAAA")!,
886+
NSData(base64Encoded: "AAAB")!,
887+
NSData(base64Encoded: "AAAB")!,
888+
]
889+
let anyHashables = values.map(AnyHashable.init)
890+
expectEqual("Data", String(anyHashables[0].base.dynamicType))
891+
expectEqual("Data", String(anyHashables[1].base.dynamicType))
892+
expectEqual("Data", String(anyHashables[2].base.dynamicType))
893+
expectNotEqual(anyHashables[0], anyHashables[1])
894+
expectEqual(anyHashables[1], anyHashables[2])
895+
}
882896
}
883897

884898
#if !FOUNDATION_XCTEST
@@ -921,6 +935,7 @@ DataTests.test("test_passing") { TestData().test_passing() }
921935
DataTests.test("test_bufferSizeCalculation") { TestData().test_bufferSizeCalculation() }
922936
DataTests.test("test_classForCoder") { TestData().test_classForCoder() }
923937
DataTests.test("test_AnyHashableContainingData") { TestData().test_AnyHashableContainingData() }
938+
DataTests.test("test_AnyHashableCreatedFromNSData") { TestData().test_AnyHashableCreatedFromNSData() }
924939

925940
// XCTest does not have a crash detection, whereas lit does
926941
DataTests.test("bounding failure subdata") {

test/1_stdlib/TestDate.swift

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,20 @@ class TestDate : TestDateSuper {
150150
expectEqual(anyHashables[1], anyHashables[2])
151151
}
152152

153+
func test_AnyHashableCreatedFromNSDate() {
154+
let values: [NSDate] = [
155+
NSDate(timeIntervalSince1970: 1000000000),
156+
NSDate(timeIntervalSince1970: 1000000001),
157+
NSDate(timeIntervalSince1970: 1000000001),
158+
]
159+
let anyHashables = values.map(AnyHashable.init)
160+
expectEqual("Date", String(anyHashables[0].base.dynamicType))
161+
expectEqual("Date", String(anyHashables[1].base.dynamicType))
162+
expectEqual("Date", String(anyHashables[2].base.dynamicType))
163+
expectNotEqual(anyHashables[0], anyHashables[1])
164+
expectEqual(anyHashables[1], anyHashables[2])
165+
}
166+
153167
func test_AnyHashableContainingDateComponents() {
154168
let values: [DateComponents] = [
155169
DateComponents(year: 2016),
@@ -163,6 +177,25 @@ class TestDate : TestDateSuper {
163177
expectNotEqual(anyHashables[0], anyHashables[1])
164178
expectEqual(anyHashables[1], anyHashables[2])
165179
}
180+
181+
func test_AnyHashableCreatedFromNSDateComponents() {
182+
func makeNSDateComponents(year: Int) -> NSDateComponents {
183+
let result = NSDateComponents()
184+
result.year = year
185+
return result
186+
}
187+
let values: [NSDateComponents] = [
188+
makeNSDateComponents(year: 2016),
189+
makeNSDateComponents(year: 1995),
190+
makeNSDateComponents(year: 1995),
191+
]
192+
let anyHashables = values.map(AnyHashable.init)
193+
expectEqual("DateComponents", String(anyHashables[0].base.dynamicType))
194+
expectEqual("DateComponents", String(anyHashables[1].base.dynamicType))
195+
expectEqual("DateComponents", String(anyHashables[2].base.dynamicType))
196+
expectNotEqual(anyHashables[0], anyHashables[1])
197+
expectEqual(anyHashables[1], anyHashables[2])
198+
}
166199
}
167200

168201
#if !FOUNDATION_XCTEST
@@ -177,6 +210,8 @@ DateTests.test("testEquality") { TestDate().testEquality() }
177210
DateTests.test("testTimeIntervalSinceDate") { TestDate().testTimeIntervalSinceDate() }
178211
DateTests.test("testDateComponents") { TestDate().testDateComponents() }
179212
DateTests.test("test_AnyHashableContainingDate") { TestDate().test_AnyHashableContainingDate() }
213+
DateTests.test("test_AnyHashableCreatedFromNSDate") { TestDate().test_AnyHashableCreatedFromNSDate() }
180214
DateTests.test("test_AnyHashableContainingDateComponents") { TestDate().test_AnyHashableContainingDateComponents() }
215+
DateTests.test("test_AnyHashableCreatedFromNSDateComponents") { TestDate().test_AnyHashableCreatedFromNSDateComponents() }
181216
runAllTests()
182217
#endif

test/1_stdlib/TestDateInterval.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,24 @@ class TestDateInterval : TestDateIntervalSuper {
147147
expectEqual(anyHashables[1], anyHashables[2])
148148
}
149149
}
150+
151+
func test_AnyHashableCreatedFromNSDateInterval() {
152+
if #available(iOS 10.10, OSX 10.12, tvOS 10.0, watchOS 3.0, *) {
153+
let start = dateWithString("2010-05-17 14:49:47 -0700")
154+
let duration = 10000000.0
155+
let values: [NSDateInterval] = [
156+
NSDateInterval(start: start, duration: duration),
157+
NSDateInterval(start: start, duration: duration / 2),
158+
NSDateInterval(start: start, duration: duration / 2),
159+
]
160+
let anyHashables = values.map(AnyHashable.init)
161+
expectEqual("DateInterval", String(anyHashables[0].base.dynamicType))
162+
expectEqual("DateInterval", String(anyHashables[1].base.dynamicType))
163+
expectEqual("DateInterval", String(anyHashables[2].base.dynamicType))
164+
expectNotEqual(anyHashables[0], anyHashables[1])
165+
expectEqual(anyHashables[1], anyHashables[2])
166+
}
167+
}
150168
}
151169

152170
#if !FOUNDATION_XCTEST
@@ -156,5 +174,6 @@ DateIntervalTests.test("test_isEqualToDateInterval") { TestDateInterval().test_i
156174
DateIntervalTests.test("test_checkIntersection") { TestDateInterval().test_checkIntersection() }
157175
DateIntervalTests.test("test_validIntersections") { TestDateInterval().test_validIntersections() }
158176
DateIntervalTests.test("test_AnyHashableContainingDateInterval") { TestDateInterval().test_AnyHashableContainingDateInterval() }
177+
DateIntervalTests.test("test_AnyHashableCreatedFromNSDateInterval") { TestDateInterval().test_AnyHashableCreatedFromNSDateInterval() }
159178
runAllTests()
160179
#endif

test/1_stdlib/TestIndexPath.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,20 @@ class TestIndexPath : TestIndexPathSuper {
9595
expectNotEqual(anyHashables[0], anyHashables[1])
9696
expectEqual(anyHashables[1], anyHashables[2])
9797
}
98+
99+
func test_AnyHashableCreatedFromNSIndexPath() {
100+
let values: [NSIndexPath] = [
101+
NSIndexPath(index: 1),
102+
NSIndexPath(index: 2),
103+
NSIndexPath(index: 2),
104+
]
105+
let anyHashables = values.map(AnyHashable.init)
106+
expectEqual("IndexPath", String(anyHashables[0].base.dynamicType))
107+
expectEqual("IndexPath", String(anyHashables[1].base.dynamicType))
108+
expectEqual("IndexPath", String(anyHashables[2].base.dynamicType))
109+
expectNotEqual(anyHashables[0], anyHashables[1])
110+
expectEqual(anyHashables[1], anyHashables[2])
111+
}
98112

99113
// TODO: Test bridging
100114

@@ -108,6 +122,7 @@ IndexPathTests.test("testRanges") { TestIndexPath().testRanges() }
108122
IndexPathTests.test("testMoreRanges") { TestIndexPath().testMoreRanges() }
109123
IndexPathTests.test("testIteration") { TestIndexPath().testIteration() }
110124
IndexPathTests.test("test_AnyHashableContainingIndexPath") { TestIndexPath().test_AnyHashableContainingIndexPath() }
125+
IndexPathTests.test("test_AnyHashableCreatedFromNSIndexPath") { TestIndexPath().test_AnyHashableCreatedFromNSIndexPath() }
111126
runAllTests()
112127
#endif
113128

test/1_stdlib/TestIndexSet.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,20 @@ class TestIndexSet : TestIndexSetSuper {
771771
expectNotEqual(anyHashables[0], anyHashables[1])
772772
expectEqual(anyHashables[1], anyHashables[2])
773773
}
774+
775+
func test_AnyHashableCreatedFromNSIndexSet() {
776+
let values: [NSIndexSet] = [
777+
NSIndexSet(index: 0),
778+
NSIndexSet(index: 1),
779+
NSIndexSet(index: 1),
780+
]
781+
let anyHashables = values.map(AnyHashable.init)
782+
expectEqual("IndexSet", String(anyHashables[0].base.dynamicType))
783+
expectEqual("IndexSet", String(anyHashables[1].base.dynamicType))
784+
expectEqual("IndexSet", String(anyHashables[2].base.dynamicType))
785+
expectNotEqual(anyHashables[0], anyHashables[1])
786+
expectEqual(anyHashables[1], anyHashables[2])
787+
}
774788
}
775789

776790
#if !FOUNDATION_XCTEST
@@ -794,6 +808,7 @@ IndexSetTests.test("testFilteringRanges") { TestIndexSet().testFilteringRanges()
794808
IndexSetTests.test("testShift") { TestIndexSet().testShift() }
795809
// IndexSetTests.test("testIndexingPerformance") { TestIndexSet().testIndexingPerformance() }
796810
IndexSetTests.test("test_AnyHashableContainingIndexSet") { TestIndexSet().test_AnyHashableContainingIndexSet() }
811+
IndexSetTests.test("test_AnyHashableCreatedFromNSIndexSet") { TestIndexSet().test_AnyHashableCreatedFromNSIndexSet() }
797812
runAllTests()
798813
#endif
799814

test/1_stdlib/TestLocale.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,20 @@ class TestLocale : TestLocaleSuper {
122122
expectNotEqual(anyHashables[0], anyHashables[1])
123123
expectEqual(anyHashables[1], anyHashables[2])
124124
}
125+
126+
func test_AnyHashableCreatedFromNSLocale() {
127+
let values: [NSLocale] = [
128+
NSLocale(localeIdentifier: "en"),
129+
NSLocale(localeIdentifier: "uk"),
130+
NSLocale(localeIdentifier: "uk"),
131+
]
132+
let anyHashables = values.map(AnyHashable.init)
133+
expectEqual("Locale", String(anyHashables[0].base.dynamicType))
134+
expectEqual("Locale", String(anyHashables[1].base.dynamicType))
135+
expectEqual("Locale", String(anyHashables[2].base.dynamicType))
136+
expectNotEqual(anyHashables[0], anyHashables[1])
137+
expectEqual(anyHashables[1], anyHashables[2])
138+
}
125139
}
126140

127141
#if !FOUNDATION_XCTEST
@@ -131,5 +145,6 @@ LocaleTests.test("test_equality") { TestLocale().test_equality() }
131145
LocaleTests.test("test_localizedStringFunctions") { TestLocale().test_localizedStringFunctions() }
132146
LocaleTests.test("test_properties") { TestLocale().test_properties() }
133147
LocaleTests.test("test_AnyHashableContainingLocale") { TestLocale().test_AnyHashableContainingLocale() }
148+
LocaleTests.test("test_AnyHashableCreatedFromNSLocale") { TestLocale().test_AnyHashableCreatedFromNSLocale() }
134149
runAllTests()
135150
#endif

test/1_stdlib/TestPersonNameComponents.swift

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,35 @@ class TestPersonNameComponents : TestPersonNameComponentsSuper {
4444
expectEqual(anyHashables[1], anyHashables[2])
4545
}
4646
}
47+
48+
@available(OSX 10.11, iOS 9.0, *)
49+
func makeNSPersonNameComponents(givenName: String, familyName: String) -> NSPersonNameComponents {
50+
let result = NSPersonNameComponents()
51+
result.givenName = givenName
52+
result.familyName = familyName
53+
return result
54+
}
55+
56+
func test_AnyHashableCreatedFromNSPersonNameComponents() {
57+
if #available(OSX 10.11, iOS 9.0, *) {
58+
let values: [NSPersonNameComponents] = [
59+
makeNSPersonNameComponents(givenName: "Kevin", familyName: "Frank"),
60+
makeNSPersonNameComponents(givenName: "John", familyName: "Appleseed"),
61+
makeNSPersonNameComponents(givenName: "John", familyName: "Appleseed"),
62+
]
63+
let anyHashables = values.map(AnyHashable.init)
64+
expectEqual("PersonNameComponents", String(anyHashables[0].base.dynamicType))
65+
expectEqual("PersonNameComponents", String(anyHashables[1].base.dynamicType))
66+
expectEqual("PersonNameComponents", String(anyHashables[2].base.dynamicType))
67+
expectNotEqual(anyHashables[0], anyHashables[1])
68+
expectEqual(anyHashables[1], anyHashables[2])
69+
}
70+
}
4771
}
4872

4973
#if !FOUNDATION_XCTEST
5074
var PersonNameComponentsTests = TestSuite("TestPersonNameComponents")
5175
PersonNameComponentsTests.test("test_AnyHashableContainingPersonNameComponents") { TestPersonNameComponents().test_AnyHashableContainingPersonNameComponents() }
76+
PersonNameComponentsTests.test("test_AnyHashableCreatedFromNSPersonNameComponents") { TestPersonNameComponents().test_AnyHashableCreatedFromNSPersonNameComponents() }
5277
runAllTests()
5378
#endif

test/1_stdlib/TestTimeZone.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,20 @@ class TestTimeZone : TestTimeZoneSuper {
7676
expectNotEqual(anyHashables[0], anyHashables[1])
7777
expectEqual(anyHashables[1], anyHashables[2])
7878
}
79+
80+
func test_AnyHashableCreatedFromNSTimeZone() {
81+
let values: [NSTimeZone] = [
82+
NSTimeZone(name: "America/Los_Angeles")!,
83+
NSTimeZone(name: "Europe/Kiev")!,
84+
NSTimeZone(name: "Europe/Kiev")!,
85+
]
86+
let anyHashables = values.map(AnyHashable.init)
87+
expectEqual("TimeZone", String(anyHashables[0].base.dynamicType))
88+
expectEqual("TimeZone", String(anyHashables[1].base.dynamicType))
89+
expectEqual("TimeZone", String(anyHashables[2].base.dynamicType))
90+
expectNotEqual(anyHashables[0], anyHashables[1])
91+
expectEqual(anyHashables[1], anyHashables[2])
92+
}
7993
}
8094

8195
#if !FOUNDATION_XCTEST
@@ -84,5 +98,6 @@ TimeZoneTests.test("test_timeZoneBasics") { TestTimeZone().test_timeZoneBasics()
8498
TimeZoneTests.test("test_bridgingAutoupdating") { TestTimeZone().test_bridgingAutoupdating() }
8599
TimeZoneTests.test("test_equality") { TestTimeZone().test_equality() }
86100
TimeZoneTests.test("test_AnyHashableContainingTimeZone") { TestTimeZone().test_AnyHashableContainingTimeZone() }
101+
TimeZoneTests.test("test_AnyHashableCreatedFromNSTimeZone") { TestTimeZone().test_AnyHashableCreatedFromNSTimeZone() }
87102
runAllTests()
88103
#endif

0 commit comments

Comments
 (0)