Package com.avaje.tests.enhancement

Source Code of com.avaje.tests.enhancement.TestEnhancementEquals

package com.avaje.tests.enhancement;

import org.junit.Assert;
import org.junit.Test;

import com.avaje.ebean.BaseTestCase;
import com.avaje.tests.model.basic.Product;

/**
* Note take care if you run this test in an IDE with a debugger as that can trigger the equals and
* hashCode (and the identity value can get populated un-normally).
*/
public class TestEnhancementEquals extends BaseTestCase {

 
  @Test
  public void testEqualsBasedOnIdValue() {
   
    Product product1 = new Product();
    product1.setId(345);
    product1.setName("blah");

    Product product2 = new Product();
    product2.setId(345);
   
    Assert.assertEquals("equal based on id", product1, product2);
    Assert.assertEquals("hashCode equal based on id", product1.hashCode(), product2.hashCode());

    product2.setName("kumera");
    Assert.assertEquals("still equal based on identity", product1, product2);
    Assert.assertEquals("still hashCode equal based on id", product1.hashCode(), product2.hashCode());
  }
 

  @Test
  public void testWhenEqualsTouchedFirst() {
   
    Product product1 = new Product();
    product1.setName("blah");
    int hashcode1 = product1.hashCode();
   
    // equals has been called so the hashCode and 'identity' has been baked in
    product1.setId(345);
    int hashcode2 = product1.hashCode();

    Assert.assertEquals("hashCode can't change",hashcode1, hashcode2);
   
    Product product2 = new Product();
    product2.setId(345);
   
    Assert.assertFalse("Not equal now", product1.equals(product2));
    Assert.assertTrue("Different hashCode", product1.hashCode() != product2.hashCode());
  }
 
}
TOP

Related Classes of com.avaje.tests.enhancement.TestEnhancementEquals

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.