/*
* 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
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
*/
package org.opends.server.schema;
import static org.testng.Assert.*;
import org.opends.server.api.ApproximateMatchingRule;
import org.opends.server.types.ByteString;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ApproximatematchingRule extends SchemaTestCase
{
/**
* Build the data for the approximateMatchingRules test.
*/
@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", "throttle", "throddle", true},
{"DoubleMetaphoneApproximateMatchingRule", "thimble", "thimblle", 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);
assertNotNull(rule);
// 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
ByteString normalizedValue1 =
ruleInstance.normalizeValue(ByteString.valueOf(value1));
ByteString normalizedValue2 =
ruleInstance.normalizeValue(ByteString.valueOf(value2));
// check that the approximatelyMatch return the expected result.
Boolean liveResult = ruleInstance.approximatelyMatch(normalizedValue1,
normalizedValue2);
assertEquals(result, liveResult);
}
}