SequentialAccessSparseVector.equals does not agree with
AbstractVector.equivalent
---------------------------------------------------------------------------------
Key: MAHOUT-379
URL: https://issues.apache.org/jira/browse/MAHOUT-379
Project: Mahout
Issue Type: Bug
Components: Math
Affects Versions: 0.4
Reporter: Danny Leshem
Priority: Minor
Fix For: 0.3
When a SequentialAccessSparseVector is serialized and deserialized using
VectorWritable, the result vector and the original vector are equivalent, yet
equals returns false.
The following unit-test reproduces the problem:
{code}
@Test
public void testSequentialAccessSparseVectorEquals() throws Exception {
final Vector v = new SequentialAccessSparseVector(1);
final VectorWritable vectorWritable = new VectorWritable(v);
final VectorWritable vectorWritable2 = new VectorWritable();
writeAndRead(vectorWritable, vectorWritable2);
final Vector v2 = vectorWritable2.get();
assertTrue(AbstractVector.equivalent(v, v2));
assertEquals(v, v2); // This line fails!
}
private void writeAndRead(Writable toWrite, Writable toRead) throws IOException
{
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final DataOutputStream dos = new DataOutputStream(baos);
toWrite.write(dos);
final ByteArrayInputStream bais = new
ByteArrayInputStream(baos.toByteArray());
final DataInputStream dis = new DataInputStream(bais);
toRead.readFields(dis);
}
{code}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira