mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

gbellato
22.30.2006 d36ba104a7dee0fbd4e92c6db633bc494eb7c122
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);
    }
  }
}