// Modified or written by Object Mentor, Inc. for inclusion with FitNesse. // Copyright (c) 2002 Cunningham & Cunningham, Inc. // Released under the terms of the GNU General Public License version 2 or later. package fit; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; public class FitMatcherTest { private void assertMatch(String expression, Number parameter) throws Exception { FitMatcher matcher = new FitMatcher(expression, parameter); assertTrue(matcher.matches()); } private void assertNoMatch(String expression, Number parameter) throws Exception { FitMatcher matcher = new FitMatcher(expression, parameter); assertFalse(matcher.matches()); } private void assertException(String expression, Object parameter) { FitMatcher matcher = new FitMatcher(expression, parameter); try { matcher.matches(); } catch (Exception e) { } } @Test public void testSimpleMatches() throws Exception { assertMatch("_<3", new Integer(2)); assertNoMatch("_<3", new Integer(3)); assertMatch("_<4", new Integer(3)); assertMatch("_ < 9", new Integer(4)); assertMatch("<3", new Integer(2)); assertMatch(">4", new Integer(5)); assertMatch(">-3", new Integer(-2)); assertMatch("<3.2", new Double(3.1)); assertNoMatch("<3.2", new Double(3.3)); assertMatch("<=3", new Double(3)); assertMatch("<=3", new Double(2)); assertNoMatch("<=3", new Double(4)); assertMatch(">=2", new Double(2)); assertMatch(">=2", new Double(3)); assertNoMatch(">=2", new Double(1)); } @Test public void testExceptions() throws Exception { assertException("X", new Integer(1)); assertException("<32", "xxx"); } @Test public void testMessage() throws Exception { FitMatcher matcher = new FitMatcher("_>25", new Integer(3)); assertEquals("<b>3</b>>25", matcher.message()); matcher = new FitMatcher(" < 32", new Integer(5)); assertEquals("<b>5</b> < 32", matcher.message()); } @Test public void testTrichotomy() throws Exception { assertMatch("5<_<32", new Integer(8)); assertNoMatch("5<_<32", new Integer(5)); assertNoMatch("5<_<32", new Integer(32)); assertMatch("10>_>5", new Integer(6)); assertNoMatch("10>_>5", new Integer(10)); assertNoMatch("10>_>5", new Integer(5)); assertMatch("10>=_>=5", new Integer(10)); assertMatch("10>=_>=5", new Integer(5)); } }