tests for arrow return from function

This commit is contained in:
DieMyst 2023-04-21 12:32:15 +04:00
parent d5a24666f9
commit 85ddb2aa27
5 changed files with 69 additions and 24 deletions

View File

@ -0,0 +1,31 @@
import "@fluencelabs/aqua-lib/builtin.aqua"
export callReturnedArrow, callReturnedChainArrow
func returnCall(arg: string) -> string -> string, string:
str <- Op.concat_strings(arg, " literal")
closure = (s: string) -> string, string:
<- s, Op.concat_strings(s, str)
<- closure
func callReturnedArrow(argForFunc: string, argForClosure: string) -> string, string:
a = returnCall(argForFunc)
b, c <- a(argForClosure)
<- b, c
func secondReturnCall(arg: string) -> (string -> string, string), (string -> string, string), (string -> string, string):
str <- Op.concat_strings(arg, " second literal")
closure = (s: string) -> string, string:
<- s, Op.concat_strings(s, str)
b = closure
a = returnCall(" from second")
<- b, closure, a
func callReturnedChainArrow(argForFirst: string, argForSecond: string) -> string, string, string, string, string, string, string, string:
first = returnCall(argForFirst)
second, third, fourth <- secondReturnCall(argForSecond)
a, b <- first("first")
c, d <- second("second")
e, f <- third("third")
g, h <- fourth("fourth")
<- a, b, c, d, e, f, g, h

32
package-lock.json generated
View File

@ -16,7 +16,7 @@
"loglevel": "1.8.1"
},
"devDependencies": {
"@fluencelabs/aqua": "0.10.3",
"@fluencelabs/aqua": "0.10.5",
"@fluencelabs/aqua-dht": "0.2.5",
"@fluencelabs/aqua-lib": "0.6.0",
"@types/jest": "29.4.0",
@ -819,15 +819,15 @@
}
},
"node_modules/@fluencelabs/aqua": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.10.3.tgz",
"integrity": "sha512-v7Jy+KzZkUm7NuUgrp7UQ8gxuhykxuTU3JigCdxiZMcG3/zD+OtHzsSggVLxVjDP7CKuTcjEKZSCxObwHp/Tpw==",
"version": "0.10.5",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.10.5.tgz",
"integrity": "sha512-fcrxmkfLKXTIYjM2Gf9ZlF17IvTGwy84b1Eu5FPjsZD74Wnof9tbfHJMg5g2WK9FBMwaakwCQ3RtAS6MqyQhEg==",
"dev": true,
"dependencies": {
"@fluencelabs/aqua-ipfs": "0.5.9",
"@fluencelabs/aqua-lib": "0.6.0",
"@fluencelabs/fluence": "0.28.0",
"@fluencelabs/fluence-network-environment": "1.0.13",
"@fluencelabs/fluence-network-environment": "1.0.14",
"ipfs-http-client": "50.1.2"
},
"bin": {
@ -871,12 +871,6 @@
"integrity": "sha512-ifjtCM93KO3LhzPkMxqmXhwLmrg/scjOiyTihEVg7ns5N+BVzaK1eWzdOdqGdl9ZVoah43pdlQUepEo7VdRmsw==",
"dev": true
},
"node_modules/@fluencelabs/aqua/node_modules/@fluencelabs/fluence-network-environment": {
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence-network-environment/-/fluence-network-environment-1.0.13.tgz",
"integrity": "sha512-2pci3T0sUHE08jwEs1r/vHKVT4XUh/A3j/QJ0eIhddsxyIjEksjdn05X7DF6STD14CF8GgBVOJEPgav8qaUMpA==",
"dev": true
},
"node_modules/@fluencelabs/avm": {
"version": "0.35.3",
"resolved": "https://npm.fluence.dev/@fluencelabs%2favm/-/avm-0.35.3.tgz",
@ -14077,24 +14071,16 @@
}
},
"@fluencelabs/aqua": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.10.3.tgz",
"integrity": "sha512-v7Jy+KzZkUm7NuUgrp7UQ8gxuhykxuTU3JigCdxiZMcG3/zD+OtHzsSggVLxVjDP7CKuTcjEKZSCxObwHp/Tpw==",
"version": "0.10.5",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.10.5.tgz",
"integrity": "sha512-fcrxmkfLKXTIYjM2Gf9ZlF17IvTGwy84b1Eu5FPjsZD74Wnof9tbfHJMg5g2WK9FBMwaakwCQ3RtAS6MqyQhEg==",
"dev": true,
"requires": {
"@fluencelabs/aqua-ipfs": "0.5.9",
"@fluencelabs/aqua-lib": "0.6.0",
"@fluencelabs/fluence": "0.28.0",
"@fluencelabs/fluence-network-environment": "1.0.13",
"@fluencelabs/fluence-network-environment": "1.0.14",
"ipfs-http-client": "50.1.2"
},
"dependencies": {
"@fluencelabs/fluence-network-environment": {
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence-network-environment/-/fluence-network-environment-1.0.13.tgz",
"integrity": "sha512-2pci3T0sUHE08jwEs1r/vHKVT4XUh/A3j/QJ0eIhddsxyIjEksjdn05X7DF6STD14CF8GgBVOJEPgav8qaUMpA==",
"dev": true
}
}
},
"@fluencelabs/aqua-dht": {

View File

@ -28,7 +28,7 @@
"do": "aqua dist deploy --addr /dns4/kras-04.fluence.dev/tcp/19001/wss/p2p/12D3KooWFEwNWcHqi9rtsmDhsYcDbRUCDXH84RC4FW6UfsFWaoHi --config-path deploy.json --service tsOracle"
},
"devDependencies": {
"@fluencelabs/aqua": "0.10.3",
"@fluencelabs/aqua": "0.10.5",
"@fluencelabs/aqua-dht": "0.2.5",
"@fluencelabs/aqua-lib": "0.6.0",
"@types/jest": "29.4.0",

View File

@ -57,6 +57,7 @@ import {lng58Bug} from '../compiled/examples/closures.js';
import {config, isEphemeral} from '../config.js';
import {bugLng79Call} from "../examples/canonCall.js";
import {bugLng119Call} from "../examples/functorsCall.js";
import {returnArrowCall, returnArrowChainCall} from "../examples/returnArrowCall.js";
var selfPeerId: string;
var peer1: IFluenceClient;
@ -121,6 +122,24 @@ describe('Testing examples', () => {
expect(argResult).toBe('privet');
});
it('returnArrow.aqua', async () => {
let [result1, result2] = await returnArrowCall();
expect(result1).toBe('arg for closure ');
expect(result2).toBe('arg for closure arg for func literal');
});
it('returnArrow.aqua chain', async () => {
let argResult = await returnArrowChainCall();
expect(argResult).toBe(
["first", "firstarg for func1 literal",
"second", "secondarg for func2 second literal",
"third", "thirdarg for func2 second literal",
"fourth", "fourth from second literal"
]);
});
it('streamRestrictions.aqua', async () => {
let streamResResult = await streamResCall();

View File

@ -0,0 +1,9 @@
import {callReturnedArrow, callReturnedChainArrow} from "../compiled/examples/returnArrow.js";
export async function returnArrowCall(): Promise<[string, string]> {
return await callReturnedArrow("arg for func ", "arg for closure ")
}
export async function returnArrowChainCall(): Promise<[string, string, string, string, string, string, string, string]> {
return await callReturnedChainArrow("arg for func1 ", "arg for func2 ")
}