package water.parser;
import org.junit.*;
import water.TestUtil;
import water.fvec.*;
public class ParseUUIDTest extends TestUtil {
@BeforeClass
static public void setup() { stall_till_cloudsize(1); }
private long[] l(long... ls) { return ls; }
@Test public void testUUIDParse1() {
long[][] exp = new long[][] {
l( 1,0x9ff4ed3a6b004130L,0x9aca2ed897305fd1L,1),
l( 2,0xac1e1ca35ca8438aL,0x85a48175ed5bb7ecL,1),
l( 3,0x6870f256e1454d75L,0xadb099ccb77d5d3aL,0),
l( 4,0xd8da52c1d1454dffL,0xb3d1127c6eb75d40L,1),
l( 5,0x25ce1456546d4e35L,0xbddcd571b26581eaL,0),
l( 6,0x2e1d193fd1da4664L,0x8a2bffdfe0aa7be3L,0),
l(1000010407,0x89e68530422e43baL,0xbd00aa3d8f2cfcaaL,1),
l(1000024046,0x4055a53b411f46f0L,0x9d2ecf03bc95c080L,0),
l(1000054511,0x49d14d8e5c42439dL,0xb4a8995e25b1602fL,0),
l(1000065922,0x4e31b8aa4aa94e8bL,0xbe8f5cc6323235b4L,0),
l(1000066478,0x2e1d193fd1da4664L,0x8a2bffdfe0aa7be3L,0),
l(1000067268,0x25ce1456546d4e35L,0xbddcd571b26581eaL,0),
l( 100007536,0xd8da52c1d1454dffL,0xb3d1127c6eb75d40L,1),
l(1000079839,0x6870f256e1454d75L,0xadb099ccb77d5d3aL,0),
l( 10000913,0xac1e1ca35ca8438aL,0x85a48175ed5bb7ecL,0),
l(1000104538,0x9ff4ed3a6b004130L,0x9aca2ed897305fd1L,1),
l( 7,0x0000000000000000L,0x0000000000000000L,0),
l( 8,0x8000000000000000L,0x0000000000000000L,0),
l( 9,0xFFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFFL,1),
};
Frame fr = parse_test_file("smalldata/junit/test_uuid.csv");
Vec vecs[] = fr.vecs();
try {
Assert.assertEquals(exp.length,fr.numRows());
for( int row = 0; row < exp.length; row++ ) {
int col2 = 0;
for( int col = 0; col < fr.numCols(); col++ ) {
if( vecs[col].isUUID() ) {
if( C16Chunk.isNA(exp[row][col2], exp[row][col2+1]) ) {
Assert.assertTrue("Frame " + fr._key + ", row=" + row + ", col=" + col + ", expect=NA",
vecs[col].isNA(row));
} else {
long lo = vecs[col].at16l(row);
long hi = vecs[col].at16h(row);
Assert.assertTrue("Frame " + fr._key + ", row=" + row + ", col=" + col + ", expect=" + Long.toHexString(exp[row][col2]) + ", found=" + lo,
exp[row][col2] == lo && exp[row][col2 + 1] == hi);
}
col2 += 2;
} else {
long lo = vecs[col].at8(row);
Assert.assertTrue( "Frame "+fr._key+", row="+row+", col="+col+", expect="+exp[row][col2]+", found="+lo,
exp[row][col2]==lo );
col2 += 1;
}
}
Assert.assertEquals(exp[row].length,col2);
}
} finally {
fr.delete();
}
}
}