Revision: 6671 Author: rj...@google.com Date: Wed Nov 4 13:42:26 2009 Log: Mock TypeOracle allows XMLElementTest to be restored. Also replace DummyMortalLogger with MortalLogger.NULL
reviewed by jgw http://code.google.com/p/google-web-toolkit/source/detail?r=6671 Deleted: /trunk/user/test/com/google/gwt/uibinder/rebind/DummyMortalLogger.java Modified: /trunk/user/src/com/google/gwt/uibinder/parsers/DockLayoutPanelParser.java /trunk/user/src/com/google/gwt/uibinder/rebind/MortalLogger.java /trunk/user/test/com/google/gwt/uibinder/parsers/IntAttributeParserTest.java /trunk/user/test/com/google/gwt/uibinder/rebind/XMLElementTest.java /trunk/user/test/com/google/gwt/uibinder/rebind/model/OwnerClassTest.java /trunk/user/test/com/google/gwt/uibinder/rebind/model/OwnerFieldClassTest.java /trunk/user/test/com/google/gwt/uibinder/rebind/model/OwnerFieldTest.java ======================================= --- /trunk/user/test/com/google/gwt/uibinder/rebind/DummyMortalLogger.java Wed Nov 4 11:14:50 2009 +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.google.gwt.uibinder.rebind; - -import com.google.gwt.core.ext.TreeLogger; - -/** - * A MortalLogger using a dummy logger. - */ -public class DummyMortalLogger extends MortalLogger { - public DummyMortalLogger() { - super(TreeLogger.NULL); - } -} ======================================= --- /trunk/user/src/com/google/gwt/uibinder/parsers/DockLayoutPanelParser.java Wed Nov 4 11:14:50 2009 +++ /trunk/user/src/com/google/gwt/uibinder/parsers/DockLayoutPanelParser.java Wed Nov 4 13:42:26 2009 @@ -66,8 +66,10 @@ // Make sure the element is one of the fixed set of valid directions. if (!isValidChildElement(elem, child)) { writer.die( - "In %s, child must be one of {north, south, east, west, center}", - elem); + "In %1$s, child must be one of " + + "<%2$s:north>, <%2$s:south>, <%2$s:east>, <%2$s:west> or <%2$s:center>, " + + "but found %3$s", + elem, elem.getPrefix(), child); } // Consume the single widget element. @@ -99,14 +101,10 @@ private boolean isValidChildElement(XMLElement parent, XMLElement child) { String childNsUri = child.getNamespaceUri(); - String parentNsUri = parent.getNamespaceUri(); - if (childNsUri == null && parentNsUri != null) { + if (childNsUri == null) { return false; } - if (childNsUri != null && parentNsUri == null) { - return false; - } - if (!childNsUri.equals(parentNsUri)) { + if (!childNsUri.equals(parent.getNamespaceUri())) { return false; } if (!DOCK_NAMES.containsKey(child.getLocalName())) { ======================================= --- /trunk/user/src/com/google/gwt/uibinder/rebind/MortalLogger.java Wed Oct 28 09:10:53 2009 +++ /trunk/user/src/com/google/gwt/uibinder/rebind/MortalLogger.java Wed Nov 4 13:42:26 2009 @@ -24,6 +24,11 @@ * Treelogger. */ public class MortalLogger { + /** + * A valid logger that ignores all messages, handy for testing. + */ + public static final MortalLogger NULL = new MortalLogger(TreeLogger.NULL); + private final TreeLogger logger; public MortalLogger(TreeLogger logger) { ======================================= --- /trunk/user/test/com/google/gwt/uibinder/parsers/IntAttributeParserTest.java Tue Nov 3 12:16:32 2009 +++ /trunk/user/test/com/google/gwt/uibinder/parsers/IntAttributeParserTest.java Wed Nov 4 13:42:26 2009 @@ -16,7 +16,7 @@ package com.google.gwt.uibinder.parsers; import com.google.gwt.core.ext.UnableToCompleteException; -import com.google.gwt.uibinder.rebind.DummyMortalLogger; +import com.google.gwt.uibinder.rebind.MortalLogger; import junit.framework.TestCase; @@ -25,23 +25,21 @@ */ public class IntAttributeParserTest extends TestCase { private IntAttributeParser parser; - private DummyMortalLogger logger; @Override public void setUp() throws Exception { super.setUp(); parser = new IntAttributeParser(); - logger = new DummyMortalLogger(); } public void testGood() throws UnableToCompleteException { - assertEquals("1234", parser.parse("1234", logger)); - assertEquals("-4321", parser.parse("-4321", logger)); + assertEquals("1234", parser.parse("1234", MortalLogger.NULL)); + assertEquals("-4321", parser.parse("-4321", MortalLogger.NULL)); } public void testBad() { try { - parser.parse("fnord", logger); + parser.parse("fnord", MortalLogger.NULL); fail("Expected UnableToCompleteException"); } catch (UnableToCompleteException e) { /* pass */ @@ -49,6 +47,7 @@ } public void testFieldRef() throws UnableToCompleteException { - assertEquals("foo.bar().baz()", parser.parse("{foo.bar.baz}", logger)); + assertEquals("foo.bar().baz()", parser.parse("{foo.bar.baz}", + MortalLogger.NULL)); } } ======================================= --- /trunk/user/test/com/google/gwt/uibinder/rebind/XMLElementTest.java Wed Nov 4 11:14:50 2009 +++ /trunk/user/test/com/google/gwt/uibinder/rebind/XMLElementTest.java Wed Nov 4 13:42:26 2009 @@ -15,7 +15,12 @@ */ package com.google.gwt.uibinder.rebind; +import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; +import com.google.gwt.core.ext.typeinfo.TypeOracle; +import com.google.gwt.dev.javac.CompilationState; +import com.google.gwt.dev.javac.impl.JavaResourceBase; +import com.google.gwt.dev.javac.impl.MockResourceOracle; import com.google.gwt.uibinder.parsers.NullInterpreter; import junit.framework.TestCase; @@ -40,17 +45,43 @@ private Element item; private XMLElement elm; private XMLElementProvider elemProvider; - - public void testConsumeRawAttribute() { - assertEquals("attr1Value", elm.consumeRawAttribute("attr1")); - assertEquals("", elm.consumeRawAttribute("attr1")); + + TypeOracle oracle; + + @Override + public void setUp() throws Exception { + super.setUp(); + init("<doc><elm attr1=\"attr1Value\" attr2=\"attr2Value\"/></doc>"); + + MockResourceOracle resourceOracle = new MockResourceOracle( + JavaResourceBase.getStandardResources()); + + CompilationState state = new CompilationState(TreeLogger.NULL, + resourceOracle); + oracle = state.getTypeOracle(); } - public void testConsumeRawAttributeWithDefault() { - assertEquals("attr1Value", elm.consumeRawAttribute("attr1", "default")); - assertEquals("default", elm.consumeRawAttribute("attr1", "default")); - assertEquals("otherDefault", elm.consumeRawAttribute("unsetthing", - "otherDefault")); + public void testConsumeBoolean() throws ParserConfigurationException, + SAXException, IOException, UnableToCompleteException { + init("<doc><elm yes='true' no='false' " + + "fnord='fnord' ref='{foo.bar.baz}'/></doc>"); + + assertEquals("", elm.consumeBooleanAttribute("foo")); + + assertEquals("true", elm.consumeBooleanAttribute("yes")); + assertEquals("", elm.consumeBooleanAttribute("yes")); + + assertEquals("false", elm.consumeBooleanAttribute("no")); + assertEquals("", elm.consumeBooleanAttribute("no")); + + assertEquals("foo.bar().baz()", elm.consumeBooleanAttribute("ref")); + + try { + elm.consumeBooleanAttribute("fnord"); + fail("Should throw UnableToCompleteException on misparse"); + } catch (UnableToCompleteException c) { + /* pass */ + } } public void testConsumeBooleanConstant() throws ParserConfigurationException, @@ -81,47 +112,23 @@ } } - // TODO(rjrjr) To turn these back on need to learn how to mock out TypeOracle -// public void testConsumeBoolean() throws ParserConfigurationException, -// SAXException, IOException, UnableToCompleteException { -// init("<doc><elm yes='true' no='false' " -// + "fnord='fnord' ref='{foo.bar.baz}'/></doc>"); -// -// assertEquals("", elm.consumeBooleanAttribute("foo")); -// -// assertEquals("true", elm.consumeBooleanAttribute("yes")); -// assertEquals("", elm.consumeBooleanAttribute("yes")); -// -// assertEquals("false", elm.consumeBooleanAttribute("no")); -// assertEquals("", elm.consumeBooleanAttribute("no")); -// -// assertEquals("foo.bar().baz()", elm.consumeBooleanAttribute("ref")); -// -// try { -// elm.consumeBooleanAttribute("fnord"); -// fail("Should throw UnableToCompleteException on misparse"); -// } catch (UnableToCompleteException c) { -// /* pass */ -// } -// } -// -// public void testConsumeDouble() throws UnableToCompleteException, -// ParserConfigurationException, SAXException, IOException { -// init("<doc><elm minus='-123.45' plus='123.45' minus-one='-1' " -// + "plus-one='1' fnord='fnord' ref='{foo.bar.baz}'/></doc>"); -// assertEquals("1", elm.consumeDoubleAttribute("plus-one")); -// assertEquals("-1", elm.consumeDoubleAttribute("minus-one")); -// assertEquals("123.45", elm.consumeDoubleAttribute("plus")); -// assertEquals("-123.45", elm.consumeDoubleAttribute("minus")); -// assertEquals("foo.bar().baz()", elm.consumeBooleanAttribute("ref")); -// -// try { -// elm.consumeBooleanAttribute("fnord"); -// fail("Should throw UnableToCompleteException on misparse"); -// } catch (UnableToCompleteException c) { -// /* pass */ -// } -// } + public void testConsumeDouble() throws UnableToCompleteException, + ParserConfigurationException, SAXException, IOException { + init("<doc><elm minus='-123.45' plus='123.45' minus-one='-1' " + + "plus-one='1' fnord='fnord' ref='{foo.bar.baz}'/></doc>"); + assertEquals("1", elm.consumeDoubleAttribute("plus-one")); + assertEquals("-1", elm.consumeDoubleAttribute("minus-one")); + assertEquals("123.45", elm.consumeDoubleAttribute("plus")); + assertEquals("-123.45", elm.consumeDoubleAttribute("minus")); + assertEquals("foo.bar().baz()", elm.consumeBooleanAttribute("ref")); + + try { + elm.consumeBooleanAttribute("fnord"); + fail("Should throw UnableToCompleteException on misparse"); + } catch (UnableToCompleteException c) { + /* pass */ + } + } public void testConsumeInnerTextEscapedAsHtmlStringLiteral() throws UnableToCompleteException { @@ -137,6 +144,18 @@ "", elm.consumeInnerTextEscapedAsHtmlStringLiteral(new NullInterpreter<String>())); } + + public void testConsumeRawAttribute() { + assertEquals("attr1Value", elm.consumeRawAttribute("attr1")); + assertEquals("", elm.consumeRawAttribute("attr1")); + } + + public void testConsumeRawAttributeWithDefault() { + assertEquals("attr1Value", elm.consumeRawAttribute("attr1", "default")); + assertEquals("default", elm.consumeRawAttribute("attr1", "default")); + assertEquals("otherDefault", elm.consumeRawAttribute("unsetthing", + "otherDefault")); + } public void testConsumeRequired() throws UnableToCompleteException { assertEquals("attr1Value", elm.consumeRequiredRawAttribute("attr1")); @@ -209,12 +228,6 @@ assertEquals("br", item.getTagName()); assertEquals("", elm.getClosingTag()); } - - @Override - protected void setUp() throws Exception { - super.setUp(); - init("<doc><elm attr1=\"attr1Value\" attr2=\"attr2Value\"/></doc>"); - } private void appendText(final String text) { Text t = doc.createTextNode(text); @@ -228,7 +241,7 @@ 0); elemProvider = new XMLElementProviderImpl(new AttributeParsers(), null, - null, new DummyMortalLogger()); + oracle, MortalLogger.NULL); elm = elemProvider.get(item); } } ======================================= --- /trunk/user/test/com/google/gwt/uibinder/rebind/model/OwnerClassTest.java Mon Nov 2 12:47:15 2009 +++ /trunk/user/test/com/google/gwt/uibinder/rebind/model/OwnerClassTest.java Wed Nov 4 13:42:26 2009 @@ -24,7 +24,6 @@ import com.google.gwt.uibinder.client.UiFactory; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; -import com.google.gwt.uibinder.rebind.DummyMortalLogger; import com.google.gwt.uibinder.rebind.JClassTypeAdapter; import com.google.gwt.uibinder.rebind.MortalLogger; import com.google.gwt.user.client.ui.Button; @@ -43,13 +42,11 @@ public class OwnerClassTest extends TestCase { private JClassTypeAdapter gwtTypeAdapter; - private MortalLogger logger; @Override protected void setUp() throws Exception { super.setUp(); - logger = new DummyMortalLogger(); gwtTypeAdapter = new JClassTypeAdapter(); } @@ -62,7 +59,7 @@ public void testOwnerClass_empty() throws Exception { JClassType ownerType = gwtTypeAdapter.adaptJavaClass(EmptyOwnerClass.class); JClassType labelType = gwtTypeAdapter.adaptJavaClass(Label.class); - OwnerClass ownerClass = new OwnerClass(ownerType, logger); + OwnerClass ownerClass = new OwnerClass(ownerType, MortalLogger.NULL); assertNull(ownerClass.getUiFactoryMethod(labelType)); assertNull(ownerClass.getUiField("fieldName")); @@ -87,7 +84,7 @@ public void testOwnerClass_uiFactory() throws Exception { JClassType ownerType = gwtTypeAdapter.adaptJavaClass(UiFactoryClass.class); JClassType labelType = gwtTypeAdapter.adaptJavaClass(Label.class); - OwnerClass ownerClass = new OwnerClass(ownerType, logger); + OwnerClass ownerClass = new OwnerClass(ownerType, MortalLogger.NULL); JMethod uiFactoryMethod = ownerClass.getUiFactoryMethod(labelType); assertNotNull(uiFactoryMethod); @@ -114,7 +111,7 @@ public void testOwnerClass_uiFactoryBadType() { JClassType ownerType = gwtTypeAdapter.adaptJavaClass(BadUiFactoryClass.class); try { - new OwnerClass(ownerType, logger); + new OwnerClass(ownerType, MortalLogger.NULL); fail("Expected exception not thrown."); } catch (UnableToCompleteException utce) { // Expected @@ -142,7 +139,7 @@ public void testOwnerClass_uiFactoryDuplicateType() { JClassType ownerType = gwtTypeAdapter.adaptJavaClass(DuplicateUiFactoryClass.class); try { - new OwnerClass(ownerType, logger); + new OwnerClass(ownerType, MortalLogger.NULL); fail("Expected exception not thrown."); } catch (UnableToCompleteException utce) { // Expected @@ -168,7 +165,7 @@ JClassType ownerType = gwtTypeAdapter.adaptJavaClass(UiFieldsClass.class); JClassType labelType = gwtTypeAdapter.adaptJavaClass(Label.class); JClassType buttonType = gwtTypeAdapter.adaptJavaClass(Button.class); - OwnerClass ownerClass = new OwnerClass(ownerType, logger); + OwnerClass ownerClass = new OwnerClass(ownerType, MortalLogger.NULL); OwnerField labelField = ownerClass.getUiField("label1"); OwnerField labelField2 = ownerClass.getUiFieldForType(labelType); @@ -210,7 +207,7 @@ public void testOwnerClass_uiFieldsBadType() { JClassType ownerType = gwtTypeAdapter.adaptJavaClass(BadUiFieldsClass.class); try { - new OwnerClass(ownerType, logger); + new OwnerClass(ownerType, MortalLogger.NULL); fail("Expected exception not thrown."); } catch (UnableToCompleteException utce) { // Expected @@ -237,7 +234,7 @@ public void testOwnerClass_uiHandlers() throws Exception { JClassType ownerType = gwtTypeAdapter.adaptJavaClass(UiHandlersClass.class); - OwnerClass ownerClass = new OwnerClass(ownerType, logger); + OwnerClass ownerClass = new OwnerClass(ownerType, MortalLogger.NULL); // Assert the two expected handlers are there List<JMethod> uiHandlers = ownerClass.getUiHandlers(); @@ -327,7 +324,7 @@ gwtTypeAdapter.adaptJavaClass(ChildUiBinderClass.class); JClassType labelType = gwtTypeAdapter.adaptJavaClass(Label.class); JClassType buttonType = gwtTypeAdapter.adaptJavaClass(Button.class); - OwnerClass ownerClass = new OwnerClass(ownerType, logger); + OwnerClass ownerClass = new OwnerClass(ownerType, MortalLogger.NULL); // Test fields OwnerField labelField = ownerClass.getUiField("label1"); ======================================= --- /trunk/user/test/com/google/gwt/uibinder/rebind/model/OwnerFieldClassTest.java Mon Nov 2 12:47:15 2009 +++ /trunk/user/test/com/google/gwt/uibinder/rebind/model/OwnerFieldClassTest.java Wed Nov 4 13:42:26 2009 @@ -23,7 +23,6 @@ import com.google.gwt.core.ext.typeinfo.JPrimitiveType; import com.google.gwt.core.ext.typeinfo.JType; import com.google.gwt.uibinder.client.UiConstructor; -import com.google.gwt.uibinder.rebind.DummyMortalLogger; import com.google.gwt.uibinder.rebind.JClassTypeAdapter; import com.google.gwt.uibinder.rebind.MortalLogger; import com.google.gwt.user.client.ui.Label; @@ -36,7 +35,6 @@ public class OwnerFieldClassTest extends TestCase { private JClassTypeAdapter gwtTypeAdapter; - private MortalLogger logger = new DummyMortalLogger(); @Override protected void setUp() throws Exception { @@ -50,7 +48,8 @@ JClassType labelType = gwtTypeAdapter.adaptJavaClass(Label.class); // Now get its field class model - OwnerFieldClass fieldClass = OwnerFieldClass.getFieldClass(labelType, logger); + OwnerFieldClass fieldClass = OwnerFieldClass.getFieldClass(labelType, + MortalLogger.NULL); // Check the class model properties assertEquals(labelType, fieldClass.getRawType()); @@ -60,7 +59,8 @@ assertMethod(setter, "setVisible", JPrimitiveType.BOOLEAN); // Check that the same instance of the model is returned if asked again - assertSame(fieldClass, OwnerFieldClass.getFieldClass(labelType, logger)); + assertSame(fieldClass, OwnerFieldClass.getFieldClass(labelType, + MortalLogger.NULL)); gwtTypeAdapter.verifyAll(); } @@ -136,7 +136,8 @@ JClassType settersType = gwtTypeAdapter.adaptJavaClass(SettersTestClass.class); JClassType stringType = gwtTypeAdapter.adaptJavaClass(String.class); - OwnerFieldClass settersClass = OwnerFieldClass.getFieldClass(settersType, logger); + OwnerFieldClass settersClass = OwnerFieldClass.getFieldClass(settersType, + MortalLogger.NULL); assertEquals(settersType, settersClass.getRawType()); assertNull(settersClass.getUiConstructor()); @@ -158,7 +159,8 @@ JClassType settersType = gwtTypeAdapter.adaptJavaClass(SettersTestClass.class); JClassType stringType = gwtTypeAdapter.adaptJavaClass(String.class); - OwnerFieldClass settersClass = OwnerFieldClass.getFieldClass(settersType, logger); + OwnerFieldClass settersClass = OwnerFieldClass.getFieldClass(settersType, + MortalLogger.NULL); assertEquals(settersType, settersClass.getRawType()); JMethod bleSetter = settersClass.getSetter("ble"); @@ -223,7 +225,8 @@ JClassType settersType = gwtTypeAdapter.adaptJavaClass(OverriddenSettersTestClass.class); JClassType stringType = gwtTypeAdapter.adaptJavaClass(String.class); - OwnerFieldClass settersClass = OwnerFieldClass.getFieldClass(settersType, logger); + OwnerFieldClass settersClass = OwnerFieldClass.getFieldClass(settersType, + MortalLogger.NULL); assertEquals(settersType, settersClass.getRawType()); // setBlaBla is not ambiguous, though overridden @@ -291,7 +294,7 @@ JClassType constructorsType = gwtTypeAdapter.adaptJavaClass(UiConstructorClass.class); OwnerFieldClass constructorsClass = - OwnerFieldClass.getFieldClass(constructorsType, logger); + OwnerFieldClass.getFieldClass(constructorsType, MortalLogger.NULL); assertEquals(constructorsType, constructorsClass.getRawType()); JConstructor constructor = constructorsClass.getUiConstructor(); @@ -328,7 +331,7 @@ gwtTypeAdapter.adaptJavaClass(MultiUiConstructorsClass.class); try { - OwnerFieldClass.getFieldClass(constructorsType, logger); + OwnerFieldClass.getFieldClass(constructorsType, MortalLogger.NULL); fail("Expected exception not thrown"); } catch (UnableToCompleteException utce) { // Expected ======================================= --- /trunk/user/test/com/google/gwt/uibinder/rebind/model/OwnerFieldTest.java Mon Nov 2 12:47:15 2009 +++ /trunk/user/test/com/google/gwt/uibinder/rebind/model/OwnerFieldTest.java Wed Nov 4 13:42:26 2009 @@ -19,7 +19,6 @@ import com.google.gwt.core.ext.typeinfo.JClassType; import com.google.gwt.core.ext.typeinfo.JField; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.uibinder.rebind.DummyMortalLogger; import com.google.gwt.uibinder.rebind.JClassTypeAdapter; import com.google.gwt.uibinder.rebind.MortalLogger; import com.google.gwt.user.client.ui.Button; @@ -34,13 +33,11 @@ private JClassTypeAdapter gwtTypeAdapter; private JClassType ownerType; - private MortalLogger logger; @Override protected void setUp() throws Exception { super.setUp(); - logger = new DummyMortalLogger(); gwtTypeAdapter = new JClassTypeAdapter(); ownerType = gwtTypeAdapter.adaptJavaClass(this.getClass()); } @@ -64,14 +61,15 @@ JField someGwtField = gwtTypeAdapter.adaptField( this.getClass().getDeclaredField("someField"), ownerType); - OwnerField someOwnerField = new OwnerField(someGwtField, logger); + OwnerField someOwnerField = new OwnerField(someGwtField, MortalLogger.NULL); assertEquals("someField", someOwnerField.getName()); assertEquals(labelType, someOwnerField.getType().getRawType()); assertFalse(someOwnerField.isProvided()); JField providedGwtField = gwtTypeAdapter.adaptField( this.getClass().getDeclaredField("providedField"), ownerType); - OwnerField providedOwnerField = new OwnerField(providedGwtField, logger); + OwnerField providedOwnerField = new OwnerField(providedGwtField, + MortalLogger.NULL); assertEquals("providedField", providedOwnerField.getName()); assertEquals(buttonType, providedOwnerField.getType().getRawType()); assertTrue(providedOwnerField.isProvided()); @@ -83,7 +81,7 @@ JField someGwtField = gwtTypeAdapter.adaptField( this.getClass().getDeclaredField("badTypeField"), ownerType); try { - new OwnerField(someGwtField, logger); + new OwnerField(someGwtField, MortalLogger.NULL); fail("Expected exception not thrown."); } catch (UnableToCompleteException utce) { // Expected @@ -96,7 +94,7 @@ JField someGwtField = gwtTypeAdapter.adaptField( this.getClass().getDeclaredField("nonAnnotatedField"), ownerType); try { - new OwnerField(someGwtField, logger); + new OwnerField(someGwtField, MortalLogger.NULL); fail("Expected exception not thrown."); } catch (UnableToCompleteException utce) { // Expected --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---