All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.darylteo.rx.promises.test.PromiseRxJavaTests Maven / Gradle / Ivy

package com.darylteo.rx.promises.test;

import static org.junit.Assert.assertEquals;

import java.util.concurrent.CountDownLatch;

import org.junit.Test;

import rx.util.functions.Action1;
import rx.util.functions.Func1;

import com.darylteo.rx.promises.java.Promise;

public class PromiseRxJavaTests {

  @Test
  public void testPromiseToRxSubscribe() throws InterruptedException {
    final CountDownLatch latch = new CountDownLatch(1);
    final Result result = new Result<>();

    makePromise("Hello World")
      .subscribe(new Action1() {
        @Override
        public void call(String value) {
          result.value = value;
          latch.countDown();
        }
      });

    latch.await();
    assertEquals("Hello World", result.value);
  }

  @Test
  public void testPromiseToRxMap() throws InterruptedException {
    final CountDownLatch latch = new CountDownLatch(1);
    final Result result = new Result<>();

    makePromise("Hello World")
      .map(new Func1() {
        @Override
        public String call(String value) {
          return value.toUpperCase();
        }
      })
      .subscribe(new Action1() {
        @Override
        public void call(String value) {
          result.value = value;
          latch.countDown();
        }
      });

    latch.await();
    assertEquals("HELLO WORLD", result.value);
  }

  public Promise makePromise(final String value) {
    final Promise promise = Promise.defer();

    new Thread() {
      public void run() {
        try {
          Thread.sleep(500);
        } catch (InterruptedException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        } finally {
          promise.fulfill(value);
        }
      }
    }.start();

    return promise;
  }

  private class Result {
    T value;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy