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