// 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 java.lang.reflect.Field; import java.lang.reflect.Method; import junit.framework.TestCase; public class ColumnFixtureTest extends TestCase { private TestFixture fixture; static class TestFixture extends ColumnFixture { public int method() { return 86; } public int field; public String stringField; public String stringMethod() { return null; } } protected void setUp() throws Exception { fixture = new TestFixture(); } public void testBindColumnToMethod() throws Exception { String[] methodSpecifiers = new String[] {"method()", "method?", "method!", "string method()", "string method?", "string method!"}; String[] resultingMethodName = new String[] {"method", "method", "method", "stringMethod", "stringMethod", "stringMethod"}; for (int i = 0; i < methodSpecifiers.length; i++) { Parse table = new Parse("<table><tr><td>" + methodSpecifiers[i] + "</td></tr></table>"); Parse tableHead = table.parts.parts; fixture.bind(tableHead); assertNotNull(methodSpecifiers[i] + " no binding found.", fixture.columnBindings[0]); Method method = fixture.columnBindings[0].adapter.method; assertNotNull(methodSpecifiers[i] + "no method found.", method); assertEquals(resultingMethodName[i], method.getName()); } } public void testBindColumnToField() throws Exception { Parse table = new Parse("<table><tr><td>field</td></tr></table>"); Parse tableHead = table.parts.parts; fixture.bind(tableHead); assertNotNull(fixture.columnBindings[0]); Field field = fixture.columnBindings[0].adapter.field; assertNotNull(field); assertEquals("field", field.getName()); } public void testGracefulColumnNames() throws Exception { Parse table = new Parse("<table><tr><td>string field</td></tr></table>"); Parse tableHead = table.parts.parts; fixture.bind(tableHead); assertNotNull(fixture.columnBindings[0]); Field field = fixture.columnBindings[0].adapter.field; assertNotNull(field); assertEquals("stringField", field.getName()); } public void testBindColumnToFieldSymbol() throws Exception { Fixture.setSymbol("Symbol", "42"); Parse table = new Parse("<table><tr><td>field=</td></tr><tr><td>Symbol</td></tr></table>"); Parse rows = table.parts; fixture.doRows(rows); Binding binding = fixture.columnBindings[0]; assertNotNull(binding); assertEquals(Binding.RecallBinding.class, binding.getClass()); Field field = binding.adapter.field; assertNotNull(field); assertEquals("field", field.getName()); assertEquals(42, fixture.field); } public void testBindColumnToMethodSymbol() throws Exception { Parse table = new Parse("<table><tr><td>=method?</td></tr><tr><td>MethodSymbol</td></tr></table>"); Parse rows = table.parts; fixture.doRows(rows); Binding binding = fixture.columnBindings[0]; assertNotNull(binding); assertEquals(Binding.SaveBinding.class, binding.getClass()); Method method = binding.adapter.method; assertEquals("method", method.getName()); assertEquals("86", Fixture.getSymbol("MethodSymbol")); } }