From d36ba104a7dee0fbd4e92c6db633bc494eb7c122 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Fri, 22 Sep 2006 08:30:39 +0000
Subject: [PATCH] Some more data for the schema tests

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java |  120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 113 insertions(+), 7 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java
index 3a4cd36..b9eccce 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java
@@ -26,11 +26,13 @@
  */
 package org.opends.server.schema;
 
-import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.*;
 
 import org.opends.server.api.OrderingMatchingRule;
 import org.opends.server.core.DirectoryException;
+import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
+import org.opends.server.types.AcceptRejectWarn;
 import org.opends.server.types.ByteString;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -44,12 +46,21 @@
   public Object[][] createOrderingMatchingRuleTest()
   {
     return new Object[][] {
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+0101",
+          "20060906135030+2359", 1},
         {"GeneralizedTimeOrderingMatchingRule", "20060912180130Z",
           "20060912180130Z", 0},
         {"GeneralizedTimeOrderingMatchingRule", "20060912180130Z",
           "20060912180129Z", 1},
         {"GeneralizedTimeOrderingMatchingRule", "20060912180129Z",
           "20060912180130Z", -1},
+        {"GeneralizedTimeOrderingMatchingRule", "20060912180129.000Z",
+            "20060912180130.001Z", -1},
+        {"GeneralizedTimeOrderingMatchingRule", "20060912180129.1Z",
+            "20060912180130.2Z", -1},
+        {"GeneralizedTimeOrderingMatchingRule", "20060912180129.11Z",
+              "20060912180130.12Z", -1},
+
          
         // following test is currently disabled because it does not work  
         // {"NumericStringOrderingMatchingRule", "1", "09", -1},
@@ -69,6 +80,30 @@
         {"IntegerOrderingMatchingRule", "0", "-63", 1},
         {"IntegerOrderingMatchingRule", "987654321987654321987654321",
                                         "987654321987654321987654322", -1},
+                                        
+         {"UUIDOrderingMatchingRule",
+             "12345678-9ABC-DEF0-1234-1234567890ab",
+             "12345678-9abc-def0-1234-1234567890ab", 0},
+         {"UUIDOrderingMatchingRule",
+             "12345678-9abc-def0-1234-1234567890ab",
+             "12345678-9abc-def0-1234-1234567890ab", 0},
+         {"UUIDOrderingMatchingRule",
+               "02345678-9abc-def0-1234-1234567890ab",
+               "12345678-9abc-def0-1234-1234567890ab", -1},
+         {"UUIDOrderingMatchingRule",
+               "12345678-9abc-def0-1234-1234567890ab",
+               "02345678-9abc-def0-1234-1234567890ab", 1},
+               
+         {"CaseExactOrderingMatchingRule", "12345678", "02345678", 1},
+         {"CaseExactOrderingMatchingRule","abcdef", "bcdefa", -1},
+         {"CaseExactOrderingMatchingRule","abcdef", "abcdef", 0},
+         
+         {"CaseIgnoreOrderingMatchingRule", "12345678", "02345678", 1},
+         {"CaseIgnoreOrderingMatchingRule","abcdef", "bcdefa", -1},
+         {"CaseIgnoreOrderingMatchingRule","abcdef", "abcdef", 0},
+         {"CaseIgnoreOrderingMatchingRule","abcdef", "ABCDEF", 0},
+         {"CaseIgnoreOrderingMatchingRule","abcdef", "aCcdef", -1},
+         {"CaseIgnoreOrderingMatchingRule","aCcdef", "abcdef", 1},
     };
   }
 
@@ -96,11 +131,29 @@
       ruleInstance.normalizeValue(new ASN1OctetString(value2));
     int res = ruleInstance.compareValues(normalizedValue1, normalizedValue2);
     if (result == 0)
-      assertTrue(res == 0);
+    {
+      if (res != 0)
+      {
+        fail(ruleClassName + ".compareValues should return 0 for values " +
+            value1 + " and " + value2);
+      }
+    }
     else if (result > 0)
-      assertTrue(res > 0);
+    {
+      if (res <= 0)
+      {
+        fail(ruleClassName + ".compareValues should return a positive integer "
+            + "for values : " + value1 + " and " + value2);
+      }
+    }
     else
-      assertTrue(res < 0);
+    {
+      if (res >= 0)
+      {
+        fail(ruleClassName + ".compareValues should return a negative integer "
+            + "for values : " + value1 + " and " + value2);
+      }
+    }
   }
 
   @DataProvider(name="OrderingMatchingRuleInvalidValues")
@@ -112,7 +165,21 @@
         {"GeneralizedTimeOrderingMatchingRule","200a1231235959Z"},
         {"GeneralizedTimeOrderingMatchingRule","2006j231235959Z"},
         {"GeneralizedTimeOrderingMatchingRule","20061231#35959Z"},
+        {"GeneralizedTimeOrderingMatchingRule","20060912180a30Z"},
+        {"GeneralizedTimeOrderingMatchingRule","20060912180030Z.01"},
+        {"GeneralizedTimeOrderingMatchingRule","200609121800"},
+        {"GeneralizedTimeOrderingMatchingRule","20060912180129.hhZ"},
+        {"GeneralizedTimeOrderingMatchingRule","20060912180129.1hZ"},
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+aa01"},
         {"GeneralizedTimeOrderingMatchingRule","2006"},
+        /* disabled because these tests are failing
+         * see issue 675
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+3359"},
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+2389"},
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+2361"},*/
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+"},
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+0"},
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+010"},
         
         {"NumericStringOrderingMatchingRule", "jfhslur"},
         {"NumericStringOrderingMatchingRule", "123AB"},
@@ -122,6 +189,11 @@
         {"IntegerOrderingMatchingRule", "+63"},
         {"IntegerOrderingMatchingRule", "AB"},
         {"IntegerOrderingMatchingRule", "0xAB"},
+        
+        {"UUIDOrderingMatchingRule", "G2345678-9abc-def0-1234-1234567890ab"},
+        {"UUIDOrderingMatchingRule", "g2345678-9abc-def0-1234-1234567890ab"},
+        {"UUIDOrderingMatchingRule", "12345678/9abc/def0/1234/1234567890ab"},
+        {"UUIDOrderingMatchingRule", "12345678-9abc-def0-1234-1234567890a"},
     };
   }
 
@@ -145,16 +217,50 @@
     // ruleInstance.initializeMatchingRule(configEntry);
 
     // normalize the 2 provided values
-    boolean success = false;
     try
     {
       ruleInstance.normalizeValue(new ASN1OctetString(value));
     } catch (DirectoryException e) {
-      success = true;
+      // that's the expected path : the matching rule has detected that 
+      // the value is incorrect.
+      return;
     }
     // if we get there with false value for  success then the tested
     // matching rule did not raised the Exception.
 
-    assertTrue(success);
+    fail(ruleClassName + " did not catch that value " + value + " is invalid.");
+  }
+  
+  /**
+   * Test that invalid values are rejected.
+   */
+  @Test(dataProvider= "OrderingMatchingRuleInvalidValues")
+  public void OrderingMatchingRulesInvalidValuesWarn(String ruleClassName,
+      String value) throws Exception
+  {
+    
+    
+    // load the matching rule code
+    Class rule = Class.forName("org.opends.server.schema."+ruleClassName);
+
+    // Make sure that the specified class can be instantiated as a task.
+    OrderingMatchingRule ruleInstance =
+      (OrderingMatchingRule) rule.newInstance();
+
+    AcceptRejectWarn accept = DirectoryServer.getSyntaxEnforcementPolicy();
+    DirectoryServer.setSyntaxEnforcementPolicy(AcceptRejectWarn.WARN);
+    // normalize the 2 provided values
+    try
+    {
+      ruleInstance.normalizeValue(new ASN1OctetString(value));
+    } catch (Exception e)
+    {
+      fail(ruleClassName + " in warn mode should not reject value " + value + e);
+      return;
+    }
+    finally
+    {
+      DirectoryServer.setSyntaxEnforcementPolicy(accept);
+    } 
   }
 }

--
Gitblit v1.10.0