mirror of
https://github.com/fluencelabs/aqua-playground
synced 2025-06-26 13:51:41 +00:00
multireturn test
This commit is contained in:
@ -1,11 +1,20 @@
|
||||
service GetStr("multiret-test"):
|
||||
retStr: string -> string
|
||||
|
||||
service GetNum("multiret-num"):
|
||||
retNum: -> u8
|
||||
|
||||
const someNum = 5
|
||||
const someStr = "some-str"
|
||||
|
||||
func multiReturnFunc(somethingToReturn: []u8, smthOption: ?string) -> []string, u8, u8, string, []u8, ?string :
|
||||
func tupleFunc() -> string, u8:
|
||||
str <- GetStr.retStr(someStr)
|
||||
n <- GetNum.retNum()
|
||||
<- str, n
|
||||
|
||||
func multiReturnFunc(somethingToReturn: []u8, smthOption: ?string) -> []string, u8, string, []u8, ?string, u8 :
|
||||
res: *string
|
||||
res <- GetStr.retStr(someStr)
|
||||
res <- GetStr.retStr("random-str")
|
||||
<- res, 5, someNum, someStr, somethingToReturn, smthOption
|
||||
res, tNum <- tupleFunc()
|
||||
<- res, 5, someStr, somethingToReturn, smthOption, tNum
|
6
package-lock.json
generated
6
package-lock.json
generated
@ -5,9 +5,9 @@
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@fluencelabs/aqua-cli": {
|
||||
"version": "0.1.10-188",
|
||||
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.10-188.tgz",
|
||||
"integrity": "sha512-3StvE+xevgQVsGwHGpSY+OuXx86N89MxUpguvZfwufRuSLIO++aMmUGUC14GFc7LQelcP86h6pFZ5o7pNYEIVw==",
|
||||
"version": "0.1.13-196",
|
||||
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.13-196.tgz",
|
||||
"integrity": "sha512-ofBALzaUlbFH5k9FyGsslT/H+uN+l9NFxf/dg4N1/iKN6ZND+hT1jtMn7ybkTXe1vCS3DNMLqkfJBaK5f5M3Xw==",
|
||||
"dev": true
|
||||
},
|
||||
"@fluencelabs/aqua-dht": {
|
||||
|
@ -25,7 +25,7 @@
|
||||
"compile-aqua:air": "aqua-cli -i ./aqua/ -o ./compiled-air -a"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@fluencelabs/aqua-cli": "^0.1.10-188",
|
||||
"@fluencelabs/aqua-cli": "^0.1.13-196",
|
||||
"@fluencelabs/aqua-lib": "^0.1.9",
|
||||
"@fluencelabs/aqua-dht": "^0.1.35",
|
||||
"ts-node": "^9.1.1",
|
||||
|
63
src/compiled/examples/multiReturn.ts
Normal file
63
src/compiled/examples/multiReturn.ts
Normal file
@ -0,0 +1,63 @@
|
||||
/**
|
||||
*
|
||||
* This file is auto-generated. Do not edit manually: changes may be erased.
|
||||
* Generated by Aqua compiler: https://github.com/fluencelabs/aqua/.
|
||||
* If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues
|
||||
* Aqua version: 0.1.13-SNAPSHOT
|
||||
*
|
||||
*/
|
||||
import { FluenceClient, PeerIdB58 } from '@fluencelabs/fluence';
|
||||
import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable';
|
||||
import { RequestFlow } from '@fluencelabs/fluence/dist/internal/RequestFlow';
|
||||
|
||||
|
||||
|
||||
export async function tupleFunc(client: FluenceClient, config?: {ttl?: number}): Promise<string> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<string>((resolve, reject) => {
|
||||
const r = new RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript(
|
||||
`
|
||||
(xor
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") ["str"])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
|
||||
`,
|
||||
)
|
||||
.configHandler((h) => {
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
const [res] = args;
|
||||
resolve(res);
|
||||
});
|
||||
|
||||
h.onEvent('errorHandlingSrv', 'error', (args) => {
|
||||
// assuming error is the single argument
|
||||
const [err] = args;
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for tupleFunc');
|
||||
})
|
||||
if(config && config.ttl) {
|
||||
r.withTTL(config.ttl)
|
||||
}
|
||||
request = r.build();
|
||||
});
|
||||
await client.initiateFlow(request!);
|
||||
return promise;
|
||||
}
|
||||
|
@ -1,10 +1,14 @@
|
||||
import {FluenceClient, registerServiceFunction} from "@fluencelabs/fluence";
|
||||
import {multiReturnFunc} from "../compiled/examples/multiReturn";
|
||||
|
||||
export async function multiReturnCall(client: FluenceClient): Promise<[string[], number, number, string, number[], string | null]> {
|
||||
export async function multiReturnCall(client: FluenceClient): Promise<[string[], number, string, number[], string | null, number]> {
|
||||
registerServiceFunction(client, "multiret-test", "retStr", (args: any[], _) => {
|
||||
return args[0]
|
||||
})
|
||||
|
||||
registerServiceFunction(client, "multiret-num", "retNum", (args: any[], _) => {
|
||||
return 10
|
||||
})
|
||||
|
||||
return await multiReturnFunc(client, [1, 2], null)
|
||||
}
|
@ -30,13 +30,13 @@ import {literalCall} from "./examples/returnLiteralCall";
|
||||
import {multiReturnCall} from "./examples/multiReturnCall";
|
||||
let deepEqual = require('deep-equal')
|
||||
|
||||
function checkCall(name: string, expected: any, actual: any, callBackOnError: () => void) {
|
||||
if (!deepEqual(actual, expected)) {
|
||||
function checkCall(name: string, actual: any, expected: any, callBackOnError: () => void) {
|
||||
if (!deepEqual(expected, actual)) {
|
||||
console.error(`${name} call has the wrong result`)
|
||||
console.error("expected: ")
|
||||
console.dir(expected)
|
||||
console.error("actual: ")
|
||||
console.dir(actual)
|
||||
console.error("expected: ")
|
||||
console.dir(expected)
|
||||
callBackOnError()
|
||||
}
|
||||
}
|
||||
@ -201,7 +201,7 @@ const main = async () => {
|
||||
|
||||
checkCall("literalCall", literalCallResult, "some literal", cb)
|
||||
|
||||
checkCall("multiReturnResult", multiReturnResult, [ [ 'some-str', 'random-str' ], 5, 5, 'some-str', [ 1, 2 ], null], cb)
|
||||
checkCall("multiReturnResult", multiReturnResult, [ [ 'some-str', 'random-str', 'some-str' ], 5, 'some-str', [ 1, 2 ], null, 10], cb)
|
||||
|
||||
checkCallBy("tryCatchCall", tryCatchResult, (res) => {
|
||||
return (res[0] as string).includes("Error: Service with id 'unex' not found") && res[1] === '/ip4/164.90.171.139/tcp/7770'
|
||||
|
Reference in New Issue
Block a user