/* * Created on 29/04/2006 10:48:18 */ package net.jforum.entities; import java.util.ArrayList; import java.util.Collections; import java.util.GregorianCalendar; import java.util.List; import junit.framework.Assert; import junit.framework.TestCase; /** * @author Rafael Steil * @version $Id: TopicTypeComparatorTest.java,v 1.2 2006/06/10 22:52:28 rafaelsteil Exp $ */ public class TopicTypeComparatorTest extends TestCase { public void testPassRandomOrderExpectResultInCorrectOrder() { List l = new ArrayList(); l.add(this.createTopic(Topic.TYPE_NORMAL, 1, "Regular day 1")); l.add(this.createTopic(Topic.TYPE_STICKY, 1, "Sticky day 1")); l.add(this.createTopic(Topic.TYPE_STICKY, 2, "Sticky day 2")); l.add(this.createTopic(Topic.TYPE_NORMAL, 3, "Regular day 3")); l.add(this.createTopic(Topic.TYPE_ANNOUNCE, 5, "Announce day 5")); l.add(this.createTopic(Topic.TYPE_ANNOUNCE, 4, "Announce day 4")); l.add(this.createTopic(Topic.TYPE_NORMAL, 6, "Regular day 6")); l.add(this.createTopic(Topic.TYPE_STICKY, 7, "Sticky day 7")); Collections.sort(l, new TopicTypeComparator()); Assert.assertEquals("Announce day 5", this.extractTitle(l, 0)); Assert.assertEquals("Announce day 4", this.extractTitle(l, 1)); Assert.assertEquals("Sticky day 7", this.extractTitle(l, 2)); Assert.assertEquals("Sticky day 2", this.extractTitle(l, 3)); Assert.assertEquals("Sticky day 1", this.extractTitle(l, 4)); Assert.assertEquals("Regular day 6", this.extractTitle(l, 5)); Assert.assertEquals("Regular day 3", this.extractTitle(l, 6)); Assert.assertEquals("Regular day 1", this.extractTitle(l, 7)); } public void testCreateTwoTopicsThenAddAReply() { List l = new ArrayList(); l.add(this.createTopic(Topic.TYPE_NORMAL, 1, "Topic 1")); l.add(this.createTopic(Topic.TYPE_NORMAL, 2, "Topic 2")); Collections.sort(l, new TopicTypeComparator()); Assert.assertEquals("Topic 2", this.extractTitle(l, 0)); Assert.assertEquals("Topic 1", this.extractTitle(l, 1)); // Simulate a reply ((Topic)l.get(1)).setLastPostDate(new GregorianCalendar(2006, 4, 3).getTime()); Collections.sort(l, new TopicTypeComparator()); Assert.assertEquals("Topic 1", this.extractTitle(l, 0)); Assert.assertEquals("Topic 2", this.extractTitle(l, 1)); } private String extractTitle(List l, int index) { return ((Topic)l.get(index)).getTitle(); } private Topic createTopic(int type, int day, String title) { Topic t = new Topic(); t.setTitle(title); t.setType(type); t.setTime(new GregorianCalendar(2006, 4, day).getTime()); t.setLastPostDate(t.getTime()); return t; } }