github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/js/src/test/functional.test.ts (about) 1 import * as assert from 'assert'; 2 import { compile } from '../contracts/compile'; 3 import { getMetadata } from '../contracts/contract'; 4 import { client } from './test'; 5 6 describe('Functional Contract Usage', function () { 7 it('#Constructor usage', async () => { 8 const source = ` 9 pragma solidity >=0.0.0; 10 contract Test { 11 address storedData; 12 constructor(address x) public { 13 storedData = x; 14 } 15 16 function getAddress() public view returns (address) { 17 return address(this); 18 } 19 20 function getNumber() public pure returns (uint) { 21 return 100; 22 } 23 24 function getCombination() public view returns (uint _number, address _address, string memory _saying, bytes32 _randomBytes, address _stored) { 25 _number = 100; 26 _address = address(this); 27 _saying = "hello moto"; 28 _randomBytes = bytes32(uint256(0xDEADBEEFFEEDFACE)); 29 _stored = storedData; 30 } 31 32 } 33 `; 34 const contract = compile(source, 'Test'); 35 36 const [instance1, instance2] = await Promise.all([ 37 contract.deploy(client, '88977A37D05A4FE86D09E88C88A49C2FCF7D6D8F'), 38 contract.deploy(client, 'ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEF0123'), 39 ]); 40 41 const address1 = getMetadata(instance1).address; 42 const address2 = getMetadata(instance2).address; 43 44 const [ret1, ret2] = await Promise.all([ 45 instance1.getCombination.at(address1)(), 46 instance1.getCombination.at(address2)(), 47 ]); 48 49 const randomBytes = Buffer.from('000000000000000000000000000000000000000000000000DEADBEEFFEEDFACE', 'hex'); 50 const expected1 = [100, address1, 'hello moto', randomBytes, '88977A37D05A4FE86D09E88C88A49C2FCF7D6D8F']; 51 const expected2 = [100, address2, 'hello moto', randomBytes, 'ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEF0123']; 52 assert.deepStrictEqual([...ret1], expected1); 53 assert.deepStrictEqual([...ret2], expected2); 54 // Check we are assigning names to hybrid record/array Result object 55 assert.strictEqual(ret2._saying, 'hello moto'); 56 }); 57 });