package net.sourceforge.stripes.util.bean; import org.testng.annotations.Test; import org.testng.Assert; import net.sourceforge.stripes.test.TestBean; import net.sourceforge.stripes.test.TestEnum; import java.util.List; import java.util.ArrayList; import java.util.Collections; /** * Test cases for the BeanComparator class that sorts lists of JavaBeans based on * their properties. * * @author Tim Fennell */ public class BeanComparatorTest { @Test(groups="fast") public void testSimplePropertySort() throws Exception { List<TestBean> beans = new ArrayList<TestBean>(); beans.add(new TestBean()); beans.get(beans.size()-1).setStringProperty("hello"); beans.add(new TestBean()); beans.get(beans.size()-1).setStringProperty("goodbye"); beans.add(new TestBean()); beans.get(beans.size()-1).setStringProperty("whatever"); beans.add(new TestBean()); beans.get(beans.size()-1).setStringProperty("huh?"); beans.add(new TestBean()); beans.get(beans.size()-1).setStringProperty("no way!"); Collections.sort(beans, new BeanComparator("stringProperty")); Assert.assertEquals(beans.get(0).getStringProperty(), "goodbye"); Assert.assertEquals(beans.get(1).getStringProperty(), "hello"); Assert.assertEquals(beans.get(2).getStringProperty(), "huh?"); Assert.assertEquals(beans.get(3).getStringProperty(), "no way!"); Assert.assertEquals(beans.get(4).getStringProperty(), "whatever"); } @Test(groups="fast") public void testSimpleMultiPropertySort() throws Exception { List<TestBean> beans = new ArrayList<TestBean>(); beans.add(new TestBean()); beans.get(beans.size()-1).setLongProperty(2l); beans.get(beans.size()-1).setStringProperty("hello"); beans.add(new TestBean()); beans.get(beans.size()-1).setLongProperty(2l); beans.get(beans.size()-1).setStringProperty("goodbye"); beans.add(new TestBean()); beans.get(beans.size()-1).setLongProperty(1l); beans.get(beans.size()-1).setStringProperty("whatever"); beans.add(new TestBean()); beans.get(beans.size()-1).setLongProperty(1l); beans.get(beans.size()-1).setStringProperty("huh?"); beans.add(new TestBean()); beans.get(beans.size()-1).setLongProperty(3l); beans.get(beans.size()-1).setStringProperty("no way!"); Collections.sort(beans, new BeanComparator("longProperty", "stringProperty")); Assert.assertEquals(beans.get(0).getStringProperty(), "huh?"); Assert.assertEquals(beans.get(1).getStringProperty(), "whatever"); Assert.assertEquals(beans.get(2).getStringProperty(), "goodbye"); Assert.assertEquals(beans.get(3).getStringProperty(), "hello"); Assert.assertEquals(beans.get(4).getStringProperty(), "no way!"); } @Test(groups="fast") public void testNullPropertySort() throws Exception { List<TestBean> beans = new ArrayList<TestBean>(); beans.add(new TestBean()); beans.get(beans.size()-1).setStringProperty("hello"); beans.add(new TestBean()); beans.get(beans.size()-1).setStringProperty(null); beans.add(new TestBean()); beans.get(beans.size()-1).setStringProperty("whatever"); Collections.sort(beans, new BeanComparator("stringProperty")); Assert.assertEquals(beans.get(0).getStringProperty(), "hello"); Assert.assertEquals(beans.get(1).getStringProperty(), "whatever"); Assert.assertEquals(beans.get(2).getStringProperty(), null); } @Test(groups="fast") public void testNullPropertySort2() throws Exception { List<TestBean> beans = new ArrayList<TestBean>(); beans.add(new TestBean()); beans.get(beans.size()-1).setStringProperty(null); beans.add(new TestBean()); beans.get(beans.size()-1).setStringProperty(null); beans.add(new TestBean()); beans.get(beans.size()-1).setStringProperty("whatever"); Collections.sort(beans, new BeanComparator("stringProperty")); Assert.assertEquals(beans.get(0).getStringProperty(), "whatever"); Assert.assertEquals(beans.get(1).getStringProperty(), null); Assert.assertEquals(beans.get(2).getStringProperty(), null); } @Test(groups="fast") public void testNestedPropertySort() throws Exception { List<TestBean> beans = new ArrayList<TestBean>(); beans.add(new TestBean()); beans.get(beans.size()-1).setNestedBean(new TestBean()); beans.get(beans.size()-1).getNestedBean().setEnumProperty(TestEnum.Fourth); beans.add(new TestBean()); beans.get(beans.size()-1).setNestedBean(new TestBean()); beans.get(beans.size()-1).getNestedBean().setEnumProperty(TestEnum.Second); beans.add(new TestBean()); beans.get(beans.size()-1).setNestedBean(new TestBean()); beans.get(beans.size()-1).getNestedBean().setEnumProperty(TestEnum.Ninth); beans.add(new TestBean()); beans.get(beans.size()-1).setNestedBean(new TestBean()); beans.get(beans.size()-1).getNestedBean().setEnumProperty(TestEnum.Eight); beans.add(new TestBean()); beans.get(beans.size()-1).setNestedBean(new TestBean()); beans.get(beans.size()-1).getNestedBean().setEnumProperty(TestEnum.First); Collections.sort(beans, new BeanComparator("nestedBean.enumProperty")); Assert.assertEquals(beans.get(0).getNestedBean().getEnumProperty(), TestEnum.First); Assert.assertEquals(beans.get(1).getNestedBean().getEnumProperty(), TestEnum.Second); Assert.assertEquals(beans.get(2).getNestedBean().getEnumProperty(), TestEnum.Fourth); Assert.assertEquals(beans.get(3).getNestedBean().getEnumProperty(), TestEnum.Eight); Assert.assertEquals(beans.get(4).getNestedBean().getEnumProperty(), TestEnum.Ninth); } }