package water.parser;
import org.junit.Test;
import static org.junit.Assert.*;
import static water.parser.PackedDomains.*;
/**
* Test suite for PackedDomains
*
* Created by vpatryshev on 4/12/17.
*/
public class PackedDomainsTest {
@Test
public void testSizeOf() throws Exception {
assertEquals(12345, sizeOf(new byte[]{57,48,0,0,5}));
}
@Test
public void testAsArrayOfStrings() throws Exception {
final byte[] packed = pack("", "abc", "∞", "", "X");
final String[] actuals = unpackToStrings(packed);
assertArrayEquals(new String[]{"", "abc", "∞", "", "X"},
actuals);
}
@Test
public void testPack() throws Exception {
byte[] packed = pack("", "abc", "∞", "", "X");
assertArrayEquals(new byte[]{5,0,0,0,0,97,98,99,0,(byte)0xe2,(byte)0x88,(byte)0x9e,0,0,88,0}, packed);
}
@Test
public void testPack1() throws Exception {
BufferedString bs = new BufferedString("efabc");
bs.addBuff("def".getBytes());
bs.setOff(2);
byte[] packed = pack(new BufferedString[] {
new BufferedString(""),
bs,
new BufferedString("∞"),
new BufferedString(""),
new BufferedString("X")});
assertArrayEquals(pack("", "abc", "∞", "", "X"), packed);
}
byte[] empty = pack();
byte[] first = pack("", "ANNIHILATION", "Zoo");
byte[] second = pack("aardvark", "absolute", "neo", "x", "xyzzy");
byte[] third = pack("", "abacus", "neolution", "x", "zambezi");
String[] allWords = new String[] {
"",
"ANNIHILATION",
"Zoo",
"aardvark",
"abacus",
"absolute",
"neo",
"neolution",
"x",
"xyzzy",
"zambezi"
};
@Test
public void testMergeEmpties() throws Exception {
assertArrayEquals(empty, merge(empty, empty));
assertArrayEquals(second, merge(empty, second));
assertArrayEquals(second, merge(second, empty));
}
@Test
public void testMerge12() throws Exception {
final byte[] merged = merge(first, second);
assertArrayEquals(new String[] {"", "ANNIHILATION", "Zoo", "aardvark", "absolute", "neo", "x", "xyzzy"}, unpackToStrings(merged));
}
@Test
public void testMerge23() throws Exception {
final byte[] merged = merge(second, third);
assertArrayEquals(new String[] {"", "aardvark", "abacus", "absolute", "neo", "neolution", "x", "xyzzy", "zambezi"}, unpackToStrings(merged));
}
@Test
public void testMerge3() throws Exception {
assertArrayEquals(allWords, unpackToStrings(merge(third, merge(first, second))));
assertArrayEquals(allWords, unpackToStrings(merge(first, merge(second, third))));
}
@Test
public void testMergeIdempotent() throws Exception {
assertArrayEquals(first, merge(first, first));
assertArrayEquals(second, merge(second, second));
assertArrayEquals(third, merge(third, third));
}
}