WsProviderTest.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace Test\Unit;
  3. use RuntimeException;
  4. use Test\TestCase;
  5. use Web3\Providers\WsProvider;
  6. use Web3\Methods\Web3\ClientVersion;
  7. class WsProviderTest extends TestCase
  8. {
  9. /**
  10. * testSend
  11. *
  12. * @return void
  13. */
  14. public function testSend()
  15. {
  16. $provider = new WsProvider($this->testWsHost);
  17. $method = new ClientVersion('web3_clientVersion', []);
  18. // \React\Async\await($provider->send($method, function ($err, $version) {
  19. // if ($err !== null) {
  20. // $this->fail($err->getMessage());
  21. // }
  22. // $this->assertTrue(is_string($version));
  23. // }));
  24. $a = $provider->send($method, function ($err, $version) {
  25. if ($err !== null) {
  26. $this->fail($err->getMessage());
  27. }
  28. $this->assertTrue(is_string($version));
  29. });
  30. $b = $provider->send($method, function ($err, $version) {
  31. if ($err !== null) {
  32. $this->fail($err->getMessage());
  33. }
  34. $this->assertTrue(is_string($version));
  35. });
  36. $c = $provider->send($method, function ($err, $version) {
  37. if ($err !== null) {
  38. $this->fail($err->getMessage());
  39. }
  40. $this->assertTrue(is_string($version));
  41. });
  42. \React\Async\await(\React\Async\parallel([
  43. function () use ($a) { return $a; },
  44. function () use ($b) { return $b; },
  45. function () use ($c) { return $c; }
  46. ]));
  47. // close connection
  48. $provider->close();
  49. }
  50. /**
  51. * testBatchAsync
  52. *
  53. * @return void
  54. */
  55. public function testBatchAsync()
  56. {
  57. $provider = new WsProvider($this->testWsHost);
  58. $method = new ClientVersion('web3_clientVersion', []);
  59. $callback = function ($err, $data) {
  60. if ($err !== null) {
  61. $this->fail($err->getMessage());
  62. }
  63. $this->assertEquals($data[0], $data[1]);
  64. };
  65. try {
  66. \React\Async\await($provider->execute($callback));
  67. } catch (RuntimeException $err) {
  68. $this->assertTrue($err->getMessage() !== true);
  69. }
  70. $provider->batch(true);
  71. $provider->send($method, null);
  72. $provider->send($method, null);
  73. \React\Async\await($provider->execute($callback));
  74. // close connection
  75. $provider->close();
  76. }
  77. }