package de.axone.data;
import static org.testng.Assert.*;
import org.testng.annotations.Test;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@Test( groups="tools.hashkey" )
public class HashKeyTest {
@SuppressFBWarnings( value="ES_COMPARING_STRINGS_WITH_EQ",
justification="We exactly want to test if this is another object" )
public void testHashKey(){
// First test normal java functions just to be sure.
String a="A";
String b="B";
String a1 = a+a;
String a2 = a+a;
String a3 = a+a+a;
String b1 = b+b;
String b2 = b+b;
String b3 = b+b+b;
assertFalse( a1==a2 );
assertFalse( a1==a3 );
assertFalse( b1==b2 );
assertFalse( b1==b3 );
assertEquals( a1, a2 );
assertEquals( b1, b2 );
assertFalse( a1.equals( a3 ) );
assertFalse( b1.equals( b3 ) );
// Now for the real thing
HashKey K1 = new HashKey( a1, b1 );
HashKey K2 = new HashKey( a2, b2 );
HashKey K3 = new HashKey( a3, b3 );
HashKey K4 = new HashKey( a1, b1, b3 );
// This is reduces in the inner set to AA,BB:
HashKey K5 = new HashKey( a1, b1, b2 );
assertTrue( K1.hashCode() == K2.hashCode() );
assertTrue( K1.hashCode() == K5.hashCode() );
assertFalse( K1.hashCode() == K3.hashCode() );
assertFalse( K1.hashCode() == K4.hashCode() );
assertTrue( K1.equals( K2 ) );
assertTrue( K1.equals( K5 ) );
assertFalse( K1.equals( K3 ) );
assertFalse( K1.equals( K4 ) );
}
}