package com.bigdata.rdf.internal;
import junit.framework.TestCase2;
public class TestInlineLocalNameIntegerURIHandler extends TestCase2 {
private MyInlineLocalNameIntegerURIHandler handler = null;
private int packedId = 1;
public TestInlineLocalNameIntegerURIHandler(final String name) {
super(name);
handler = new MyInlineLocalNameIntegerURIHandler("http://www.blazegraph.com/",packedId);
}
public void test_packValues() {
final long testVal = 123456789;
check(handler, testVal, packedId);
}
public void test_idrange() {
final long value = 5555555555L;
for(int i = 0; i < 32; i++) {
final MyInlineLocalNameIntegerURIHandler h = new MyInlineLocalNameIntegerURIHandler(
"www.blazegraph.com", i);
check(h, value, i);
}
}
public void test_maxInteger() {
final long tooBig = 576460752303423000L;
try {
handler.packValue(tooBig);
} catch (RuntimeException e) {
//This should throw an exception
assertTrue(true);
return;
}
fail(tooBig +" exceeds the maximum value.");
}
public void test_maxId() {
try {
@SuppressWarnings("unused")
MyInlineLocalNameIntegerURIHandler h = new MyInlineLocalNameIntegerURIHandler(
"www.blazegraph.com", 33);
} catch (RuntimeException e) {
// This should throw an exception
assertTrue(true);
return;
}
fail(32 + " exceeds the maximum id value.");
}
/**
* Test of the maximum int value edge case.
*
*/
public void test_edgeCase1() {
final long edge = 144115188075856000L - 1;
final int id = 16;
MyInlineLocalNameIntegerURIHandler h = new MyInlineLocalNameIntegerURIHandler(
"www.blazegraph.com", id);
check(h,edge,id);
}
public void test_edgeCase2() {
final long edge = 144115188075856000L;
final int id = 16;
MyInlineLocalNameIntegerURIHandler h = new MyInlineLocalNameIntegerURIHandler(
"www.blazegraph.com", id);
try {
@SuppressWarnings("unused")
final long packedVal = h.packValue(edge);
} catch (RuntimeException e) {
//Should fail
assertTrue(true);
return;
}
fail();
}
public void test_edgeCase3() {
final long edge = 0;
final int id = 16;
MyInlineLocalNameIntegerURIHandler h = new MyInlineLocalNameIntegerURIHandler(
"www.blazegraph.com", id);
try {
@SuppressWarnings(value = { "unused" })
final long packedVal = h.packValue(edge);
} catch (RuntimeException e) {
//Should not fail
fail();
}
check(h,edge,id);
}
public void test_edgeCase4() {
final long edge = -1;
final int id = 16;
MyInlineLocalNameIntegerURIHandler h = new MyInlineLocalNameIntegerURIHandler(
"www.blazegraph.com", id);
try {
@SuppressWarnings(value = { "unused" })
final long packedVal = h.packValue(edge);
} catch (RuntimeException e) {
//Should fail
assertTrue(true);
return;
}
fail();
}
/**
* Test the two different ids with the same integer value are
* different packed values.
*/
public void test_differentIds() {
final long value = 123456789;
final int id1 = 4;
final int id2 = 31;
MyInlineLocalNameIntegerURIHandler h1 = new MyInlineLocalNameIntegerURIHandler(
"www.blazegraph.com", id1);
MyInlineLocalNameIntegerURIHandler h2 = new MyInlineLocalNameIntegerURIHandler(
"www.blazegraph.com", id2);
final long packed1 = h1.packValue(value);
final long packed2 = h2.packValue(value);
//Different IDs should differ
assertTrue(packed1 != packed2);
final long unpacked1 = h1.unpackValue(packed1);
final long unpacked2 = h2.unpackValue(packed2);
//These should be the same value
assertTrue(unpacked1 == unpacked2);
}
private class MyInlineLocalNameIntegerURIHandler extends InlineLocalNameIntegerURIHandler {
public MyInlineLocalNameIntegerURIHandler(String namespace, int packedId) {
super(namespace, packedId);
}
}
private void check(MyInlineLocalNameIntegerURIHandler h, long value, int id) {
final long packedVal = h.packValue(value);
if(log.isDebugEnabled()) {
log.debug("packedVal: " + packedVal);
log.debug("test: " + value + " : " + h.unpackValue(packedVal));
log.debug("packedId: " + id + " : " + h.unpackId(packedVal));
}
assertTrue( value == h.unpackValue(packedVal) );
assertTrue ( id == h.unpackId(packedVal));
}
}