package com.luticate.utils; import com.luticate.utils.business.LuConsumer; import com.luticate.utils.business.LuConverter; import com.luticate.utils.business.LuPromise; import com.luticate.utils.dbo.LuPromiseError; import com.luticate.utils.dbo.LuVoidDbo; import org.junit.Test; import static org.junit.Assert.*; /** * Created by robin on 10/22/16. */ public class PromiseTest { @Test public void resolveTest() { LuPromise promise = new LuPromise<>(); final int[] results = new int[]{42, 24, 4242}; promise.then(new LuConsumer() { @Override public void execute(Integer data) { assertEquals(42, results[0]); assertEquals(24, results[1]); assertEquals(4242, results[2]); ++results[0]; } }, new LuConsumer() { @Override public void execute(LuPromiseError data) { assertEquals(42, results[0]); assertEquals(24, results[1]); assertEquals(4242, results[2]); --results[0]; } }).then(new LuConsumer() { @Override public void execute(Integer data) { assertEquals(43, results[0]); assertEquals(24, results[1]); assertEquals(4242, results[2]); ++results[1]; } }, new LuConsumer() { @Override public void execute(LuPromiseError data) { assertEquals(41, results[0]); assertEquals(24, results[1]); assertEquals(4242, results[2]); --results[1]; } }); assertEquals(42, results[0]); assertEquals(24, results[1]); assertEquals(4242, results[2]); assertEquals(LuPromise.LuPromiseStatus.Running, promise.getStatus()); assertNull(promise.getData()); promise.resolve(4224).then(new LuConsumer() { @Override public void execute(Integer data) { assertEquals(43, results[0]); assertEquals(25, results[1]); assertEquals(4242, results[2]); ++results[2]; } }, new LuConsumer() { @Override public void execute(LuPromiseError data) { assertEquals(41, results[0]); assertEquals(23, results[1]); assertEquals(4242, results[2]); --results[2]; } }); assertEquals(43, results[0]); assertEquals(25, results[1]); assertEquals(4243, results[2]); assertEquals(LuPromise.LuPromiseStatus.Resolved, promise.getStatus()); assertEquals(4224, promise.getData().intValue()); } @Test public void rejectTest() { LuPromise promise = new LuPromise<>(); final int[] results = new int[]{42, 24, 4242}; promise.then(new LuConsumer() { @Override public void execute(Integer data) { assertEquals(42, results[0]); assertEquals(24, results[1]); assertEquals(4242, results[2]); ++results[0]; } }, new LuConsumer() { @Override public void execute(LuPromiseError data) { assertEquals(42, results[0]); assertEquals(24, results[1]); assertEquals(4242, results[2]); --results[0]; } }).then(new LuConsumer() { @Override public void execute(Integer data) { assertEquals(43, results[0]); assertEquals(24, results[1]); assertEquals(4242, results[2]); ++results[1]; } }, new LuConsumer() { @Override public void execute(LuPromiseError data) { assertEquals(41, results[0]); assertEquals(24, results[1]); assertEquals(4242, results[2]); --results[1]; } }); assertEquals(42, results[0]); assertEquals(24, results[1]); assertEquals(4242, results[2]); assertEquals(LuPromise.LuPromiseStatus.Running, promise.getStatus()); assertNull(promise.getData()); promise.reject(null).then(new LuConsumer() { @Override public void execute(Integer data) { assertEquals(43, results[0]); assertEquals(25, results[1]); assertEquals(4242, results[2]); ++results[2]; } }, new LuConsumer() { @Override public void execute(LuPromiseError data) { assertEquals(41, results[0]); assertEquals(23, results[1]); assertEquals(4242, results[2]); --results[2]; } }); assertEquals(41, results[0]); assertEquals(23, results[1]); assertEquals(4241, results[2]); assertEquals(LuPromise.LuPromiseStatus.Failed, promise.getStatus()); assertNull(promise.getData()); } @Test public void mapTest() { LuPromise promise = new LuPromise<>(); final int[] result = new int[1]; promise.map(new LuConverter() { @Override public Boolean convert(Integer data) { return data == 42; } }).then(new LuConsumer() { @Override public void execute(Boolean data) { result[0] = data ? 4242 : 2424; } }, new LuConsumer() { @Override public void execute(LuPromiseError data) { result[0] = 2442; } }); promise.resolve(42); assertEquals(result[0], 4242); } }