User: vharcq  
  Date: 02/02/22 15:25:15

  Modified:    core/samples/junit/src/xdoclet/test/valueobject
                        ValueObjectTest.java
  Log:
  Handling of Collections changes (add/remove/update) inside a value object
  Test case for that to not going mad a second time ;)
  
  Revision  Changes    Path
  1.2       +80 -3     
xdoclet/core/samples/junit/src/xdoclet/test/valueobject/ValueObjectTest.java
  
  Index: ValueObjectTest.java
  ===================================================================
  RCS file: 
/cvsroot/xdoclet/xdoclet/core/samples/junit/src/xdoclet/test/valueobject/ValueObjectTest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -w -r1.1 -r1.2
  --- ValueObjectTest.java      21 Feb 2002 23:10:04 -0000      1.1
  +++ ValueObjectTest.java      22 Feb 2002 23:25:15 -0000      1.2
  @@ -1,5 +1,5 @@
   /*
  - * $Id: ValueObjectTest.java,v 1.1 2002/02/21 23:10:04 vharcq Exp $
  + * $Id: ValueObjectTest.java,v 1.2 2002/02/22 23:25:15 vharcq Exp $
    */
   package xdoclet.test.valueobject;
   
  @@ -8,6 +8,7 @@
   import junit.framework.TestSuite;
   import junit.textui.TestRunner;
   import test.interfaces.CustomerNormalValue;
  +import test.interfaces.AddressValue;
   
   public class ValueObjectTest extends TestCase
   {
  @@ -40,10 +41,10 @@
       public void testEqualsWithPk() {
           CustomerNormalValue a = new CustomerNormalValue();
           a.setFirstName("Ara");
  -        a.setId("001");
  +        a.setId("007");
           CustomerNormalValue b = new CustomerNormalValue();
           b.setFirstName("Ara");
  -        b.setId("001");
  +        b.setId("007");
           assert("Should be Equals", a.equals(b));
       }
   
  @@ -59,5 +60,81 @@
   //        b.setId("001");
   //        assert("Should be Equals", a.equals(b));
   //    }
  +
  +    /**
  +     * Two VO with same ID ...
  +     */
  +    public void testComposedCollection() {
  +        CustomerNormalValue a = new CustomerNormalValue();
  +        a.setFirstName("Ara");
  +        a.setId("007");
  +        AddressValue a1 = new AddressValue("1","1","1");
  +        AddressValue a2 = new AddressValue("2","2","2");
  +        AddressValue a3 = new AddressValue("3","3","3");
  +        AddressValue a4 = new AddressValue("4","4","4");
  +        a.addShippingAddressValue(a1);
  +        a.addShippingAddressValue(a2);
  +        a.addShippingAddressValue(a3);
  +        // Clean the object
  +        a.cleanShippingAddressValue();
  +
  +        assert("Should be 3 addresses", a.getShippingAddressValues().length == 3);
  +        try{
  +            a.addShippingAddressValue(a3);
  +            assert("Add an existing object must throw exception",false);
  +        }catch (IllegalStateException e){}
  +        a.removeShippingAddressValue(a2);
  +        assert("Should be 2 addresses", a.getShippingAddressValues().length == 2);
  +        try{
  +            a.updateShippingAddressValue(a2);
  +            assert("Update on non existing object must throw exception",false);
  +        }catch (IllegalStateException e){}
  +        try{
  +            a.removeShippingAddressValue(a2);
  +            assert("Remove on non existing object must throw exception",false);
  +        }catch (IllegalStateException e){}
  +        assert("Should be 2 addresses", a.getShippingAddressValues().length == 2);
  +        a.addShippingAddressValue(a4);
  +        assert("Should be 2 addresses", a.getShippingAddressValues().length == 3);
  +        a.updateShippingAddressValue(a3);
  +
  +        // The sniffers
  +
  +        assert("One added" , a.getAddedShippingAddressValues().size() == 1);
  +        assert("One removed" , a.getRemovedShippingAddressValues().size() == 1);
  +        assert("One Updated" , a.getUpdatedShippingAddressValues().size() == 1);
  +
  +        // And now the madness
  +        a.updateShippingAddressValue(a3);
  +        a.updateShippingAddressValue(a3);
  +        a.updateShippingAddressValue(a3);
  +        assert("One Updated" , a.getUpdatedShippingAddressValues().size() == 1);
  +
  +        a.removeShippingAddressValue(a4);
  +        assert("1 - 1 = 0 added" , a.getAddedShippingAddressValues().size() == 0);
  +        assert("Again One removed" , a.getRemovedShippingAddressValues().size() == 
1);
  +
  +        a.addShippingAddressValue(a4);
  +        assert("1 added" , a.getAddedShippingAddressValues().size() == 1);
  +        assert("Again one removed..." , a.getRemovedShippingAddressValues().size() 
== 1);
  +        assert("Always One Updated" , a.getUpdatedShippingAddressValues().size() == 
1);
  +
  +        a.updateShippingAddressValue(a4);
  +        assert("Always and always One Updated" , 
a.getUpdatedShippingAddressValues().size() == 1);
  +
  +        a.removeShippingAddressValue(a4);
  +        assert("...Zero added" , a.getAddedShippingAddressValues().size() == 0);
  +        assert("...One removed" , a.getRemovedShippingAddressValues().size() == 1);
  +        assert("...One Updated" , a.getUpdatedShippingAddressValues().size() == 1);
  +
  +        // The ultimate madness
  +        a.addShippingAddressValue(a2);
  +        assert("...Hehe Zero Added" , a.getAddedShippingAddressValues().size() == 
0);
  +        assert("...Hehe removed gone" , a.getRemovedShippingAddressValues().size() 
== 0);
  +        assert("...Again One Updated" , a.getUpdatedShippingAddressValues().size() 
== 1);
  +        assert("Should be 3 addresses as in the beginning", 
a.getShippingAddressValues().length == 3);
  +
  +    }
  +
   
   }
  
  
  

_______________________________________________
Xdoclet-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel

Reply via email to