You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PromiseTest.java 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package com.luticate.utils;
  2. import com.luticate.utils.business.LuConsumer;
  3. import com.luticate.utils.business.LuConverter;
  4. import com.luticate.utils.business.LuPromise;
  5. import com.luticate.utils.dbo.LuPromiseError;
  6. import com.luticate.utils.dbo.LuVoidDbo;
  7. import org.junit.Test;
  8. import static org.junit.Assert.*;
  9. /**
  10. * Created by robin on 10/22/16.
  11. */
  12. public class PromiseTest {
  13. @Test
  14. public void resolveTest()
  15. {
  16. LuPromise<Integer> promise = new LuPromise<>();
  17. final int[] results = new int[]{42, 24, 4242};
  18. promise.then(new LuConsumer<Integer>() {
  19. @Override
  20. public void execute(Integer data) {
  21. assertEquals(42, results[0]);
  22. assertEquals(24, results[1]);
  23. assertEquals(4242, results[2]);
  24. ++results[0];
  25. }
  26. }, new LuConsumer<LuPromiseError>() {
  27. @Override
  28. public void execute(LuPromiseError data) {
  29. assertEquals(42, results[0]);
  30. assertEquals(24, results[1]);
  31. assertEquals(4242, results[2]);
  32. --results[0];
  33. }
  34. }).then(new LuConsumer<Integer>() {
  35. @Override
  36. public void execute(Integer data) {
  37. assertEquals(43, results[0]);
  38. assertEquals(24, results[1]);
  39. assertEquals(4242, results[2]);
  40. ++results[1];
  41. }
  42. }, new LuConsumer<LuPromiseError>() {
  43. @Override
  44. public void execute(LuPromiseError data) {
  45. assertEquals(41, results[0]);
  46. assertEquals(24, results[1]);
  47. assertEquals(4242, results[2]);
  48. --results[1];
  49. }
  50. });
  51. assertEquals(42, results[0]);
  52. assertEquals(24, results[1]);
  53. assertEquals(4242, results[2]);
  54. assertEquals(LuPromise.LuPromiseStatus.Running, promise.getStatus());
  55. assertNull(promise.getData());
  56. promise.resolve(4224).then(new LuConsumer<Integer>() {
  57. @Override
  58. public void execute(Integer data) {
  59. assertEquals(43, results[0]);
  60. assertEquals(25, results[1]);
  61. assertEquals(4242, results[2]);
  62. ++results[2];
  63. }
  64. }, new LuConsumer<LuPromiseError>() {
  65. @Override
  66. public void execute(LuPromiseError data) {
  67. assertEquals(41, results[0]);
  68. assertEquals(23, results[1]);
  69. assertEquals(4242, results[2]);
  70. --results[2];
  71. }
  72. });
  73. assertEquals(43, results[0]);
  74. assertEquals(25, results[1]);
  75. assertEquals(4243, results[2]);
  76. assertEquals(LuPromise.LuPromiseStatus.Resolved, promise.getStatus());
  77. assertEquals(4224, promise.getData().intValue());
  78. }
  79. @Test
  80. public void rejectTest()
  81. {
  82. LuPromise<Integer> promise = new LuPromise<>();
  83. final int[] results = new int[]{42, 24, 4242};
  84. promise.then(new LuConsumer<Integer>() {
  85. @Override
  86. public void execute(Integer data) {
  87. assertEquals(42, results[0]);
  88. assertEquals(24, results[1]);
  89. assertEquals(4242, results[2]);
  90. ++results[0];
  91. }
  92. }, new LuConsumer<LuPromiseError>() {
  93. @Override
  94. public void execute(LuPromiseError data) {
  95. assertEquals(42, results[0]);
  96. assertEquals(24, results[1]);
  97. assertEquals(4242, results[2]);
  98. --results[0];
  99. }
  100. }).then(new LuConsumer<Integer>() {
  101. @Override
  102. public void execute(Integer data) {
  103. assertEquals(43, results[0]);
  104. assertEquals(24, results[1]);
  105. assertEquals(4242, results[2]);
  106. ++results[1];
  107. }
  108. }, new LuConsumer<LuPromiseError>() {
  109. @Override
  110. public void execute(LuPromiseError data) {
  111. assertEquals(41, results[0]);
  112. assertEquals(24, results[1]);
  113. assertEquals(4242, results[2]);
  114. --results[1];
  115. }
  116. });
  117. assertEquals(42, results[0]);
  118. assertEquals(24, results[1]);
  119. assertEquals(4242, results[2]);
  120. assertEquals(LuPromise.LuPromiseStatus.Running, promise.getStatus());
  121. assertNull(promise.getData());
  122. promise.reject(null).then(new LuConsumer<Integer>() {
  123. @Override
  124. public void execute(Integer data) {
  125. assertEquals(43, results[0]);
  126. assertEquals(25, results[1]);
  127. assertEquals(4242, results[2]);
  128. ++results[2];
  129. }
  130. }, new LuConsumer<LuPromiseError>() {
  131. @Override
  132. public void execute(LuPromiseError data) {
  133. assertEquals(41, results[0]);
  134. assertEquals(23, results[1]);
  135. assertEquals(4242, results[2]);
  136. --results[2];
  137. }
  138. });
  139. assertEquals(41, results[0]);
  140. assertEquals(23, results[1]);
  141. assertEquals(4241, results[2]);
  142. assertEquals(LuPromise.LuPromiseStatus.Failed, promise.getStatus());
  143. assertNull(promise.getData());
  144. }
  145. @Test
  146. public void mapTest()
  147. {
  148. LuPromise<Integer> promise = new LuPromise<>();
  149. final int[] result = new int[1];
  150. promise.map(new LuConverter<Integer, Boolean>() {
  151. @Override
  152. public Boolean convert(Integer data) {
  153. return data == 42;
  154. }
  155. }).then(new LuConsumer<Boolean>() {
  156. @Override
  157. public void execute(Boolean data) {
  158. result[0] = data ? 4242 : 2424;
  159. }
  160. }, new LuConsumer<LuPromiseError>() {
  161. @Override
  162. public void execute(LuPromiseError data) {
  163. result[0] = 2442;
  164. }
  165. });
  166. promise.resolve(42);
  167. assertEquals(result[0], 4242);
  168. }
  169. }