mirror of https://github.com/mono/CppSharp.git
c-sharpdotnetmonobindingsbridgecclangcpluspluscppsharpglueinteropparserparsingpinvokeswigsyntax-treevisitorsxamarinxamarin-bindings
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
3.6 KiB
114 lines
3.6 KiB
import wasmModule from "./gen/bin/debug/libtest.mjs"; |
|
import { eq, ascii, floateq } from "./utils.mjs" |
|
|
|
const test = await wasmModule({ |
|
onRuntimeInitialized() { |
|
|
|
} |
|
}); |
|
|
|
function builtins() { |
|
eq(test.ReturnsVoid(), undefined) |
|
|
|
eq(test.ReturnsBool(), true) |
|
eq(test.PassAndReturnsBool(false), false) |
|
|
|
eq(test.ReturnsNullptr(), null) |
|
eq(test.PassAndReturnsNullptr(null), null) |
|
|
|
eq(test.ReturnsChar(), ascii('a')); |
|
eq(test.ReturnsSChar(), ascii('a')); |
|
eq(test.ReturnsUChar(), ascii('a')); |
|
|
|
eq(test.PassAndReturnsChar(ascii('a')), ascii('a')); |
|
eq(test.PassAndReturnsSChar(ascii('b')), ascii('b')); |
|
eq(test.PassAndReturnsUChar(ascii('c')), ascii('c')); |
|
|
|
// TODO: add wchar_t tests |
|
|
|
eq(test.ReturnsFloat(), 5.0); |
|
eq(test.ReturnsDouble(), -5.0); |
|
//eq(test.ReturnsLongDouble(), -5.0); |
|
|
|
floateq(test.PassAndReturnsFloat(1.32), 1.32); |
|
floateq(test.PassAndReturnsDouble(1.32), 1.32); |
|
//float(test.PassAndReturnsLongDouble(1.32), 1.32); |
|
|
|
eq(test.ReturnsInt8(), -5); |
|
eq(test.ReturnsUInt8(), 5); |
|
eq(test.ReturnsInt16(), -5); |
|
eq(test.ReturnsUInt16(), 5); |
|
eq(test.ReturnsInt32(), -5); |
|
eq(test.ReturnsUInt32(), 5); |
|
|
|
// TODO: |
|
// https://github.com/WebAssembly/proposals/issues/7 |
|
// https://github.com/emscripten-core/emscripten/issues/11140 |
|
//eq(test.ReturnsInt64(), -5n); |
|
//eq(test.ReturnsUInt64(), 5n); |
|
|
|
const int8 = { min: -(2 ** 7), max: (2 ** 7) - 1 }; |
|
eq(test.PassAndReturnsInt8(int8.min), int8.min); |
|
eq(test.PassAndReturnsInt8(int8.max), int8.max); |
|
|
|
const uint8 = { min: 0, max: (2 ** 8) - 1 }; |
|
eq(test.PassAndReturnsUInt8(uint8.min), uint8.min); |
|
eq(test.PassAndReturnsUInt8(uint8.max), uint8.max); |
|
|
|
const int16 = { min: -(2 ** 15), max: (2 ** 15) - 1 }; |
|
eq(test.PassAndReturnsInt16(int16.min), int16.min); |
|
eq(test.PassAndReturnsInt16(int16.max), int16.max); |
|
|
|
const uint16 = { min: 0, max: (2 ** 16) - 1 }; |
|
eq(test.PassAndReturnsUInt16(uint16.min), uint16.min); |
|
eq(test.PassAndReturnsUInt16(uint16.max), uint16.max); |
|
|
|
const int32 = { min: -(2 ** 31), max: (2 ** 31) - 1 }; |
|
eq(test.PassAndReturnsInt32(int32.min), int32.min); |
|
eq(test.PassAndReturnsInt32(int32.max), int32.max); |
|
|
|
const uint32 = { min: 0, max: (2 ** 32) - 1 }; |
|
eq(test.PassAndReturnsUInt32(uint32.min), uint32.min); |
|
eq(test.PassAndReturnsUInt32(uint32.max), uint32.max); |
|
|
|
//const int64 = { min: BigInt(2 ** 63) * -1n, max: BigInt(2 ** 63) - 1n }; |
|
//eq(test.PassAndReturnsInt64(int64.min), int64.min); |
|
//eq(test.PassAndReturnsInt64(int64.max), int64.max); |
|
|
|
//const uint64 = { min: BigInt(0), max: BigInt(2 ** 64) - 1n }; |
|
//eq(test.PassAndReturnsUInt64(uint64.min), uint64.min); |
|
//eq(test.PassAndReturnsUInt64(uint64.max), uint64.max); |
|
} |
|
|
|
function enums() { |
|
eq(test.Enum0.Item0.value, 0); |
|
eq(test.Enum0.Item1.value, 1); |
|
eq(test.Enum0.Item2.value, 5); |
|
|
|
eq(test.ReturnsEnum(), test.Enum0.Item0); |
|
eq(test.PassAndReturnsEnum(test.Enum0.Item1), test.Enum0.Item1); |
|
} |
|
|
|
function classes() { |
|
var c = new test.Class(); |
|
eq(typeof (c), "object") |
|
eq(c.ReturnsVoid(), undefined) |
|
eq(c.ReturnsInt(), 0) |
|
eq(c.PassAndReturnsClassPtr(null), null) |
|
|
|
var c1 = new test.ClassWithSingleInheritance(); |
|
eq(c1.__proto__.constructor.name, 'ClassWithSingleInheritance') |
|
eq(c1.__proto__.__proto__.constructor.name, 'Class') |
|
eq(c1.ReturnsVoid(), undefined); |
|
eq(c1.ReturnsInt(), 0); |
|
eq(c1.ChildMethod(), 2); |
|
|
|
var classWithField = new test.ClassWithField(); |
|
eq(classWithField.ReturnsField(), 10); |
|
eq(classWithField.Field, 10); |
|
} |
|
|
|
|
|
builtins(); |
|
enums(); |
|
classes(); |