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

gbellato
08.52.2006 f990ae7be9b85d37a133bf474dc9c33edd0f1b63
add unit test for the approximate matching rule
1 files added
182 ■■■■■ changed files
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ApproximatematchingRule.java 182 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ApproximatematchingRule.java
New file
@@ -0,0 +1,182 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.schema;
import static org.testng.Assert.assertEquals;
import org.opends.server.SchemaFixture;
import org.opends.server.api.ApproximateMatchingRule;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ApproximatematchingRule extends SchemaTestCase
{
  @DataProvider(name="approximatematchingrules")
  public Object[][] createapproximateMatchingRuleTest()
  {
    // fill this table with tables containing :
    // - the name of the approxiamtematchingrule to test
    // - 2 values that must be tested for matching
    // - a boolean indicating if the values match or not
    return new Object[][] {
        {"DoubleMetaphoneApproximateMatchingRule", "celebre", "selebre", true},
        {"DoubleMetaphoneApproximateMatchingRule", "cygale", "sigale", true},
        {"DoubleMetaphoneApproximateMatchingRule", "cigale", "sigale", true},
        {"DoubleMetaphoneApproximateMatchingRule", "accacia", "akacia", true},
        {"DoubleMetaphoneApproximateMatchingRule", "cigale", "sigale", true},
        {"DoubleMetaphoneApproximateMatchingRule", "bertucci", "bertuchi", true},
        {"DoubleMetaphoneApproximateMatchingRule", "manger", "manjer", true},
        {"DoubleMetaphoneApproximateMatchingRule", "gyei", "kei", true},
        {"DoubleMetaphoneApproximateMatchingRule", "agnostique", "aknostic", true},
        {"DoubleMetaphoneApproximateMatchingRule", "ghang", "kang", true},
        {"DoubleMetaphoneApproximateMatchingRule", "affiche", "afiche", true},
        {"DoubleMetaphoneApproximateMatchingRule", "succeed", "sukid", true},
        {"DoubleMetaphoneApproximateMatchingRule", "McCarthur", "macarthur", true},
        {"DoubleMetaphoneApproximateMatchingRule", "czet", "set", true},
        {"DoubleMetaphoneApproximateMatchingRule", "re\u00C7u", "ressu", true},
        {"DoubleMetaphoneApproximateMatchingRule", "ni\u00D1o", "nino", true},
        {"DoubleMetaphoneApproximateMatchingRule", "bateaux", "bateau", true},
        {"DoubleMetaphoneApproximateMatchingRule", "witz", "wits", true},
        {"DoubleMetaphoneApproximateMatchingRule", "barre", "bare", true},
        {"DoubleMetaphoneApproximateMatchingRule", "write", "rite", true},
        {"DoubleMetaphoneApproximateMatchingRule", "the", "ze", false},
        {"DoubleMetaphoneApproximateMatchingRule", "motion", "mochion", true},
        {"DoubleMetaphoneApproximateMatchingRule", "bois", "boi", true},
        {"DoubleMetaphoneApproximateMatchingRule", "schi", "chi", true},
        {"DoubleMetaphoneApproximateMatchingRule", "escalier", "eskalier",true},
        {"DoubleMetaphoneApproximateMatchingRule", "science", "sience", true},
        {"DoubleMetaphoneApproximateMatchingRule", "school", "skool", true},
        {"DoubleMetaphoneApproximateMatchingRule", "swap", "sap", true},
        {"DoubleMetaphoneApproximateMatchingRule", "szize", "size", true},
        {"DoubleMetaphoneApproximateMatchingRule", "shoek", "choek", false},
        {"DoubleMetaphoneApproximateMatchingRule", "sugar", "chugar", true},
        {"DoubleMetaphoneApproximateMatchingRule", "isle", "ile", true},
        {"DoubleMetaphoneApproximateMatchingRule", "yle", "ysle", true},
        {"DoubleMetaphoneApproximateMatchingRule", "focaccia", "focashia", true},
        {"DoubleMetaphoneApproximateMatchingRule", "machine", "mashine", true},
        {"DoubleMetaphoneApproximateMatchingRule", "michael", "mikael", true},
        {"DoubleMetaphoneApproximateMatchingRule", "abba", "aba", true},
        {"DoubleMetaphoneApproximateMatchingRule", "caesar", "saesar", true},
        {"DoubleMetaphoneApproximateMatchingRule", "femme", "fame", true},
        {"DoubleMetaphoneApproximateMatchingRule", "panne", "pane", true},
        {"DoubleMetaphoneApproximateMatchingRule", "josa", "josa", true},
        {"DoubleMetaphoneApproximateMatchingRule", "jose", "hose", true},
        {"DoubleMetaphoneApproximateMatchingRule", "hello", "hello", true},
        {"DoubleMetaphoneApproximateMatchingRule", "hello", "ello", false},
        {"DoubleMetaphoneApproximateMatchingRule", "bag", "bak", true},
        {"DoubleMetaphoneApproximateMatchingRule", "bagg", "bag", true},
        {"DoubleMetaphoneApproximateMatchingRule", "tagliaro", "takliaro", true},
        {"DoubleMetaphoneApproximateMatchingRule", "biaggi", "biaji", true},
        {"DoubleMetaphoneApproximateMatchingRule", "bioggi", "bioji", true},
        {"DoubleMetaphoneApproximateMatchingRule", "rough", "rouf", true},
        {"DoubleMetaphoneApproximateMatchingRule", "ghislane", "jislane", true},
        {"DoubleMetaphoneApproximateMatchingRule", "ghaslane", "kaslane", true},
        {"DoubleMetaphoneApproximateMatchingRule", "odd", "ot", true},
        {"DoubleMetaphoneApproximateMatchingRule", "edgar", "etkar", true},
        {"DoubleMetaphoneApproximateMatchingRule", "edge", "eje", true},
        {"DoubleMetaphoneApproximateMatchingRule", "accord", "akord", true},
        {"DoubleMetaphoneApproximateMatchingRule", "noize", "noise", true},
        {"DoubleMetaphoneApproximateMatchingRule", "orchid", "orkid", true},
        {"DoubleMetaphoneApproximateMatchingRule", "chemistry", "kemistry", true},
        {"DoubleMetaphoneApproximateMatchingRule", "chianti", "kianti", true},
        {"DoubleMetaphoneApproximateMatchingRule", "bacher", "baker", true},
        {"DoubleMetaphoneApproximateMatchingRule", "achtung", "aktung", true},
        {"DoubleMetaphoneApproximateMatchingRule", "Writing", "riting", true},
        {"DoubleMetaphoneApproximateMatchingRule", "xeon", "zeon", true},
        {"DoubleMetaphoneApproximateMatchingRule", "lonely", "loneli", true},
        {"DoubleMetaphoneApproximateMatchingRule", "bellaton", "belatton", true},
        {"DoubleMetaphoneApproximateMatchingRule", "pate", "patte", true},
        {"DoubleMetaphoneApproximateMatchingRule", "voiture", "vouatur", true},
        {"DoubleMetaphoneApproximateMatchingRule", "garbage", "garbedge", true},
        {"DoubleMetaphoneApproximateMatchingRule", "algorithme", "algorizm", true},
        {"DoubleMetaphoneApproximateMatchingRule", "testing", "testng", true},
        {"DoubleMetaphoneApproximateMatchingRule", "announce", "annonce", true},
        {"DoubleMetaphoneApproximateMatchingRule", "automaticly", "automatically", true},
        {"DoubleMetaphoneApproximateMatchingRule", "modifyd", "modified", true},
        {"DoubleMetaphoneApproximateMatchingRule", "bouteille", "butaille", true},
        {"DoubleMetaphoneApproximateMatchingRule", "xeon", "zeon", true},
        {"DoubleMetaphoneApproximateMatchingRule", "achtung", "aktung", true},
        {"DoubleMetaphoneApproximateMatchingRule", "", "", true},
    };
  }
  /**
   * Test the normalization and the approximate comparison.
   */
  @Test(dataProvider= "approximatematchingrules")
  public void ApproximateMatchingRules(String ruleClassName, String value1,
                             String value2, Boolean result) throws Exception
  {
    // load the mathing rule code
    Class rule = Class.forName("org.opends.server.schema."+ruleClassName);
    // Make sure that the specified class can be instantiated as a task.
    ApproximateMatchingRule ruleInstance =
      (ApproximateMatchingRule) rule.newInstance();
    // we should call initializeMatchingRule but they all seem empty at the
    // moment.
    // ruleInstance.initializeMatchingRule(configEntry);
    // normalize the 2 provided values and check that they are equals
    ByteString normalizedValue1 =
      ruleInstance.normalizeValue(new ASN1OctetString(value1));
    ByteString normalizedValue2 =
      ruleInstance.normalizeValue(new ASN1OctetString(value2));
    Boolean liveResult = ruleInstance.approximatelyMatch(normalizedValue1,
        normalizedValue2);
    assertEquals(result, liveResult);
  }
  /**
   * Set up the environment for performing the tests in this suite.
   *
   * @throws Exception
   *           If the environment could not be set up.
   */
  @BeforeClass
  public void setUp() throws Exception {
    // This test suite depends on having the schema available.
    SchemaFixture.FACTORY.setUp();
  }
  /**
   * Tears down the environment for performing the tests in this suite.
   *
   * @throws Exception
   *           If the environment could not be finalized.
   */
  @AfterClass
  public void tearDown() throws Exception {
    SchemaFixture.FACTORY.tearDown();
  }
}