/*
* CampaignHistoryTokenTest.java
* Copyright 2013 (C) James Dempsey <jdempsey@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Created on 04/11/2013
*
* $Id$
*/
package plugin.exporttokens;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import org.junit.Before;
import org.junit.Test;
import pcgen.AbstractCharacterTestCase;
import pcgen.core.ChronicleEntry;
import pcgen.core.PlayerCharacter;
import pcgen.io.ExportHandler;
import pcgen.io.FileAccess;
import pcgen.util.TestHelper;
/**
* CampaignHistoryTokenTest validates the functions of the
* CampaignHistoryToken class.
*
*
* @author James Dempsey <jdempsey@users.sourceforge.net>
*/
public class CampaignHistoryTokenTest extends AbstractCharacterTestCase
{
private ChronicleEntry visibleEntry;
private ChronicleEntry hiddenEntry;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception
{
super.setUp();
PlayerCharacter character = getCharacter();
visibleEntry = TestHelper.buildChronicleEntry(true, "Kingmaker", "17Dec2012", "Vic",
"Ruling council", "Finns folly", 150,
"A ruin is conquered in the forest and a new town is founded.");
hiddenEntry = TestHelper.buildChronicleEntry(false, "Campaign", "Date", "GM", "Party",
"Adventure", 1390, "Chronicle");
character.addChronicleEntry(visibleEntry);
character.addChronicleEntry(hiddenEntry);
}
@Test
public void testFieldChoice() throws IOException
{
FileAccess.setCurrentOutputFilter("xml");
PlayerCharacter character = getCharacter();
assertEquals("Field Campaign", visibleEntry.getCampaign(),
evaluateToken("CAMPAIGNHISTORY.0.CAMPAIGN", character));
assertEquals("Field ADVENTURE", visibleEntry.getAdventure(),
evaluateToken("CAMPAIGNHISTORY.0.ADVENture", character));
assertEquals("Field PARTY", visibleEntry.getParty(),
evaluateToken("CAMPAIGNHISTORY.0.PARTY", character));
assertEquals("Field DATE", visibleEntry.getDate(),
evaluateToken("CAMPAIGNHISTORY.0.DATE", character));
assertEquals("Field XP", visibleEntry.getXpField(),
Integer.parseInt(evaluateToken("CAMPAIGNHISTORY.0.XP", character)));
assertEquals("Field GM", visibleEntry.getGmField(),
evaluateToken("CAMPAIGNHISTORY.0.GM", character));
assertEquals("Field Text", visibleEntry.getChronicle(),
evaluateToken("CAMPAIGNHISTORY.0.TEXT", character));
assertEquals("Default field", visibleEntry.getChronicle(),
evaluateToken("CAMPAIGNHISTORY.0", character));
assertEquals("Invalid field", "",
evaluateToken("CAMPAIGNHISTORY.0.LALALA", character));
}
@Test
public void testVisibility() throws IOException
{
FileAccess.setCurrentOutputFilter("xml");
PlayerCharacter character = getCharacter();
assertEquals("Default visibility", visibleEntry.getAdventure(),
evaluateToken("CAMPAIGNHISTORY.0.ADVENTURE", character));
assertEquals("Default visibility", "",
evaluateToken("CAMPAIGNHISTORY.1.ADVENTURE", character));
assertEquals("Hidden visibility", hiddenEntry.getAdventure(),
evaluateToken("CAMPAIGNHISTORY.HIDDEN.0.ADVENTURE", character));
assertEquals("Hidden visibility", "",
evaluateToken("CAMPAIGNHISTORY.HIDDEN.1.ADVENTURE", character));
assertEquals("All visibility", visibleEntry.getAdventure(),
evaluateToken("CAMPAIGNHISTORY.ALL.0.ADVENTURE", character));
assertEquals("All visibility", hiddenEntry.getAdventure(),
evaluateToken("CAMPAIGNHISTORY.ALL.1.ADVENTURE", character));
assertEquals("Visible visibility", visibleEntry.getAdventure(),
evaluateToken("CAMPAIGNHISTORY.VISIBLE.0.ADVENTURE", character));
assertEquals("Visible visibility", "",
evaluateToken("CAMPAIGNHISTORY.VISIBLE.1.ADVENTURE", character));
assertEquals("Invalid visibility", "",
evaluateToken("CAMPAIGNHISTORY.LALALA.0.ADVENTURE", character));
}
private String evaluateToken(String token, PlayerCharacter pc)
throws IOException
{
StringWriter retWriter = new StringWriter();
BufferedWriter bufWriter = new BufferedWriter(retWriter);
ExportHandler export = new ExportHandler(new File(""));
export.replaceTokenSkipMath(pc, token, bufWriter);
retWriter.flush();
bufWriter.flush();
return retWriter.toString();
}
}