Files
swift-mirror/validation-test/stdlib/ObjectiveC.swift
Erik Eckstein adef0368bb tests: add import statements to workaround linker errors in all relevant tests.
This is needed if we compile StdlibUnittest with -sil-serialize-all
So far I added the imports only in files which needed them. But this may change, depending on the optimizer (inlining).
Adding them in all files doesn't harm and avoids confusion if someone makes an unrelated change which would result in such a linker error.
2016-01-21 09:59:50 -08:00

58 lines
1.3 KiB
Swift

// RUN: %target-run-simple-swift
// REQUIRES: executable_test
// REQUIRES: objc_interop
import ObjectiveC
import StdlibUnittest
// Also import modules which are used by StdlibUnittest internally. This
// workaround is needed to link all required libraries in case we compile
// StdlibUnittest with -sil-serialize-all.
import SwiftPrivate
#if _runtime(_ObjC)
import ObjectiveC
#endif
var ObjectiveCTests = TestSuite("ObjectiveC")
class NSObjectWithCustomHashable : NSObject {
init(value: Int, hashValue: Int) {
self._value = value
self._hashValue = hashValue
}
override func isEqual(other: AnyObject?) -> Bool {
let other_ = other as! NSObjectWithCustomHashable
return self._value == other_._value
}
override var hashValue: Int {
return _hashValue
}
var _value: Int
var _hashValue: Int
}
ObjectiveCTests.test("NSObject/Hashable") {
let objects = [
NSObjectWithCustomHashable(value: 10, hashValue: 100),
NSObjectWithCustomHashable(value: 10, hashValue: 100),
NSObjectWithCustomHashable(value: 20, hashValue: 100),
NSObjectWithCustomHashable(value: 30, hashValue: 300),
]
for (i, object1) in objects.enumerate() {
for (j, object2) in objects.enumerate() {
checkHashable(
object1._value == object2._value,
object1,
object2,
"i=\(i), j=\(j)")
}
}
}
runAllTests()