[Native][Tests] Add tests for -Xbinary=cInterfaceMode=none

This commit is contained in:
Sergey Bogolepov
2024-02-16 11:17:10 +02:00
committed by Space Team
parent dd25130464
commit 4f9c1860b1
18 changed files with 338 additions and 16 deletions
@@ -0,0 +1,59 @@
#include <stdint.h>
#undef NDEBUG // Make sure that asserts are enabled.
#include <assert.h>
#include <math.h>
#define DECLARE_ADDER(T) \
T add_##T(T a, T b)
DECLARE_ADDER(int8_t);
DECLARE_ADDER(int16_t);
DECLARE_ADDER(int32_t);
DECLARE_ADDER(int64_t);
DECLARE_ADDER(uint8_t);
DECLARE_ADDER(uint16_t);
DECLARE_ADDER(uint32_t);
DECLARE_ADDER(uint64_t);
DECLARE_ADDER(float);
DECLARE_ADDER(double);
float float_nan();
double double_nan();
_Bool logical_or(_Bool a, _Bool b);
int main() {
assert(add_int8_t(1, 1) == 2);
assert(add_int16_t(1, 1) == 2);
assert(add_int32_t(1, 1) == 2);
assert(add_int32_t(1, 1) == 2);
assert(add_uint8_t(1, 1) == 2);
assert(add_uint16_t(1, 1) == 2);
assert(add_uint32_t(1, 1) == 2);
assert(add_uint32_t(1, 1) == 2);
assert(add_int8_t(INT8_MAX, 1) == INT8_MIN);
assert(add_int16_t(INT16_MAX, 1) == INT16_MIN);
assert(add_int32_t(INT32_MAX, 1) == INT32_MIN);
assert(add_int64_t(INT64_MAX, 1) == INT64_MIN);
assert(add_uint8_t(UINT8_MAX, 1) == 0);
assert(add_uint16_t(UINT16_MAX, 1) == 0);
assert(add_uint32_t(UINT32_MAX, 1) == 0);
assert(add_uint64_t(UINT64_MAX, 1) == 0);
assert(logical_or(1, 1) == 1);
assert(logical_or(0, 1) == 1);
assert(add_float(3.0, -3.0) == 0.0);
assert(add_double(3.0, -3.0) == 0.0);
assert(add_float(3.0, -3.0) == 0.0);
assert(add_double(3.0, -3.0) == 0.0);
assert(isnan(float_nan()));
assert(isnan(double_nan()));
}
@@ -0,0 +1,42 @@
package org.lab.mat
import kotlin.native.internal.ExportedBridge
@ExportedBridge("add_int8_t")
fun add(a: Byte, b: Byte): Int = a + b
@ExportedBridge("add_int16_t")
fun add(a: Short, b: Short): Int = a + b
@ExportedBridge("add_int32_t")
fun add(a: Int, b: Int): Int = a + b
@ExportedBridge("add_int64_t")
fun add(a: Long, b: Long): Long = a + b
@ExportedBridge("add_uint8_t")
fun add(a: UByte, b: UByte): UInt = a + b
@ExportedBridge("add_uint16_t")
fun add(a: UShort, b: UShort): UInt = a + b
@ExportedBridge("add_uint32_t")
fun add(a: UInt, b: UInt): UInt = a + b
@ExportedBridge("add_uint64_t")
fun add(a: ULong, b: ULong): ULong = a + b
@ExportedBridge("add_float")
fun add(a: Float, b: Float): Float = a + b
@ExportedBridge("add_double")
fun add(a: Double, b: Double): Double = a + b
@ExportedBridge("logical_or")
fun or(a: Boolean, b: Boolean): Boolean = a || b
@ExportedBridge("float_nan")
fun floatNaN(): Float = Float.NaN
@ExportedBridge("double_nan")
fun doubleNaN(): Double = Double.NaN
@@ -0,0 +1,9 @@
#include <stdint.h>
int32_t my_function(int32_t);
int main() {
if (my_function(5) != 5) {
return -1;
}
}
@@ -0,0 +1,4 @@
import kotlin.native.internal.ExportedBridge
@ExportedBridge("my_function")
fun myFunction(value: Int): Int = value