@Test
void diffStringList() throws Exception
{

    // Null
    DiffResult<String> result = this.diffManager.diff(null, null, null);
    assertTrue(result.getPatch().isEmpty());
    // Empty
    result = this.diffManager.diff(Collections.<String>emptyList(),
        Collections.<String>emptyList(), null);
    assertTrue(result.getPatch().isEmpty());
    // Equals
    result = this.diffManager.diff(Arrays.asList("equals"), Arrays.asList("equals"), null);
    assertTrue(result.getPatch().isEmpty());
    // Previous empty
    result = this.diffManager.diff(Collections.<String>emptyList(), Arrays.asList("next"), null);
    assertEquals(1, result.getPatch().size());
    assertEquals(Type.INSERT, result.getPatch().get(0).getType());
    assertEquals(Arrays.asList("next"), result.getPatch().get(0).getNext().getElements());
    assertEquals(0, result.getPatch().get(0).getNext().getIndex());
    // Next empty
    result =
        this.diffManager.diff(Arrays.asList("previous"), Collections.<String>emptyList(), null);
    assertEquals(1, result.getPatch().size());
    assertEquals(Type.DELETE, result.getPatch().get(0).getType());
    assertEquals(Arrays.asList("previous"), result.getPatch().get(0).getPrevious().getElements());
    assertEquals(0, result.getPatch().get(0).getPrevious().getIndex());
}