package com.ontology2.bakemono.joins;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.VIntWritable;
import org.junit.Test;
import java.io.*;
import static org.junit.Assert.*;
public class TaggedTextKeyTest {
@Test
public void zeroArgConstructorLeavesAllNull() {
TaggedTextItem that=new TaggedTextItem();
assertNull(that.getKey());
assertNull(that.getTag());
}
@Test
public void dualArgConstructorSetsValues() {
TaggedTextItem that=new TaggedTextItem(
new Text("Doctor Funkenstein")
,new VIntWritable(33550336)
);
assertEquals("Doctor Funkenstein",that.getKey().toString());
assertEquals(33550336,that.getTag().get());
}
@Test
public void equalIfTagsAreEqual() {
TaggedTextItem k1=new TaggedTextItem(
new Text("Doctor Funkenstein")
,new VIntWritable(33550336)
);
TaggedTextItem k2=new TaggedTextItem(
new Text("Doctor Funkenstein")
,new VIntWritable(702)
);
assertTrue(k1.equals(k2));
}
@Test
public void unequalIfTagsAreUnequal() {
TaggedTextItem k1=new TaggedTextItem(
new Text("Doctor Funkenstein")
,new VIntWritable(33550336)
);
TaggedTextItem k2=new TaggedTextItem(
new Text("Sir Nose D'void of Funk")
,new VIntWritable(702)
);
assertFalse(k1.equals(k2));
}
@Test
public void hashEqualsHashOfKey() {
TaggedTextItem k1=new TaggedTextItem(
new Text("Doctor Funkenstein")
,new VIntWritable(33550336)
);
assertEquals(
new Text("Doctor Funkenstein").hashCode()
,k1.hashCode()
);
}
@Test
public void sortsByOrderOfKeys() {
TaggedTextItem k1=new TaggedTextItem(
new Text("a")
,new VIntWritable(2)
);
TaggedTextItem k2=new TaggedTextItem(
new Text("b")
,new VIntWritable(1)
);
assertEquals(-1,k1.compareTo(k2));
assertEquals(1,k2.compareTo(k1));
}
@Test
public void exactlyEqualSortsSame() {
TaggedTextItem k1=new TaggedTextItem(
new Text("a")
,new VIntWritable(2)
);
TaggedTextItem k2=new TaggedTextItem(
new Text("a")
,new VIntWritable(2)
);
assertEquals(0,k1.compareTo(k2));
assertEquals(0,k2.compareTo(k1));
}
@Test
public void sortsOnTagIfKeysSame() {
TaggedTextItem k1=new TaggedTextItem(
new Text("a")
,new VIntWritable(1)
);
TaggedTextItem k2=new TaggedTextItem(
new Text("a")
,new VIntWritable(2)
);
assertEquals(-1,k1.compareTo(k2));
assertEquals(1,k2.compareTo(k1));
}
@Test
public void roundTrips() throws IOException {
TaggedTextItem k1=new TaggedTextItem(
new Text("solvent")
,new VIntWritable(7777)
);
ByteArrayOutputStream byteStream=new ByteArrayOutputStream();
DataOutput out=new DataOutputStream(byteStream);
k1.write(out);
ByteArrayInputStream inputBytes=new ByteArrayInputStream(byteStream.toByteArray());
TaggedTextItem k2=new TaggedTextItem();
k2.readFields(new DataInputStream(inputBytes));
assertEquals(k1,k2);
assertEquals("solvent", k1.getKey().toString());
assertEquals(7777, k2.getTag().get());
}
}