package org.codehaus.mojo.scmchangelog.scm.hg.command.list; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.regex.Pattern; import junit.framework.TestCase; import org.apache.maven.plugin.logging.SystemStreamLog; import org.codehaus.mojo.scmchangelog.scm.util.MavenScmLogger; import org.codehaus.mojo.scmchangelog.tags.Tag; /** * Unit tests for HgTagsConsumer. * * @author Tomas Pollak */ public class HgTagsConsumerTest extends TestCase { private HgTagsConsumer consumer; public HgTagsConsumerTest(String testName) { super(testName); } protected void setUp() throws Exception { super.setUp(); consumer = new HgTagsConsumer( new MavenScmLogger(new SystemStreamLog()), Pattern .compile(".*")); } protected void tearDown() throws Exception { super.tearDown(); } public void testConsumeOneLine() { consumer.doConsume(null, "tag1 1:12345678"); List status = consumer.getStatus(); // Assert the expected results List expected = Collections.singletonList(createTag("tag1", "0", "1")); assertEqualTags(expected, status); } public void testConsumeTwoLines() { consumer.doConsume(null, "tag2 2:00000002"); consumer.doConsume(null, "tag1 1:00000001"); List status = consumer.getStatus(); // Assert the expected results List expected = Arrays.asList(new Object[] { createTag("tag2", "1", "2"), createTag("tag1", "0", "1") }); assertEqualTags(expected, status); } private Tag createTag(String title, String startRevision, String endRevision) { Tag tag = new Tag(title); tag.setStartRevision(startRevision); tag.setEndRevision(endRevision); return tag; } private void assertEqualTags(Tag expected, Tag actual) { assertEquals(expected.getTitle(), actual.getTitle()); assertEquals(expected.getStartRevision(), actual.getStartRevision()); assertEquals(expected.getEndRevision(), actual.getEndRevision()); } private void assertEqualTags(List expected, List actual) { assertEquals(expected.size(), actual.size()); for (int i = 0; i < actual.size(); i++) { assertEqualTags((Tag) expected.get(i), (Tag) actual.get(i)); } } }