calls.spec.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import expect from 'expect';
  2. import { establishConnection } from './index';
  3. import crypto from 'crypto';
  4. describe('Deploy solang contract and test', () => {
  5. it('external_call', async function () {
  6. this.timeout(50000);
  7. let conn = await establishConnection();
  8. let caller = await conn.loadProgram("bundle.so", "caller.abi");
  9. let callee = await conn.loadProgram("bundle.so", "callee.abi");
  10. let callee2 = await conn.loadProgram("bundle.so", "callee2.abi");
  11. // call the constructor
  12. await caller.call_constructor(conn, 'caller', []);
  13. await callee.call_constructor(conn, 'callee', []);
  14. await callee2.call_constructor(conn, 'callee2', []);
  15. await callee.call_function(conn, "set_x", ["102"]);
  16. let res = await callee.call_function(conn, "get_x", []);
  17. expect(res["0"]).toBe("102");
  18. let address_caller = '0x' + caller.get_storage_key().toBuffer().toString('hex');
  19. let address_callee = '0x' + callee.get_storage_key().toBuffer().toString('hex');
  20. let address_callee2 = '0x' + callee2.get_storage_key().toBuffer().toString('hex');
  21. console.log("addres: " + address_callee);
  22. res = await caller.call_function(conn, "who_am_i", []);
  23. expect(res["0"]).toBe(address_caller);
  24. await caller.call_function(conn, "do_call", [address_callee, "13123"], callee.all_keys());
  25. res = await callee.call_function(conn, "get_x", []);
  26. expect(res["0"]).toBe("13123");
  27. res = await caller.call_function(conn, "do_call2", [address_callee, "20000"], callee.all_keys());
  28. expect(res["0"]).toBe("33123");
  29. let all_keys = callee.all_keys()
  30. all_keys.push(...callee2.all_keys());
  31. res = await caller.call_function(conn, "do_call3", [address_callee, address_callee2, ["3", "5", "7", "9"], "yo"], all_keys);
  32. expect(res["0"]).toBe("24");
  33. expect(res["1"]).toBe("my name is callee");
  34. res = await caller.call_function(conn, "do_call4", [address_callee, address_callee2, ["1", "2", "3", "4"], "asda"], all_keys);
  35. expect(res["0"]).toBe("10");
  36. expect(res["1"]).toBe("x:asda");
  37. });
  38. });