package liquibase.change;
import static org.junit.Assert.*;
import org.junit.Test;
import java.io.ByteArrayInputStream;
public class CheckSumTest {
@Test
public void parse() {
String checksumString = "3:asdf";
CheckSum checkSum = CheckSum.parse(checksumString);
assertEquals(3, checkSum.getVersion());
assertEquals(checksumString, checkSum.toString());
}
@Test
public void parse_null() {
assertNull(CheckSum.parse(null));
}
@Test
public void parse_v1() {
String checksumString = "asdf";
CheckSum checkSum = CheckSum.parse(checksumString);
assertEquals(1, checkSum.getVersion());
assertEquals("1:asdf", checkSum.toString());
}
@Test
public void getCurrentVersion() {
assertEquals(7, CheckSum.getCurrentVersion());
}
@Test
public void compute_String() {
String valueToHash = "asdf";
CheckSum checkSum = CheckSum.compute(valueToHash);
assertEquals(CheckSum.getCurrentVersion(), checkSum.getVersion());
assertFalse(checkSum.toString().equals(valueToHash));
}
@Test
public void compute_Stream() {
String valueToHash = "asdf";
CheckSum checkSum = CheckSum.compute(new ByteArrayInputStream(valueToHash.getBytes()), false);
assertEquals(CheckSum.getCurrentVersion(), checkSum.getVersion());
assertFalse(checkSum.toString().equals(valueToHash));
assertEquals(CheckSum.compute(valueToHash).toString(), checkSum.toString());
}
@Test
public void toString_test() {
assertTrue(CheckSum.parse("9:asdf").toString().startsWith("9:"));
}
@Test
public void hashCode_test() {
assertNotNull(CheckSum.parse("5:asdf").hashCode());
}
@Test
public void equals() {
assertTrue(CheckSum.parse("9:asdf").equals(CheckSum.parse("9:asdf")));
assertFalse(CheckSum.parse("9:asdf").equals(CheckSum.parse("8:asdf")));
assertFalse(CheckSum.parse("9:asdf").equals(CheckSum.parse("9:qwert")));
assertFalse(CheckSum.parse("9:asdf").equals(12));
assertFalse(CheckSum.parse("9:asdf").equals(null));
}
@Test
public void compute_lineEndingsDontMatter() {
String checkSum = CheckSum.compute("a string\nwith\nlines").toString();
assertEquals(checkSum, CheckSum.compute("a string\rwith\rlines").toString());
assertEquals(checkSum, CheckSum.compute("a string\r\nwith\r\nlines").toString());
assertEquals(checkSum, CheckSum.compute("a string\rwith\nlines").toString());
assertFalse(checkSum.equals(CheckSum.compute("a string\n\nwith\n\nlines").toString()));
assertEquals(checkSum, CheckSum.compute(new ByteArrayInputStream("a string\nwith\nlines".getBytes()), true).toString());
assertEquals(checkSum, CheckSum.compute(new ByteArrayInputStream("a string\rwith\rlines".getBytes()), true).toString());
assertEquals(checkSum, CheckSum.compute(new ByteArrayInputStream("a string\r\nwith\r\nlines".getBytes()), true).toString());
assertEquals(checkSum, CheckSum.compute(new ByteArrayInputStream("a string\rwith\r\nlines".getBytes()), true).toString());
}
}