From 45ce51c3a5db743e9ffaf5e8e4fa0db7ad338b61 Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Fri, 17 Aug 2007 16:03:06 +0000
Subject: [PATCH] enhanced tests for Message

---
 opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageTest.java |   92 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 78 insertions(+), 14 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageTest.java
index b18775b..31ab31c 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageTest.java
@@ -29,17 +29,30 @@
 
 import org.testng.annotations.*;
 import org.opends.server.DirectoryServerTestCase;
+import org.opends.server.TestCaseUtils;
+import static org.testng.Assert.*;
 
 import java.util.Locale;
+import java.util.Properties;
+import java.util.ResourceBundle;
+import java.io.File;
+import java.io.IOException;
+import java.io.FileOutputStream;
 
 /**
  * Message Tester.
  */
 public class MessageTest extends DirectoryServerTestCase {
 
-  //@BeforeClass
-  public void setUp() {
+  /** Locale for accessing a pseudo localized test messages file. */
+  private static final Locale TEST_LOCALE = Locale.CHINA;
 
+  /** Message to appear in pseudo localized test messages file. */
+  private static final String TEST_MSG = "XXX";
+
+  @BeforeClass
+  public void setUp() throws IOException {
+    createDummyLocalizedCoreMessagesFile();
   }
 
   @DataProvider(name = "rawData")
@@ -52,6 +65,9 @@
             {"Hel%nlo", "Hel\nlo", new Object[]{}},
             {"Hel%Dlo", "Hel%Dlo", new Object[]{}},
             {"Hel%Dlo", "Hel%Dlo", new Object[]{ "abc"}},
+
+            // %d and String arg mismatch
+            {"Hel%dlo", "Hel%dlo", new Object[]{ "abc"}},
     };
   }
 
@@ -66,28 +82,57 @@
   @Test(dataProvider = "rawData")
   public void testRaw(String fmt, String result, Object... args) {
     Message message = Message.raw(fmt, args);
-    assert (message.toString().equals(result));
-    assert (message.toString(Locale.CHINESE).equals(result));
+    assertTrue(message.toString().equals(result));
+    assertTrue(message.toString(TEST_LOCALE).equals(result));
   }
 
   @Test(dataProvider = "rawData1")
   public void testRaw1(String fmt, Category c, Severity s,
                        String result, Object... args) {
     Message message = Message.raw(c, s, fmt, args);
-    assert (message.toString().equals(result));
-    assert (message.toString(Locale.CHINESE).equals(result));
+    assertTrue(message.toString().equals(result));
+    assertTrue(message.toString(TEST_LOCALE).equals(result));
   }
 
-  //@Test
-  public void testToString() {
-    //TODO: Test goes here...
-    assert false : "testToString not implemented.";
+  @DataProvider(name = "messages")
+  public Object[][] getMessages() {
+    return new Object[][]
+    {
+      { Message.raw("Hi Ho") },
+      { Message.raw("Hi Ho %n") },
+      { Message.raw("Hi Ho %%") },
+      { Message.raw("Hi Ho %s", new Object[]{null}) },
+      { Message.raw("Hi Ho", "Hum") },
+      { Message.raw("Hi Ho %s", "Hum") },
+      { Message.raw("Hi Ho %d", "Hum") },
+      { Message.raw("Hi Ho %c", "Hum") },
+      { Message.raw("Hi Ho %d", "Hum") },
+      { CoreMessages.ERR_ADD_CANNOT_ADD_ROOT_DSE.get() },
+      { CoreMessages.ERR_ABANDON_OP_NO_SUCH_OPERATION.get(1) },
+      { CoreMessages.ERR_ABANDON_OP_NO_SUCH_OPERATION.get(null) },
+      { CoreMessages.ERR_ADD_CANNOT_ADD_ROOT_DSE.get() }
+    };
   }
 
-  //@Test
-  public void testToString1() {
-    //TODO: Test goes here...
-    assert false : "testToString1 not implemented.";
+  @DataProvider(name = "localizableMessages")
+  public Object[][] getLocalizableMessages() {
+    return new Object[][]
+    {
+      { CoreMessages.ERR_ADD_CANNOT_ADD_ROOT_DSE.get() },
+      { CoreMessages.ERR_ABANDON_OP_NO_SUCH_OPERATION.get(1) },
+      { CoreMessages.ERR_ABANDON_OP_NO_SUCH_OPERATION.get(null) },
+      { CoreMessages.ERR_ADD_CANNOT_ADD_ROOT_DSE.get() }
+    };
+  }
+
+  @Test(dataProvider = "messages")
+  public void testToString(Message msg) {
+    assertNotNull(msg.toString());
+  }
+
+  @Test(dataProvider = "localizableMessages")
+  public void testToString1(Message msg) throws IOException {
+    assertEquals(msg.toString(TEST_LOCALE), TEST_MSG);
   }
 
   @Test(dataProvider = "rawData1")
@@ -104,4 +149,23 @@
     assert(desc2.getSeverity().equals(Severity.INFORMATION));
   }
 
+  private void createDummyLocalizedCoreMessagesFile() throws IOException {
+    Properties corePseudoI18nMsgs = new Properties();
+    ResourceBundle coreDefaultMsgs = ResourceBundle.getBundle("messages/core");
+    for (Object key : coreDefaultMsgs.keySet()) {
+      corePseudoI18nMsgs.put(key, TEST_MSG);
+    }
+    File buildRoot = new File(System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT));
+    File corePseudoI18nMsgsFile = new File(buildRoot,
+            "build" + File.separator + "unit-tests" +
+                    File.separator + "classes" +
+                    File.separator + "messages" +
+                    File.separator + "core_" + TEST_LOCALE.getLanguage() +
+                    ".properties");
+    if (!corePseudoI18nMsgsFile.getParentFile().exists()) {
+      corePseudoI18nMsgsFile.getParentFile().mkdirs();
+    }
+    corePseudoI18nMsgs.store(new FileOutputStream(corePseudoI18nMsgsFile), "");
+  }
+
 }

--
Gitblit v1.10.0