Native: improve tests for __NSCFBoolean RTTI conversion
- ObjCExport tests for numbers RTTI conversions didn't really check RTTI, because of a compiler optimization. Fix this by converting to Any. - Also add more tests that specifically check that bool `NSNumber` get dynamically converted to `kotlin.Boolean` box. Those tests can't be affected by possible future compiler optimizations.
This commit is contained in:
committed by
Space Team
parent
7bd4de65f8
commit
707a650de1
@@ -3214,6 +3214,7 @@ __attribute__((swift_name("ValuesKt")))
|
||||
+ (id<KtTransform>)createTransformDecimalStringToInt __attribute__((swift_name("createTransformDecimalStringToInt()")));
|
||||
+ (void)emptyFun __attribute__((swift_name("emptyFun()")));
|
||||
+ (void)ensureEqualBooleansActual:(KtBoolean * _Nullable)actual expected:(BOOL)expected __attribute__((swift_name("ensureEqualBooleans(actual:expected:)")));
|
||||
+ (void)ensureEqualBooleansAsAnyActual:(id _Nullable)actual expected:(BOOL)expected __attribute__((swift_name("ensureEqualBooleansAsAny(actual:expected:)")));
|
||||
+ (void)ensureEqualBytesActual:(KtByte * _Nullable)actual expected:(int8_t)expected __attribute__((swift_name("ensureEqualBytes(actual:expected:)")));
|
||||
+ (void)ensureEqualDoublesActual:(KtDouble * _Nullable)actual expected:(double)expected __attribute__((swift_name("ensureEqualDoubles(actual:expected:)")));
|
||||
+ (void)ensureEqualFloatsActual:(KtFloat * _Nullable)actual expected:(float)expected __attribute__((swift_name("ensureEqualFloats(actual:expected:)")));
|
||||
|
||||
@@ -3214,6 +3214,7 @@ __attribute__((swift_name("ValuesKt")))
|
||||
+ (id<KtTransform>)createTransformDecimalStringToInt __attribute__((swift_name("createTransformDecimalStringToInt()")));
|
||||
+ (void)emptyFun __attribute__((swift_name("emptyFun()")));
|
||||
+ (void)ensureEqualBooleansActual:(KtBoolean * _Nullable)actual expected:(BOOL)expected __attribute__((swift_name("ensureEqualBooleans(actual:expected:)")));
|
||||
+ (void)ensureEqualBooleansAsAnyActual:(id _Nullable)actual expected:(BOOL)expected __attribute__((swift_name("ensureEqualBooleansAsAny(actual:expected:)")));
|
||||
+ (void)ensureEqualBytesActual:(KtByte * _Nullable)actual expected:(int8_t)expected __attribute__((swift_name("ensureEqualBytes(actual:expected:)")));
|
||||
+ (void)ensureEqualDoublesActual:(KtDouble * _Nullable)actual expected:(double)expected __attribute__((swift_name("ensureEqualDoubles(actual:expected:)")));
|
||||
+ (void)ensureEqualFloatsActual:(KtFloat * _Nullable)actual expected:(float)expected __attribute__((swift_name("ensureEqualFloats(actual:expected:)")));
|
||||
|
||||
@@ -3214,6 +3214,7 @@ __attribute__((swift_name("ValuesKt")))
|
||||
+ (id<KtTransform>)createTransformDecimalStringToInt __attribute__((swift_name("createTransformDecimalStringToInt()")));
|
||||
+ (void)emptyFun __attribute__((swift_name("emptyFun()")));
|
||||
+ (void)ensureEqualBooleansActual:(KtBoolean * _Nullable)actual expected:(BOOL)expected __attribute__((swift_name("ensureEqualBooleans(actual:expected:)")));
|
||||
+ (void)ensureEqualBooleansAsAnyActual:(id _Nullable)actual expected:(BOOL)expected __attribute__((swift_name("ensureEqualBooleansAsAny(actual:expected:)")));
|
||||
+ (void)ensureEqualBytesActual:(KtByte * _Nullable)actual expected:(int8_t)expected __attribute__((swift_name("ensureEqualBytes(actual:expected:)")));
|
||||
+ (void)ensureEqualDoublesActual:(KtDouble * _Nullable)actual expected:(double)expected __attribute__((swift_name("ensureEqualDoubles(actual:expected:)")));
|
||||
+ (void)ensureEqualFloatsActual:(KtFloat * _Nullable)actual expected:(float)expected __attribute__((swift_name("ensureEqualFloats(actual:expected:)")));
|
||||
|
||||
@@ -58,12 +58,18 @@ fun box(uLongValue: ULong) = uLongValue.toNullable()
|
||||
fun box(floatValue: Float) = floatValue.toNullable()
|
||||
fun box(doubleValue: Double) = doubleValue.toNullable()
|
||||
|
||||
private inline fun <reified T> ensureEquals(actual: T?, expected: T) {
|
||||
if (actual !is T) error(T::class)
|
||||
if (actual != expected) error(T::class)
|
||||
private fun ensureEquals(actual: Any?, expected: Any, expectedClass: KClass<*>) {
|
||||
check(actual != null)
|
||||
if (actual::class != expectedClass) error("expected ::class $expectedClass, got ${actual::class}")
|
||||
if (actual != expected) error("for $expectedClass expected $expected, got $actual")
|
||||
}
|
||||
|
||||
private inline fun <reified T : Any> ensureEquals(actual: T?, expected: T) {
|
||||
ensureEquals(actual, expected, T::class)
|
||||
}
|
||||
|
||||
fun ensureEqualBooleans(actual: Boolean?, expected: Boolean) = ensureEquals(actual, expected)
|
||||
fun ensureEqualBooleansAsAny(actual: Any?, expected: Boolean) = ensureEquals(actual as Boolean?, expected)
|
||||
fun ensureEqualBytes(actual: Byte?, expected: Byte) = ensureEquals(actual, expected)
|
||||
fun ensureEqualShorts(actual: Short?, expected: Short) = ensureEquals(actual, expected)
|
||||
fun ensureEqualInts(actual: Int?, expected: Int) = ensureEquals(actual, expected)
|
||||
|
||||
@@ -137,6 +137,9 @@ func testNumbers() throws {
|
||||
ValuesKt.ensureEqualBooleans(actual: KotlinBoolean(value: true), expected: true)
|
||||
ValuesKt.ensureEqualBooleans(actual: false, expected: false)
|
||||
|
||||
ValuesKt.ensureEqualBooleansAsAny(actual: true, expected: true)
|
||||
ValuesKt.ensureEqualBooleansAsAny(actual: false, expected: false)
|
||||
|
||||
ValuesKt.ensureEqualBytes(actual: KotlinByte(value: 42), expected: 42)
|
||||
ValuesKt.ensureEqualBytes(actual: -11, expected: -11)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user