From f990ae7be9b85d37a133bf474dc9c33edd0f1b63 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Fri, 08 Sep 2006 13:52:36 +0000
Subject: [PATCH] add unit test for the approximate matching rule
---
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ApproximatematchingRule.java | 182 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 182 insertions(+), 0 deletions(-)
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ApproximatematchingRule.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ApproximatematchingRule.java
new file mode 100644
index 0000000..aaaab7e
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ApproximatematchingRule.java
@@ -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();
+ }
+}
--
Gitblit v1.10.0