package com.opensymphony.module.sitemesh.html; import junit.framework.TestCase; public class StateTest extends TestCase { class DummyRule extends BasicRule { public DummyRule(String acceptableTagName) { super(acceptableTagName); } public void process(Tag tag) { throw new UnsupportedOperationException(); } } public void testMapsTagNameToRule() { TagRule mouseRule = new DummyRule("mouse"); TagRule donkeyRule = new DummyRule("donkey"); TagRule lemonRule = new DummyRule("lemon"); State state = new State(); state.addRule(mouseRule); state.addRule(donkeyRule); state.addRule(lemonRule); assertSame(donkeyRule, state.getRule("donkey")); assertSame(lemonRule, state.getRule("lemon")); assertSame(mouseRule, state.getRule("mouse")); } public void testExposesWhetherItShouldProcessATagBasedOnAvailableRules() { TagRule mouseRule = new DummyRule("mouse"); TagRule donkeyRule = new DummyRule("donkey"); TagRule lemonRule = new DummyRule("lemon"); State state = new State(); state.addRule(mouseRule); state.addRule(donkeyRule); state.addRule(lemonRule); assertTrue(state.shouldProcessTag("donkey")); assertTrue(state.shouldProcessTag("lemon")); assertFalse(state.shouldProcessTag("yeeeehaa")); } public void testReturnsMostRecentlyAddedRuleIfMultipleMatchesFound() { TagRule oldRule = new DummyRule("something"); TagRule newRule = new DummyRule("something"); State state = new State(); state.addRule(oldRule); state.addRule(newRule); assertSame(newRule, state.getRule("something")); } }