testcases for xfl log and root

This commit is contained in:
Richard Holland
2022-05-30 10:29:37 +00:00
parent 869b66f06f
commit f225003091
6 changed files with 148 additions and 0 deletions

21
hookstests/hookapi/run-all.sh Executable file
View 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'

View 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);
})

View 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);
})

View 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;
}

View 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

View 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;
}