Internal contribution that extends FakeMessagesMaker to work with Constants as well.

review by: rjrjr


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6063 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/junit/FakeMessagesMaker.java b/user/src/com/google/gwt/junit/FakeMessagesMaker.java
index dc37afc..1f94ab7 100644
--- a/user/src/com/google/gwt/junit/FakeMessagesMaker.java
+++ b/user/src/com/google/gwt/junit/FakeMessagesMaker.java
@@ -1,12 +1,12 @@
 /*
  * 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
@@ -15,6 +15,7 @@
  */
 package com.google.gwt.junit;
 
+import com.google.gwt.i18n.client.Constants;
 import com.google.gwt.i18n.client.Messages;
 
 import java.lang.reflect.InvocationHandler;
@@ -23,10 +24,10 @@
 import java.util.Arrays;
 
 /**
- * Helper to make a fake implementation of any {@link Messages} interface via
- * reflection, for use in JUnit tests. (This will not work in GWTTestCase.) All
- * calls to the returned object return the method name followed by the passed
- * parameters as a list surrounded by [].
+ * Helper to make a fake implementation of any {@link Messages} or
+ * {@link Constants} interface via reflection, for use in JUnit tests. (This
+ * will not work in GWTTestCase.) All calls to the returned object return the
+ * method name followed by the passed parameters as a list surrounded by [].
  * <p>
  * Note that the default message text is very consciously not made available
  * through the fake, to help tests ensure that specific translations of
@@ -53,6 +54,12 @@
         new FakeMessagesMaker()));
   }
 
+  public static <T extends Constants> T create(Class<T> constantsClass) {
+    return constantsClass.cast(Proxy.newProxyInstance(
+        FakeMessagesMaker.class.getClassLoader(), new Class[] {constantsClass},
+        new FakeMessagesMaker()));
+  }
+
   public Object invoke(Object proxy, Method method, Object[] args)
       throws Throwable {
     String name = method.getName();
diff --git a/user/test/com/google/gwt/junit/FakeMessagesMakerTest.java b/user/test/com/google/gwt/junit/FakeMessagesMakerTest.java
index ddf541e..72c1524 100644
--- a/user/test/com/google/gwt/junit/FakeMessagesMakerTest.java
+++ b/user/test/com/google/gwt/junit/FakeMessagesMakerTest.java
@@ -1,12 +1,12 @@
 /*
  * 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
@@ -15,6 +15,7 @@
  */
 package com.google.gwt.junit;
 
+import com.google.gwt.i18n.client.Constants;
 import com.google.gwt.i18n.client.Messages;
 
 import junit.framework.TestCase;
@@ -27,21 +28,41 @@
     @DefaultMessage("Isn''t this the fakiest?")
     @Description("A sample message to be tested.")
     String myMessage();
-    
+
     @DefaultMessage("Isn''t this the fakiest? Pick one: {1} or {2}?")
     @Description("A sample message with parameters.")
-    String myArgumentedMessage(@Example("yes") String yes, 
+    String myArgumentedMessage(@Example("yes") String yes,
         @Example("no") String no);
   }
-  
-  public void testSimple() {
+
+  interface MyConstants extends Constants {
+    @DefaultStringValue("This is a very simple message")
+    String myFixedMessage();
+
+    @DefaultStringValue("This message is so complicated, it requires a description")
+    @Description("42")
+    String messageWithDescription();
+  }
+
+  public void testSimpleWithMessages() {
     MyMessages messages = FakeMessagesMaker.create(MyMessages.class);
     assertEquals("myMessage", messages.myMessage());
   }
-  
-  public void testArgs() {
+
+  public void testArgsWithMessages() {
     MyMessages messages = FakeMessagesMaker.create(MyMessages.class);
-    assertEquals("myArgumentedMessage[oui, non]", 
+    assertEquals("myArgumentedMessage[oui, non]",
         messages.myArgumentedMessage("oui", "non"));
   }
+
+  public void testSimpleWithConstants() {
+    MyConstants constants = FakeMessagesMaker.create(MyConstants.class);
+    assertEquals("myFixedMessage", constants.myFixedMessage());
+  }
+
+  public void testConstantWithDescription() {
+    MyConstants constants = FakeMessagesMaker.create(MyConstants.class);
+    assertEquals("messageWithDescription", constants.messageWithDescription());
+  }
+
 }