/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.bytecode.enhancement.association;
import java.util.List;
import org.hibernate.test.bytecode.enhancement.AbstractEnhancerTestTask;
import org.junit.Assert;
/**
* @author Luis Barreiro
*/
public class OneToManyBidirectionalAssociationTestTask extends AbstractEnhancerTestTask {
public Class<?>[] getAnnotatedClasses() {
return new Class<?>[] {Customer.class, CustomerInventory.class, Group.class, User.class};
}
public void prepare() {
}
public void execute() {
Customer customer = new Customer();
Assert.assertTrue( customer.getInventories().isEmpty() );
CustomerInventory customerInventory = new CustomerInventory();
customerInventory.setCustomer( customer );
Assert.assertTrue( customer.getInventories().size() == 1 );
Assert.assertTrue( customer.getInventories().contains( customerInventory ) );
Customer anotherCustomer = new Customer();
Assert.assertTrue( anotherCustomer.getInventories().isEmpty() );
customerInventory.setCustomer( anotherCustomer );
Assert.assertTrue( customer.getInventories().isEmpty() );
Assert.assertTrue( anotherCustomer.getInventories().size() == 1 );
Assert.assertTrue( anotherCustomer.getInventories().get( 0 ) == customerInventory );
customer.getInventories().add( customerInventory );
Assert.assertTrue( customerInventory.getCustomer() == customer );
Assert.assertTrue( anotherCustomer.getInventories().isEmpty() );
Assert.assertTrue( customer.getInventories().size() == 1 );
customer.addInventory( new CustomerInventory() );
Assert.assertTrue( customer.getInventories().size() == 2 );
// Test remove
List<CustomerInventory> inventories = customer.getInventories();
inventories.remove( customerInventory );
customer.setInventories( inventories );
// This happens (and is expected) because there was no snapshot taken before remove
Assert.assertNotNull( customerInventory.getCustomer() );
}
protected void cleanup() {
}
}