Skip to content

Commit b0539a5

Browse files
author
Itai Ferber
committed
Add ObjC unit test to verify NSNumber bridging
1 parent 620058e commit b0539a5

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

test/stdlib/Inputs/FoundationBridge/FoundationBridge.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,10 @@ BOOL identityOfData(NSData *data);
6969
- (BOOL)verifyAutoupdatingLocale:(NSLocale *)locale;
7070
@end
7171

72+
#pragma mark - NSNumber verification
73+
74+
@interface NumberBridgingTester : NSObject
75+
- (BOOL)verifyKeysInRange:(NSRange)range existInDictionary:(NSDictionary *)dictionary;
76+
@end
77+
7278
NS_ASSUME_NONNULL_END

test/stdlib/Inputs/FoundationBridge/FoundationBridge.m

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,4 +264,16 @@ - (BOOL)verifyAutoupdatingLocale:(NSLocale *)locale {
264264

265265
@end
266266

267+
@implementation NumberBridgingTester
267268

269+
- (BOOL)verifyKeysInRange:(NSRange)range existInDictionary:(NSDictionary *)dictionary {
270+
for (NSUInteger i = 0; i < range.length; i += 1) {
271+
if (!dictionary[@(range.location + i)]) {
272+
return NO;
273+
}
274+
}
275+
276+
return YES;
277+
}
278+
279+
@end

test/stdlib/TestNSNumberBridging.swift

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,20 @@
99
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
1010
//
1111
//===----------------------------------------------------------------------===//
12-
// RUN: %target-run-simple-swift
12+
//
13+
// RUN: %empty-directory(%t)
14+
//
15+
// RUN: %target-clang %S/Inputs/FoundationBridge/FoundationBridge.m -c -o %t/FoundationBridgeObjC.o -g
16+
// RUN: %target-build-swift %s -I %S/Inputs/FoundationBridge/ -Xlinker %t/FoundationBridgeObjC.o -o %t/TestNSNumberBridging
17+
//
18+
// RUN: %target-run %t/TestNSNumberBridging
1319
// REQUIRES: executable_test
1420
// REQUIRES: objc_interop
1521

16-
1722
import StdlibUnittest
1823
import Foundation
1924
import CoreGraphics
25+
import FoundationBridgeObjC
2026

2127
extension Float {
2228
init?(reasonably value: Float) {
@@ -898,6 +904,17 @@ func testNSNumberBridgeAnyHashable() {
898904
}
899905
}
900906

907+
func testNSNumberBridgeAnyHashableObjc() {
908+
let range = -Int(UInt8.min) ... Int(UInt8.max)
909+
var dict = [AnyHashable : Any]()
910+
for i in range {
911+
dict[i] = "\(i)"
912+
}
913+
914+
let verifier = NumberBridgingTester()
915+
expectTrue(verifier.verifyKeys(in: NSRange(range), existIn: dict))
916+
}
917+
901918
nsNumberBridging.test("Bridge Int8") { testNSNumberBridgeFromInt8() }
902919
nsNumberBridging.test("Bridge UInt8") { testNSNumberBridgeFromUInt8() }
903920
nsNumberBridging.test("Bridge Int16") { testNSNumberBridgeFromInt16() }
@@ -913,4 +930,5 @@ nsNumberBridging.test("Bridge Double") { testNSNumberBridgeFromDouble() }
913930
nsNumberBridging.test("Bridge CGFloat") { testNSNumberBridgeFromCGFloat() }
914931
nsNumberBridging.test("bitPattern to exactly") { test_numericBitPatterns_to_floatingPointTypes() }
915932
nsNumberBridging.test("Bridge AnyHashable") { testNSNumberBridgeAnyHashable() }
933+
nsNumberBridging.test("Bridge AnyHashable (ObjC)") { testNSNumberBridgeAnyHashableObjc() }
916934
runAllTests()

0 commit comments

Comments
 (0)