/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestParticleModel.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.gui.model;
import com.uwyn.rife.gui.model.exceptions.GuiModelException;
import java.util.Iterator;
import junit.framework.TestCase;
public class TestParticleModel extends ParticleModel
{
public static class Test extends TestCase implements ParticleModelListener
{
private boolean mParentChanged = false;
private Object mChildAdded = null;
private Object mChildRemoved = null;
private Object mPropertyAdded = null;
private Object mPropertyRemoved = null;
private Object mPropertyRenamed = null;
public Test(String name)
{
super(name);
}
public void testInstantiation()
{
ParticleModel particlemodel_instance = new TestParticleModel();
assertTrue(particlemodel_instance != null);
assertTrue(particlemodel_instance instanceof ParticleModel);
}
public void testAddParticleListener()
{
ParticleModel particlemodel_instance = new TestParticleModel();
assertTrue(particlemodel_instance.addParticleListener(this));
}
public void testRemoveParticleListener()
{
ParticleModel particlemodel_instance = new TestParticleModel();
assertTrue(particlemodel_instance.addParticleListener(this));
assertTrue(particlemodel_instance.removeParticleListener(this));
}
public void testNoInitialDescription()
{
ParticleModel particlemodel_instance = new TestParticleModel();
assertNull(particlemodel_instance.getDescription());
}
public void testSetDescription()
{
TestParticleModel particlemodel_instance = new TestParticleModel();
particlemodel_instance.setDescription("the description");
assertEquals(particlemodel_instance.getDescription(), "the description");
}
public void testGetEmptyInitialParent()
{
ParticleModel particlemodel_instance = new TestParticleModel();
assertNull(particlemodel_instance.getParent());
}
public void testSetParent()
{
TestParticleModel particlemodel_instance = new TestParticleModel();
ParticleModel particlemodel_instance2 = new TestParticleModel();
assertEquals(mParentChanged, false);
assertTrue(particlemodel_instance.addParticleListener(this));
assertTrue(particlemodel_instance.setParent(particlemodel_instance2));
assertEquals(mParentChanged, true);
assertSame(particlemodel_instance.getParent(), particlemodel_instance2);
}
public void testSetSameParentTwice()
{
TestParticleModel particlemodel_instance = new TestParticleModel();
ParticleModel particlemodel_instance2 = new TestParticleModel();
assertEquals(mParentChanged, false);
assertTrue(particlemodel_instance.addParticleListener(this));
assertTrue(particlemodel_instance.setParent(particlemodel_instance2));
assertEquals(mParentChanged, true);
mParentChanged = false;
assertEquals(particlemodel_instance.setParent(particlemodel_instance2), false);
assertEquals(mParentChanged, false);
assertSame(particlemodel_instance.getParent(), particlemodel_instance2);
}
public void testNoInitialChildren()
{
ParticleModel particlemodel_instance = new TestParticleModel();
assertEquals(particlemodel_instance.getChildren().size(), 0);
}
public void testInitialChildCountIsZero()
{
ParticleModel particlemodel_instance = new TestParticleModel();
assertEquals(particlemodel_instance.countChildren(), 0);
}
public void testAddOneChild()
{
TestParticleModel particlemodel_instance = new TestParticleModel();
ParticleModel particlemodel_instance2 = new TestParticleModel();
assertNull(mChildAdded);
assertTrue(particlemodel_instance.addParticleListener(this));
try
{
particlemodel_instance.addChild(particlemodel_instance2);
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertSame(mChildAdded, particlemodel_instance2);
assertSame(particlemodel_instance2.getParent(), particlemodel_instance);
Iterator<ParticleModel> child_it = particlemodel_instance.getChildren().iterator();
Object child = null;
assertTrue(child_it.hasNext());
child = child_it.next();
assertEquals(child_it.hasNext(), false);
assertSame(child, particlemodel_instance2);
assertTrue(particlemodel_instance.containsChild(particlemodel_instance2));
}
public void testAddTheSameChildTwice()
{
TestParticleModel particlemodel_instance = new TestParticleModel();
ParticleModel particlemodel_instance2 = new TestParticleModel();
assertNull(mChildAdded);
assertTrue(particlemodel_instance.addParticleListener(this));
try
{
particlemodel_instance.addChild(particlemodel_instance2);
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertSame(mChildAdded, particlemodel_instance2);
mChildAdded = null;
try
{
particlemodel_instance.addChild(particlemodel_instance2);
fail();
}
catch (GuiModelException e)
{
assertTrue(true);
}
assertNull(mChildAdded);
Iterator<ParticleModel> child_it = particlemodel_instance.getChildren().iterator();
Object child = null;
assertTrue(child_it.hasNext());
child = child_it.next();
assertEquals(child_it.hasNext(), false);
assertSame(child, particlemodel_instance2);
}
public void testAddTwoChildren()
{
TestParticleModel particlemodel_instance = new TestParticleModel();
ParticleModel particlemodel_instance2 = new TestParticleModel();
ParticleModel particlemodel_instance3 = new TestParticleModel();
assertNull(mChildAdded);
assertTrue(particlemodel_instance.addParticleListener(this));
try
{
particlemodel_instance.addChild(particlemodel_instance2);
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertSame(mChildAdded, particlemodel_instance2);
mChildAdded = null;
try
{
particlemodel_instance.addChild(particlemodel_instance3);
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertSame(mChildAdded, particlemodel_instance3);
mChildAdded = null;
assertSame(particlemodel_instance2.getParent(), particlemodel_instance);
assertSame(particlemodel_instance3.getParent(), particlemodel_instance);
Iterator<ParticleModel> child_it = particlemodel_instance.getChildren().iterator();
Object child1 = null;
Object child2 = null;
assertTrue(child_it.hasNext());
child1 = child_it.next();
assertTrue(child_it.hasNext());
child2 = child_it.next();
assertEquals(child_it.hasNext(), false);
assertTrue((child1 == particlemodel_instance2 && child2 == particlemodel_instance3) ||
(child1 == particlemodel_instance3 && child2 == particlemodel_instance2));
assertTrue(particlemodel_instance.containsChild(particlemodel_instance2));
assertTrue(particlemodel_instance.containsChild(particlemodel_instance3));
}
public void testCountChildren()
{
TestParticleModel particlemodel_instance = new TestParticleModel();
ParticleModel particlemodel_instance2 = new TestParticleModel();
ParticleModel particlemodel_instance3 = new TestParticleModel();
try
{
particlemodel_instance.addChild(particlemodel_instance2);
particlemodel_instance.addChild(particlemodel_instance3);
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertEquals(particlemodel_instance.countChildren(), 2);
}
public void testCountTypedChildren()
{
TestParticleModel particlemodel_instance = new TestParticleModel();
ParticleModel particlemodel2_instance1 = new TestParticleModel2();
ParticleModel particlemodel2_instance2 = new TestParticleModel2();
ParticleModel particlemodel3_instance = new TestParticleModel3();
try
{
particlemodel_instance.addChild(particlemodel2_instance1);
particlemodel_instance.addChild(particlemodel2_instance2);
particlemodel_instance.addChild(particlemodel3_instance);
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertEquals(particlemodel_instance.countChildren(TestParticleModel2.class), 2);
assertEquals(particlemodel_instance.countChildren(TestParticleModel3.class), 1);
}
public void testGetTypedChildren()
{
TestParticleModel particlemodel_instance = new TestParticleModel();
ParticleModel particlemodel2_instance = new TestParticleModel2();
ParticleModel particlemodel3_instance = new TestParticleModel3();
try
{
particlemodel_instance.addChild(particlemodel2_instance);
particlemodel_instance.addChild(particlemodel3_instance);
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
Iterator<TestParticleModel2> child_it = particlemodel_instance.getChildren(TestParticleModel2.class).iterator();
assertTrue(child_it.hasNext());
TestParticleModel2 child = child_it.next();
assertEquals(child_it.hasNext(), false);
assertSame(child, particlemodel2_instance);
}
public void testRemoveInexistantChild()
{
ParticleModel particlemodel_instance = new TestParticleModel();
ParticleModel particlemodel_instance2 = new TestParticleModel();
assertNull(mChildRemoved);
assertTrue(particlemodel_instance.addParticleListener(this));
assertEquals(particlemodel_instance.removeChild(particlemodel_instance2), false);
assertNull(mChildRemoved);
}
public void testRemoveOneChild()
{
TestParticleModel particlemodel_instance = new TestParticleModel();
ParticleModel particlemodel_instance2 = new TestParticleModel();
assertNull(mChildRemoved);
assertTrue(particlemodel_instance.addParticleListener(this));
try
{
particlemodel_instance.addChild(particlemodel_instance2);
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertTrue(particlemodel_instance.removeChild(particlemodel_instance2));
assertSame(mChildRemoved, particlemodel_instance2);
assertEquals(particlemodel_instance.getChildren().size(), 0);
}
public void testNoInitialProperties()
{
ParticleModel particlemodel_instance = new TestParticleModel();
assertEquals(particlemodel_instance.getProperties().size(), 0);
}
public void testInitialPropertyCountIsZero()
{
ParticleModel particlemodel_instance = new TestParticleModel();
assertEquals(particlemodel_instance.countProperties(), 0);
}
public void testAddOneProperty()
{
TestParticleModel particlemodel_instance = null;
ParticlePropertyModel propertymodel_instance = null;
particlemodel_instance = new TestParticleModel();
assertTrue(particlemodel_instance.addParticleListener(this));
assertNull(mPropertyAdded);
try
{
propertymodel_instance = new TestParticlePropertyModel1(particlemodel_instance, "particleproperty1");
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertSame(mPropertyAdded, propertymodel_instance);
assertSame(propertymodel_instance.getParticle(), particlemodel_instance);
Iterator<TestParticlePropertyModel1> property_it = particlemodel_instance.getProperties(TestParticlePropertyModel1.class).iterator();
assertTrue(property_it.hasNext());
Object property = property_it.next();
assertEquals(property_it.hasNext(), false);
assertSame(property, propertymodel_instance);
}
public void testAddTheSamePropertyTwice()
{
TestParticleModel particlemodel_instance = null;
ParticlePropertyModel propertymodel_instance = null;
particlemodel_instance = new TestParticleModel();
assertTrue(particlemodel_instance.addParticleListener(this));
assertNull(mPropertyAdded);
try
{
propertymodel_instance = new TestParticlePropertyModel1(particlemodel_instance, "particleproperty1");
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertSame(mPropertyAdded, propertymodel_instance);
mPropertyAdded = null;
try
{
particlemodel_instance.addProperty(propertymodel_instance);
fail();
}
catch (GuiModelException e)
{
assertTrue(true);
}
assertNull(mPropertyAdded);
Iterator<TestParticlePropertyModel1> property_it = particlemodel_instance.getProperties(TestParticlePropertyModel1.class).iterator();
assertTrue(property_it.hasNext());
TestParticlePropertyModel1 property = property_it.next();
assertEquals(property_it.hasNext(), false);
assertSame(property, propertymodel_instance);
}
public void testAddTwoProperties()
{
TestParticleModel particlemodel_instance = null;
ParticlePropertyModel propertymodel_instance1 = null;
ParticlePropertyModel propertymodel_instance2 = null;
particlemodel_instance = new TestParticleModel();
assertTrue(particlemodel_instance.addParticleListener(this));
assertNull(mPropertyAdded);
try
{
propertymodel_instance1 = new TestParticlePropertyModel1(particlemodel_instance, "particleproperty1");
assertSame(mPropertyAdded, propertymodel_instance1);
mPropertyAdded = null;
propertymodel_instance2 = new TestParticlePropertyModel1(particlemodel_instance, "particleproperty2");
assertSame(mPropertyAdded, propertymodel_instance2);
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertSame(propertymodel_instance1.getParticle(), particlemodel_instance);
assertSame(propertymodel_instance2.getParticle(), particlemodel_instance);
Iterator<TestParticlePropertyModel1> property_it = particlemodel_instance.getProperties(TestParticlePropertyModel1.class).iterator();
assertTrue(property_it.hasNext());
TestParticlePropertyModel1 property1 = property_it.next();
assertTrue(property_it.hasNext());
TestParticlePropertyModel1 property2 = property_it.next();
assertEquals(property_it.hasNext(), false);
assertTrue((property1 == propertymodel_instance1 && property2 == propertymodel_instance2) ||
(property2 == propertymodel_instance1 && property1 == propertymodel_instance2));
}
public void testCountProperties()
{
TestParticleModel particlemodel_instance = null;
particlemodel_instance = new TestParticleModel();
try
{
new TestParticlePropertyModel1(particlemodel_instance, "particleproperty1");
new TestParticlePropertyModel1(particlemodel_instance, "particleproperty2");
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
try
{
new TestParticlePropertyModel1(particlemodel_instance, "particleproperty3");
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertEquals(particlemodel_instance.countProperties(), 3);
}
public void testCountTypedProperties()
{
TestParticleModel particlemodel_instance = null;
particlemodel_instance = new TestParticleModel();
try
{
new TestParticlePropertyModel1(particlemodel_instance, "particleproperty1");
new TestParticlePropertyModel2(particlemodel_instance, "particleproperty1");
new TestParticlePropertyModel3(particlemodel_instance, "particleproperty1");
new TestParticlePropertyModel3(particlemodel_instance, "particleproperty2");
new TestParticlePropertyModel4(particlemodel_instance, "particleproperty1");
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertEquals(particlemodel_instance.countProperties(TestParticlePropertyModel1.class), 5);
assertEquals(particlemodel_instance.countProperties(TestParticlePropertyModel2.class), 4);
assertEquals(particlemodel_instance.countProperties(TestParticlePropertyModel3.class), 2);
assertEquals(particlemodel_instance.countProperties(TestParticlePropertyModel4.class), 1);
}
public void testContainsProperty()
{
TestParticleModel particlemodel_instance1 = null;
TestParticleModel particlemodel_instance2 = null;
ParticlePropertyModel propertymodel_instance1 = null;
ParticlePropertyModel propertymodel_instance2 = null;
particlemodel_instance1 = new TestParticleModel();
particlemodel_instance2 = new TestParticleModel();
try
{
propertymodel_instance1 = new TestParticlePropertyModel(particlemodel_instance1, "particleproperty");
propertymodel_instance2 = new TestParticlePropertyModel(particlemodel_instance2, "particleproperty");
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertTrue(particlemodel_instance1.containsProperty(propertymodel_instance1));
assertEquals(particlemodel_instance1.containsProperty(propertymodel_instance2), false);
}
public void testGetProperty()
{
TestParticleModel particlemodel_instance = null;
ParticlePropertyModel propertymodel_instance1 = null;
ParticlePropertyModel propertymodel_instance2 = null;
particlemodel_instance = new TestParticleModel();
try
{
propertymodel_instance1 = new TestParticlePropertyModel(particlemodel_instance, "particleproperty1");
propertymodel_instance2 = new TestParticlePropertyModel(particlemodel_instance, "particleproperty2");
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertSame(particlemodel_instance.getProperty(ParticlePropertyModel.class, "particleproperty1"), propertymodel_instance1);
assertSame(particlemodel_instance.getProperty(TestParticlePropertyModel.class, "particleproperty1"), propertymodel_instance1);
assertSame(particlemodel_instance.getProperty(TestParticlePropertyModel.class, "particleproperty2"), propertymodel_instance2);
assertNull(particlemodel_instance.getProperty(TestParticlePropertyModel2.class, "particleproperty1"));
assertNull(particlemodel_instance.getProperty(TestParticlePropertyModel.class, "particleproperty3"));
}
public void testRenameProperty()
{
TestParticleModel particlemodel_instance = null;
ParticlePropertyModel propertymodel_instance1 = null;
particlemodel_instance = new TestParticleModel();
assertTrue(particlemodel_instance.addParticleListener(this));
try
{
propertymodel_instance1 = new TestParticlePropertyModel(particlemodel_instance, "particleproperty1");
new TestParticlePropertyModel(particlemodel_instance, "particleproperty2");
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
try
{
assertEquals(particlemodel_instance.renameProperty(propertymodel_instance1, "particleproperty1"), false);
assertNull(mPropertyRenamed);
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
try
{
assertTrue(particlemodel_instance.renameProperty(propertymodel_instance1, "particleproperty3"));
assertSame(mPropertyRenamed, propertymodel_instance1);
mPropertyRenamed = null;
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
try
{
particlemodel_instance.renameProperty(propertymodel_instance1, "particleproperty2");
fail();
}
catch (GuiModelException e)
{
assertTrue(true);
}
}
public void testRemoveInexistantProperty()
{
TestParticleModel particlemodel_instance1 = null;
TestParticleModel particlemodel_instance2 = null;
ParticlePropertyModel propertymodel_instance = null;
particlemodel_instance1 = new TestParticleModel();
particlemodel_instance2 = new TestParticleModel();
assertTrue(particlemodel_instance1.addParticleListener(this));
assertTrue(particlemodel_instance2.addParticleListener(this));
assertNull(mPropertyRemoved);
try
{
propertymodel_instance = new TestParticlePropertyModel1(particlemodel_instance1, "particleproperty1");
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
try
{
assertEquals(particlemodel_instance2.removeProperty(propertymodel_instance), false);
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertNull(mPropertyRemoved);
}
public void testRemoveOneProperty()
{
TestParticleModel particlemodel_instance = null;
ParticlePropertyModel propertymodel_instance = null;
particlemodel_instance = new TestParticleModel();
assertTrue(particlemodel_instance.addParticleListener(this));
assertNull(mPropertyRemoved);
try
{
propertymodel_instance = new TestParticlePropertyModel1(particlemodel_instance, "particleproperty1");
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
try
{
assertTrue(particlemodel_instance.removeProperty(propertymodel_instance));
}
catch (GuiModelException e)
{
assertTrue(e.getMessage(), false);
}
assertSame(mPropertyRemoved, propertymodel_instance);
assertNull(propertymodel_instance.getParticle());
assertEquals(particlemodel_instance.getProperties(TestParticlePropertyModel1.class).size(), 0);
}
public void parentChanged()
{
mParentChanged = true;
}
public void childAdded(ParticleModel child)
{
mChildAdded = child;
}
public void childRemoved(ParticleModel child)
{
mChildRemoved = child;
}
public void propertyAdded(ParticlePropertyModel property)
{
mPropertyAdded = property;
}
public void propertyRemoved(ParticlePropertyModel property)
{
mPropertyRemoved = property;
}
public void propertyRenamed(ParticlePropertyModel property)
{
mPropertyRenamed = property;
}
}
private static class TestParticleModel2 extends ParticleModel
{
}
private static class TestParticleModel3 extends ParticleModel
{
}
private static class TestParticlePropertyModel1 extends ParticlePropertyModel
{
public TestParticlePropertyModel1(ParticleModel particleModel, String name)
throws GuiModelException
{
super(particleModel, name);
}
}
private static class TestParticlePropertyModel2 extends TestParticlePropertyModel1
{
public TestParticlePropertyModel2(ParticleModel particleModel, String name)
throws GuiModelException
{
super(particleModel, name);
}
}
private static class TestParticlePropertyModel3 extends TestParticlePropertyModel2
{
public TestParticlePropertyModel3(ParticleModel particleModel, String name)
throws GuiModelException
{
super(particleModel, name);
}
}
private static class TestParticlePropertyModel4 extends TestParticlePropertyModel2
{
public TestParticlePropertyModel4(ParticleModel particleModel, String name)
throws GuiModelException
{
super(particleModel, name);
}
}
}