package com.kickstarter.libs.utils; import junit.framework.TestCase; import java.util.Arrays; import java.util.List; import rx.functions.Func2; public class DiffUtilsTest extends TestCase { public void testDiff_WithExpandingSection() { final List<Integer> oldItems = Arrays.asList(1, 2, 3, 4, 5); final List<Integer> newItems = Arrays.asList(1, 2, 3, 31, 32, 33, 4, 5); final DiffUtils.Diff expected = DiffUtils.Diff.builder() .insertions(Arrays.asList(3, 4, 5)) .build(); assertEquals(expected, DiffUtils.diff(oldItems, newItems)); } public void testDiff_WithCollapsingSection() { final List<Integer> oldItems = Arrays.asList(1, 2, 3, 31, 32, 33, 4, 5); final List<Integer> newItems = Arrays.asList(1, 2, 3, 4, 5); final DiffUtils.Diff expected = DiffUtils.Diff.builder() .deletions(Arrays.asList(3, 4, 5)) .build(); assertEquals(expected, DiffUtils.diff(oldItems, newItems)); } public void testDiff_WithChangedSingleItem() { final List<Integer> oldItems = Arrays.asList(1, 2, 3, 4, 5); final List<Integer> newItems = Arrays.asList(1, 2, 6, 4, 5); final DiffUtils.Diff expected = DiffUtils.Diff.builder() .insertions(Arrays.asList(2)) .deletions(Arrays.asList(2)) .build(); assertEquals(expected, DiffUtils.diff(oldItems, newItems)); } public void testDiff_WithTheWholeEnchilada() { final List<Integer> oldItems = Arrays.asList(1, 2, 3, 40, 41, 42, 43, 5); final List<Integer> newItems = Arrays.asList(1, 2, 6, 61, 62, 63, 4, 5); final Func2<Integer, Integer, Boolean> equality = (x, y) -> x.equals(y) || (x == 4 && y == 40) || (x == 40 && y == 4); final DiffUtils.Diff expected = DiffUtils.Diff.builder() .insertions(Arrays.asList(2, 3, 4, 5)) .deletions(Arrays.asList(2, 4, 5, 6)) .updates(Arrays.asList(3)) .build(); assertEquals(expected, DiffUtils.diff(oldItems, newItems, equality)); } }