mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-14 23:41:30 +00:00
Initial loader that unifies utils and demangle
This commit is contained in:
46
lib/loader/tests/assembly/index.ts
Normal file
46
lib/loader/tests/assembly/index.ts
Normal file
@ -0,0 +1,46 @@
|
||||
import "allocator/arena";
|
||||
|
||||
export const COLOR: string = "red";
|
||||
|
||||
export function strlen(str: string): i32 {
|
||||
return str.length;
|
||||
}
|
||||
|
||||
export namespace math {
|
||||
export function add(a: i32, b: i32): i32 {
|
||||
return a + b;
|
||||
}
|
||||
}
|
||||
|
||||
export class Car {
|
||||
static readonly MAX_DOORS: i32 = 5;
|
||||
static usualDoors: i32 = 3;
|
||||
|
||||
numDoors: i32;
|
||||
private doorsOpen: bool = false;
|
||||
|
||||
get isDoorsOpen(): bool { return this.doorsOpen; }
|
||||
set isDoorsOpen(value: bool) { this.doorsOpen = value; }
|
||||
|
||||
constructor(numDoors: i32) {
|
||||
this.numDoors = numDoors;
|
||||
}
|
||||
|
||||
openDoors(): bool {
|
||||
if (this.doorsOpen) return false;
|
||||
this.doorsOpen = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
closeDoors(): bool {
|
||||
if (!this.doorsOpen) return false;
|
||||
this.doorsOpen = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
free_memory(changetype<usize>(this));
|
||||
}
|
||||
}
|
||||
|
||||
export { allocate_memory, free_memory };
|
BIN
lib/loader/tests/build/untouched.wasm
Normal file
BIN
lib/loader/tests/build/untouched.wasm
Normal file
Binary file not shown.
34
lib/loader/tests/index.js
Normal file
34
lib/loader/tests/index.js
Normal file
@ -0,0 +1,34 @@
|
||||
var fs = require("fs");
|
||||
var assert = require("assert");
|
||||
var inspect = require("util").inspect;
|
||||
|
||||
var loader = require("..");
|
||||
var buffer = fs.readFileSync(__dirname + "/build/untouched.wasm");
|
||||
var module = loader.instantiateBuffer(buffer, {});
|
||||
|
||||
console.log(inspect(module, true, 100, true));
|
||||
|
||||
// should inherit the usual utility
|
||||
var proto = Object.getPrototypeOf(module);
|
||||
assert(proto.I8 instanceof Int8Array);
|
||||
assert(proto.U8 instanceof Uint8Array);
|
||||
assert(proto.I16 instanceof Int16Array);
|
||||
assert(proto.U16 instanceof Uint16Array);
|
||||
assert(proto.I32 instanceof Int32Array);
|
||||
assert(proto.U32 instanceof Uint32Array);
|
||||
assert(proto.F32 instanceof Float32Array);
|
||||
assert(proto.F64 instanceof Float64Array);
|
||||
assert(typeof proto.newString === "function");
|
||||
assert(typeof proto.getString === "function");
|
||||
|
||||
// should export memory
|
||||
assert(module.memory instanceof WebAssembly.Memory);
|
||||
|
||||
// should be able to get an exported string
|
||||
assert.strictEqual(module.getString(module.COLOR), "red");
|
||||
|
||||
// should be able to allocate and work with a new string
|
||||
var str = "Hello world!𤭢";
|
||||
var ptr = module.newString(str);
|
||||
assert.strictEqual(module.getString(ptr), str);
|
||||
assert.strictEqual(module.strlen(ptr), str.length);
|
Reference in New Issue
Block a user