/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.schema; import java.util.Collections; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * Unit tests for {@link DITStructureRule}. * * @author Middleware Services */ public class DITStructureRuleTest { /** * Test data for DIT structure rule. * * @return DIT structure rule and string definition */ @DataProvider(name = "definitions") public Object[][] createDefinitions() { return new Object[][] { new Object[] { new DITStructureRule(2, null, null, false, null, null, null), "( 2 )", }, new Object[] { new DITStructureRule(2, new String[] {"uddiContactStructureRule"}, null, false, null, null, null), "( 2 NAME 'uddiContactStructureRule' )", }, new Object[] { new DITStructureRule( 2, new String[] {"uddiContactStructureRule"}, null, false, "uddiContactNameForm", null, null), "( 2 NAME 'uddiContactStructureRule' FORM uddiContactNameForm )", }, new Object[] { new DITStructureRule( 2, new String[] {"uddiContactStructureRule"}, null, false, "uddiContactNameForm", new int[] {1}, null), "( 2 NAME 'uddiContactStructureRule' FORM uddiContactNameForm SUP 1 )", }, new Object[] { new DITStructureRule( 2, new String[] {"uddiContactStructureRule"}, null, false, "uddiContactNameForm", new int[] {1}, new Extensions("X-ORIGIN", Collections.singletonList("RFC 4403"))), "( 2 NAME 'uddiContactStructureRule' FORM uddiContactNameForm SUP 1 X-ORIGIN 'RFC 4403' )", }, new Object[] { new DITStructureRule(1, new String[] {"domainStructureRule"}, null, false, "domainNameForm", null, null), "( 1 NAME 'domainStructureRule' FORM domainNameForm )", }, new Object[] { new DITStructureRule( 2, new String[] {"organizationalUnitStructureRule"}, null, false, "organizationalUnitNameForm", new int[] {1}, null), "( 2 NAME 'organizationalUnitStructureRule' FORM organizationalUnitNameForm SUP 1 )", }, new Object[] { new DITStructureRule( 3, new String[] {"inetOrgPersonStructureRule"}, null, false, "inetOrgPersonNameForm", new int[] {2}, null), "( 3 NAME 'inetOrgPersonStructureRule' FORM inetOrgPersonNameForm SUP 2 )", }, new Object[] { new DITStructureRule( 4, new String[] {"groupOfNamesStructureRule"}, null, false, "groupOfNamesNameForm", new int[] {2, 3}, null), "( 4 NAME 'groupOfNamesStructureRule' FORM groupOfNamesNameForm SUP ( 2 3 ) )", }, }; } /** * @param structureRule to compare * @param definition to parse * * @throws Exception On test failure. */ @Test(groups = {"schema"}, dataProvider = "definitions") public void parse(final DITStructureRule structureRule, final String definition) throws Exception { final DITStructureRule parsed = DITStructureRule.parse(definition); Assert.assertEquals(structureRule, parsed); Assert.assertEquals(definition, parsed.format()); Assert.assertEquals(structureRule.format(), parsed.format()); } }