/* * 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 2009 Sun Microsystems, Inc. */ package org.opends.sdk.schema; import org.opends.sdk.DecodeException; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import com.sun.opends.sdk.util.SubstringReader; /** * Test schema utilities. */ public class SchemaUtilsTest extends SchemaTestCase { @DataProvider(name = "validOIDs") public Object[][] createValidOIDs() { return new Object[][] { // Compliant NOIDs { "0.0" }, { "1.0" }, { "2.0" }, { "3.0" }, { "4.0" }, { "5.0" }, { "6.0" }, { "7.0" }, { "8.0" }, { "9.0" }, { "0.1" }, { "0.2" }, { "0.3" }, { "0.4" }, { "0.5" }, { "0.6" }, { "0.7" }, { "0.8" }, { "0.9" }, { "10.0" }, { "100.0" }, { "999.0" }, { "0.100" }, { "0.999" }, { "100.100" }, { "999.999" }, { "111.22.333.44.55555.66.777.88.999" }, { "a" }, { "a2" }, { "a-" }, { "one" }, { "one1" }, { "one-two" }, { "one1-two2-three3" }, // AD puts quotes around OIDs - not compliant but we need to // handle them. { "'0.0'" }, { "'10.0'" }, { "'999.0'" }, { "'111.22.333.44.55555.66.777.88.999'" }, { "'a'" }, { "'a2'" }, { "'a-'" }, { "'one'" }, { "'one1'" }, { "'one-two'" }, { "'one1-two2-three3'" }, // Not strictly legal, but we'll be lenient with what we accept. { "0" }, { "1" }, { "2" }, { "3" }, { "4" }, { "5" }, { "6" }, { "7" }, { "8" }, { "9" }, { "00" }, { "01" }, { "01.0" }, { "0.01" }, { "one.two.three" }, }; } @DataProvider(name = "invalidOIDs") public Object[][] createInvalidOIDs() { return new Object[][] { { "" }, { ".0" }, { "0." }, { "100." }, { ".999" }, { "1one" }, { "one+two+three" }, // AD puts quotes around OIDs - test mismatched quotes. { "'0" }, { "'10" }, { "999'" }, { "0.0'" }, }; } @Test(dataProvider = "validOIDs") public void testReadOIDValid(String oid) throws DecodeException { String expected = oid; if (oid.startsWith("'")) { expected = oid.substring(1, oid.length() - 1); } SubstringReader reader = new SubstringReader(oid); Assert.assertEquals(SchemaUtils.readOID(reader), expected); } @Test(dataProvider = "invalidOIDs", expectedExceptions = DecodeException.class) public void testReadOIDInvalid(String oid) throws DecodeException { SubstringReader reader = new SubstringReader(oid); SchemaUtils.readOID(reader); } }