mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
testcases for xfl log and root
This commit is contained in:
21
hookstests/hookapi/run-all.sh
Executable file
21
hookstests/hookapi/run-all.sh
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
RESULT=""
|
||||||
|
FAILCOUNT=0
|
||||||
|
PASSCOUNT=0
|
||||||
|
for i in `ls test-*.js`; do
|
||||||
|
echo Running $i
|
||||||
|
node $i 2>/dev/null >/dev/null;
|
||||||
|
if [ "$?" -eq "0" ];
|
||||||
|
then
|
||||||
|
RESULT=`echo $RESULT'~'$i' -- PASS'`
|
||||||
|
PASSCOUNT="`echo $PASSCOUNT + 1 | bc`"
|
||||||
|
else
|
||||||
|
RESULT=`echo $RESULT'~'$i' -- FAIL'`
|
||||||
|
FAILCOUNT="`echo $FAILCOUNT + 1 | bc`"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
echo "Results:"
|
||||||
|
RESULT=$RESULT~
|
||||||
|
echo Passed: $PASSCOUNT, Failed: $FAILCOUNT, Total: `echo $PASSCOUNT + $FAILCOUNT | bc`
|
||||||
|
echo $RESULT | sed 's/.js//g' | tr '~' '\n'
|
||||||
40
hookstests/hookapi/test-log.js
Normal file
40
hookstests/hookapi/test-log.js
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
const wasmFn = 'log.wasm';
|
||||||
|
|
||||||
|
require('../hookset/utils-tests.js').TestRig('ws://localhost:6005').then(t=>
|
||||||
|
{
|
||||||
|
const account = t.randomAccount();
|
||||||
|
t.fundFromGenesis(account).then(()=>
|
||||||
|
{
|
||||||
|
t.feeSubmit(account.seed,
|
||||||
|
{
|
||||||
|
Account: account.classicAddress,
|
||||||
|
TransactionType: "SetHook",
|
||||||
|
Hooks: [
|
||||||
|
{
|
||||||
|
Hook: {
|
||||||
|
CreateCode: t.wasm(wasmFn),
|
||||||
|
HookApiVersion: 0,
|
||||||
|
HookNamespace: "DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF",
|
||||||
|
HookOn: "0000000000000000"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}).then(x=>
|
||||||
|
{
|
||||||
|
t.assertTxnSuccess(x)
|
||||||
|
console.log(x);
|
||||||
|
t.feeSubmit(account.seed,
|
||||||
|
{
|
||||||
|
TransactionType: "AccountSet",
|
||||||
|
Account: account.classicAddress
|
||||||
|
}).then(x=>
|
||||||
|
{
|
||||||
|
t.assertTxnSuccess(x)
|
||||||
|
process.exit(0);
|
||||||
|
}).catch(t.err);
|
||||||
|
}).catch(t.err);
|
||||||
|
}).catch(t.err);
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
40
hookstests/hookapi/test-root.js
Normal file
40
hookstests/hookapi/test-root.js
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
const wasmFn = 'root.wasm';
|
||||||
|
|
||||||
|
require('../hookset/utils-tests.js').TestRig('ws://localhost:6005').then(t=>
|
||||||
|
{
|
||||||
|
const account = t.randomAccount();
|
||||||
|
t.fundFromGenesis(account).then(()=>
|
||||||
|
{
|
||||||
|
t.feeSubmit(account.seed,
|
||||||
|
{
|
||||||
|
Account: account.classicAddress,
|
||||||
|
TransactionType: "SetHook",
|
||||||
|
Hooks: [
|
||||||
|
{
|
||||||
|
Hook: {
|
||||||
|
CreateCode: t.wasm(wasmFn),
|
||||||
|
HookApiVersion: 0,
|
||||||
|
HookNamespace: "DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF",
|
||||||
|
HookOn: "0000000000000000"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}).then(x=>
|
||||||
|
{
|
||||||
|
t.assertTxnSuccess(x)
|
||||||
|
console.log(x);
|
||||||
|
t.feeSubmit(account.seed,
|
||||||
|
{
|
||||||
|
TransactionType: "AccountSet",
|
||||||
|
Account: account.classicAddress
|
||||||
|
}).then(x=>
|
||||||
|
{
|
||||||
|
t.assertTxnSuccess(x)
|
||||||
|
process.exit(0);
|
||||||
|
}).catch(t.err);
|
||||||
|
}).catch(t.err);
|
||||||
|
}).catch(t.err);
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
19
hookstests/hookapi/wasm/log.c
Normal file
19
hookstests/hookapi/wasm/log.c
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#include "api.h"
|
||||||
|
|
||||||
|
int64_t hook(uint32_t reserved )
|
||||||
|
{
|
||||||
|
int64_t x = float_set(0, 1234567890);
|
||||||
|
int64_t l = float_log(x);
|
||||||
|
int64_t i = float_int(l, 15, 1);
|
||||||
|
|
||||||
|
ASSERT(i == 9091514977169268ULL);
|
||||||
|
|
||||||
|
ASSERT(float_log(float_one()) == 0);
|
||||||
|
|
||||||
|
// RH TODO: more tests
|
||||||
|
|
||||||
|
accept (0,0,0);
|
||||||
|
_g(1,1); // every hook needs to import guard function and use it at least once
|
||||||
|
// unreachable
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
7
hookstests/hookapi/wasm/makefile
Normal file
7
hookstests/hookapi/wasm/makefile
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
all: log.wasm root.wasm
|
||||||
|
log.wasm: log.c
|
||||||
|
wasmcc log.c -o log.wasm -O0 -Wl,--allow-undefined -I../
|
||||||
|
hook-cleaner log.wasm
|
||||||
|
root.wasm: root.c
|
||||||
|
wasmcc root.c -o root.wasm -O0 -Wl,--allow-undefined -I../
|
||||||
|
hook-cleaner root.wasm
|
||||||
21
hookstests/hookapi/wasm/root.c
Normal file
21
hookstests/hookapi/wasm/root.c
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#include "api.h"
|
||||||
|
|
||||||
|
int64_t hook(uint32_t reserved )
|
||||||
|
{
|
||||||
|
int64_t x = float_set(0, 1234567890);
|
||||||
|
int64_t l = float_root(x, 2);
|
||||||
|
TRACEXFL(l);
|
||||||
|
int64_t i = float_int(l, 6, 1);
|
||||||
|
|
||||||
|
TRACEVAR(i);
|
||||||
|
|
||||||
|
ASSERT(i == 35136418286444ULL);
|
||||||
|
|
||||||
|
|
||||||
|
// RH TODO: more tests
|
||||||
|
|
||||||
|
accept (0,0,0);
|
||||||
|
_g(1,1); // every hook needs to import guard function and use it at least once
|
||||||
|
// unreachable
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user