package com.github.jhusain.learnrxjava.test;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Map;
import com.github.jhusain.learnrxjava.ComposableListExercises;
import com.github.jhusain.learnrxjava.ComposableListSolutions;
import com.github.jhusain.learnrxjava.types.BoxArt;
import com.github.jhusain.learnrxjava.types.ComposableList;
import com.github.jhusain.learnrxjava.types.JSON;
import com.github.jhusain.learnrxjava.types.Video;
import org.junit.Test;
public class ComposableListExercisesTest {
@Test
public void testExercise1() {
System.out.println("----------- testExercise1 ----------------");
ComposableListExercises.exercise1();
}
@Test
public void testExercise2() {
System.out.println("----------- testExercise2 ----------------");
ComposableListExercises.exercise2();
}
@Test
public void testExercise3() {
System.out.println("----------- testExercise3 ----------------");
ComposableList<JSON> e = ComposableListExercises.exercise3();
ComposableList<JSON> s = ComposableListSolutions.exercise3();
assertMatch(e, s);
}
@Test
public void testExercise4map() {
System.out.println("----------- testExercise4 map ----------------");
ComposableList<Integer> slr = ComposableListExercises.of(1, 2, 3).map(i -> i + 1);
slr.forEach(System.out::println);
assertEquals(Arrays.asList(2, 3, 4), slr);
}
@Test
public void testExercise5() {
System.out.println("----------- testExercise5 ----------------");
ComposableList<JSON> e = ComposableListExercises.exercise5();
ComposableList<JSON> s = ComposableListSolutions.exercise5();
assertMatch(e, s);
}
@Test
public void testExercise6() {
System.out.println("----------- testExercise6 ----------------");
ComposableList<Video> e = ComposableListExercises.exercise6();
ComposableList<Video> s = ComposableListSolutions.exercise6();
assertMatch(e, s);
}
@Test
public void testExercise7filter() {
System.out.println("----------- testExercise7 filter ----------------");
ComposableList<Integer> slr = ComposableListExercises.of(1, 2, 3).filter(i -> i <= 2);
slr.forEach(System.out::println);
assertEquals(Arrays.asList(1, 2), slr);
}
@Test
public void testExercise8() {
System.out.println("----------- testExercise8 ----------------");
ComposableList<Integer> e = ComposableListExercises.exercise8();
ComposableList<Integer> s = ComposableListSolutions.exercise8();
assertMatch(e, s);
}
@Test
public void testExercise9() {
System.out.println("----------- testExercise9 ----------------");
ComposableList<Integer> e = ComposableListExercises.exercise9();
ComposableList<Integer> s = ComposableListSolutions.exercise9();
assertMatch(e, s);
}
@Test
public void testExercise10() {
System.out.println("----------- testExercise10 ----------------");
ComposableList<Integer> slr = ComposableListExercises.of(1, 2, 3).concatMap((t) -> ComposableListExercises.of(t + 1, t + 2, t + 3));
slr.forEach(System.out::println);
assertEquals(Arrays.asList(2, 3, 4, 3, 4, 5, 4, 5, 6), slr);
}
@Test
public void testExercise11() {
System.out.println("----------- testExercise11 ----------------");
ComposableList<Integer> e = ComposableListExercises.exercise11();
ComposableList<Integer> s = ComposableListSolutions.exercise11();
assertMatch(e, s);
}
@Test
public void testExercise12() {
System.out.println("----------- testExercise12 ----------------");
ComposableList<JSON> e = ComposableListExercises.exercise12();
ComposableList<JSON> s = ComposableListSolutions.exercise12();
assertMatch(e, s);
// {"id": 675465,"title": "Fracture","boxart":"http://cdn-0.nflximg.com/images/2891/Fracture150.jpg" },
// {"id": 65432445,"title": "The Chamber","boxart":"http://cdn-0.nflximg.com/images/2891/TheChamber150.jpg" },
// {"id": 654356453,"title": "Bad Boys","boxart":"http://cdn-0.nflximg.com/images/2891/BadBoys150.jpg" },
// {"id": 70111470,"title": "Die Hard","boxart":"http://cdn-0.nflximg.com/images/2891/DieHard150.jpg" }
}
@Test
public void testExercise13() {
System.out.println("----------- testExercise13 ----------------");
BoxArt e = ComposableListExercises.exercise13();
BoxArt s = ComposableListSolutions.exercise13();
assertEquals(e, s);
}
@Test
public void testExercise14reduce() {
System.out.println("----------- testExercise14 reduce ----------------");
ComposableList<Integer> slr = ComposableListExercises.of(1, 2, 3).reduce((s, i) -> s + i);
slr.forEach(System.out::println);
assertEquals(Arrays.asList(6), slr);
}
@Test
public void testExercise15reduce() {
System.out.println("----------- testExercise15 reduce ----------------");
ComposableList<Integer> slr = ComposableListExercises.of(1, 2, 3).reduce(1, (s, i) -> s + i);
slr.forEach(System.out::println);
assertEquals(Arrays.asList(7), slr);
}
@Test
public void testExercise16() {
System.out.println("----------- testExercise16 ----------------");
ComposableList<Integer> e = ComposableListExercises.exercise16();
ComposableList<Integer> s = ComposableListSolutions.exercise16();
assertMatch(e, s);
}
@Test
public void testExercise17() {
System.out.println("----------- testExercise17 ----------------");
ComposableList<String> e = ComposableListExercises.exercise17();
ComposableList<String> s = ComposableListSolutions.exercise17();
assertMatch(e, s);
}
@Test
public void testExercise18() {
System.out.println("----------- testExercise18 ----------------");
ComposableList<Map<Integer, String>> e = ComposableListExercises.exercise18();
ComposableList<Map<Integer, String>> s = ComposableListSolutions.exercise18();
assertMatch(e, s);
}
@Test
public void testExercise19() {
System.out.println("----------- testExercise19 ----------------");
ComposableList<JSON> e = ComposableListExercises.exercise19();
ComposableList<JSON> s = ComposableListSolutions.exercise19();
assertMatch(e, s);
}
@Test
public void testExercise20() {
System.out.println("----------- testExercise20 ----------------");
ComposableList<JSON> e = ComposableListExercises.exercise20();
ComposableList<JSON> s = ComposableListSolutions.exercise20();
assertMatch(e, s);
}
@Test
public void testExercise21zip() {
System.out.println("----------- testExercise21 zip ----------------");
ComposableList<Integer> slr = ComposableListExercises.zip(ComposableListExercises.of(1, 2, 3), ComposableListExercises.of(4, 5, 6), (l, r) -> l + r);
slr.forEach(System.out::println);
assertEquals(Arrays.asList(5, 7, 9), slr);
}
@Test
public void testExercise22() {
System.out.println("----------- testExercise22 ----------------");
ComposableList<JSON> e = ComposableListExercises.exercise22();
ComposableList<JSON> s = ComposableListSolutions.exercise22();
assertMatch(e, s);
}
@Test
public void testExercise23() {
System.out.println("----------- testExercise23 ----------------");
ComposableList<JSON> e = ComposableListExercises.exercise23();
ComposableList<JSON> s = ComposableListSolutions.exercise23();
assertMatch(e, s);
}
private void assertMatch(ComposableList<? extends Object> e, ComposableList<? extends Object> s) {
if (e.size() != s.size()) {
throw new RuntimeException("Count Doesn't Match");
}
for (int i = 0; i < e.size(); i++) {
if (!e.get(i).equals(s.get(i))) {
throw new RuntimeException("Item does not match at index: " + i);
}
}
}
}