Files
aqua-playground/src/run-examples.ts

156 lines
4.6 KiB
TypeScript
Raw Normal View History

#!/usr/bin/env node
2021-06-02 20:56:44 +03:00
import {createClient, registerServiceFunction, setLogLevel} from "@fluencelabs/fluence";
import {testNet} from "@fluencelabs/fluence-network-environment";
import {callArrowCall} from "./examples/callArrowCall";
import {dataAliasCall} from "./examples/dataAliasCall";
import {onCall} from "./examples/onCall";
import {funcCall} from "./examples/funcCall";
import {helloWorldCall} from "./examples/helloWorldCall";
import {foldCall} from "./examples/foldCall";
import {ifCall} from "./examples/if";
import {parCall} from "./examples/parCall";
import {complexCall} from "./examples/complex";
import {constantsCall} from "./examples/constantsCall";
import {streamCall} from "./examples/streamCall";
import {topologyCall} from "./examples/topologyCall";
import {foldJoinCall} from "./examples/foldJoinCall";
2021-06-02 20:56:44 +03:00
import {useOptionalCall} from "./examples/useOptionalCall";
2021-06-03 17:27:32 +03:00
import {viaCall} from "./examples/viaCall";
2021-06-04 14:10:34 +03:00
import {nestedFuncsCall} from "./examples/nestedFuncsCall";
let deepEqual = require('deep-equal')
function checkCall(name: string, expected: any, actual: any, callBackOnError: () => void) {
if (!deepEqual(actual, expected)) {
console.error(`${name} call has the wrong result`)
2021-06-02 20:56:44 +03:00
console.error("expected: ")
console.dir(expected)
console.error("actual: ")
console.dir(actual)
callBackOnError()
}
}
function checkCallBy(name: string, actual: any, by: (res: any) => boolean, callBackOnError: () => void) {
if (!by(actual)) {
console.error(`${name} call has the wrong result`)
console.error("actual: " + actual)
callBackOnError()
}
}
const main = async () => {
2021-06-02 20:56:44 +03:00
// setLogLevel("trace")
const client = await createClient(testNet[0]);
const client2 = await createClient(testNet[1]);
// this could be called from `println.aqua`
registerServiceFunction(client, "println-service-id", "print", (args: any[], _) => {
console.log("println: " + args[0])
return {}
})
// these is only list of calls. Take a look into functions to see what's going on
// these calls return void, so they could be executed at any time,
// because promise waits only a fact that particle was sent
// callArrow.aqua
let callArrowResult = await callArrowCall(client)
// fold.aqua
let foldCallResult = await foldCall(client)
//if.aqua
await ifCall(client)
// par.aqua
let parCallResult = await parCall(client)
// these calls waiting for a result, so it will be called sequentially
// helloWorld.aqua
let helloWorldResult = await helloWorldCall(client)
// func.aqua
let funcCallResult = await funcCall(client)
// on.aqua
let onCallResult = await onCall(client)
// dataAlias.aqua
let dataAliasResult = await dataAliasCall(client)
// complex.aqua
let complexCallResult = await complexCall(client)
// constants.aqua
let constantCallResult = await constantsCall(client)
// stream.aqua
let streamResult = await streamCall(client)
// topology.aqua
let topologyResult = await topologyCall(client, client2)
// foldJoin.aqua
let foldJoinResult = await foldJoinCall(client)
2021-06-02 20:56:44 +03:00
// option.aqua
let optionResult = await useOptionalCall(client)
2021-06-03 17:27:32 +03:00
// via.aqua
let viaResult = await viaCall(client)
2021-06-04 14:10:34 +03:00
// nestedFuncs.aqua
let nestedFuncsResult = await nestedFuncsCall(client)
await client.disconnect();
let success = true;
let cb: () => void = () => {
success = false;
}
checkCall("callArrow", callArrowResult, "Hello, callArrow call!", cb)
checkCall("foldCall", foldCallResult, ["/ip4/165.227.164.206/tcp/7001", "/ip4/165.227.164.206/tcp/9001/ws"], cb)
checkCall("onCall", onCallResult, ["/ip4/165.227.164.206/tcp/7001", "/ip4/165.227.164.206/tcp/9001/ws"], cb)
checkCall("parArrow", parCallResult, "hello", cb)
checkCall("helloWorldCall", helloWorldResult, "Hello, NAME!", cb)
checkCall("funcCall", funcCallResult, "some str", cb)
checkCall("dataAliasCall", dataAliasResult, "peer id str", cb)
checkCall("complexCall", complexCallResult, ["some str", "3", "1", "4", "1", "1", "3", "2", "4", "2", "2"], cb)
checkCall("constantCall", constantCallResult, "non-default string", cb)
checkCall("streamCall", streamResult, ["first updated", "second updated", "third updated", "fourth updated"], cb)
checkCall("topologyCall", topologyResult, "finish", cb)
checkCallBy("foldJoinCall", foldJoinResult, (res) => res.length == 3, cb)
2021-06-02 20:56:44 +03:00
checkCall("useOptional", optionResult, "hello", cb)
2021-06-03 17:27:32 +03:00
checkCallBy("via", viaResult, (res) => res.every( (val, i, arr) => deepEqual(val, arr[0]) ), cb)
2021-06-04 15:51:01 +03:00
checkCall("nestedFuncsCall", nestedFuncsResult, "some-str", cb)
2021-06-04 14:10:34 +03:00
if (success) {
process.exit(0)
} else {
process.exit(1)
}
};
main().catch((err) => {
console.log(err)
process.exit(1)
})