/*
* ====================
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 2008-2009 Sun Microsystems, Inc. All rights reserved.
*
* The contents of this file are subject to the terms of the Common Development
* and Distribution License("CDDL") (the "License"). You may not use this file
* except in compliance with the License.
*
* You can obtain a copy of the License at
* http://opensource.org/licenses/cddl1.php
* See the License for the specific language governing permissions and limitations
* under the License.
*
* When distributing the Covered Code, include this CDDL Header Notice in each file
* and include the License file at http://opensource.org/licenses/cddl1.php.
* If applicable, add the following below this CDDL Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
* ====================
*/
package org.identityconnectors.oracleerp;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;
import java.util.List;
import java.util.Set;
import org.identityconnectors.common.CollectionUtil;
import org.identityconnectors.framework.common.objects.Attribute;
import org.identityconnectors.framework.common.objects.AttributeBuilder;
import org.testng.annotations.Test;
/**
* @author Petr Jung
* @version $Revision 1.0$
* @since 1.0
*/
public class AttributeMergeBuilderTest {
private static final String TEST_NAME1 = "name1";
private static final String TEST_NAME2 = "name2";
private static final String TEST_NAME3 = "name3";
private static final String[] TO_GET_NAMES = { TEST_NAME1, TEST_NAME2, TEST_NAME3 };
private static final String[] TO_GET_NAMES2 = { TEST_NAME2 };
private static final Set<String> TO_GET_SET = CollectionUtil.newSet(TO_GET_NAMES);
private static final Set<String> TO_GET_SET2 = CollectionUtil.newSet(TO_GET_NAMES2);
private static final String[] TEST_VALUE1 = null;
private static final String[] TEST_VALUE2 = { "value1", "value2" };
private static final String[] TEST_VALUE3 = { "value2", "value3" };
private static final String[] TEST_RESULT3 = { "value1", "value2", "value3" };
private static final String[] TEST_VALUE4 = { null };
private static final String[] TEST_RESULT4 = { "value2", "value3", "value1" };
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AttributeMergeBuilder#AttributeMergeBuilder()}
* .
*/
@Test
public void testEmptyBuild() {
AttributeMergeBuilder bld = new AttributeMergeBuilder(TO_GET_SET);
assertNotNull("null builder", bld.build());
assertTrue("null builder", bld.build().size() == 0);
}
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AttributeMergeBuilder#addAttribute(java.lang.String, java.util.Collection)}
* .
*/
@Test
public void testSetAttributeStringCollectionOfObject() {
final Attribute attrR2 = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_VALUE2);
final Attribute attrR3 = AttributeBuilder.build(TEST_NAME3, (Object[]) TEST_VALUE3);
final AttributeMergeBuilder bld = new AttributeMergeBuilder(TO_GET_SET);
bld.setAttribute(TEST_NAME2, CollectionUtil.newReadOnlyList(TEST_VALUE3));
bld.setAttribute(TEST_NAME3, CollectionUtil.newReadOnlyList(TEST_VALUE2));
// Last win
bld.setAttribute(TEST_NAME2, CollectionUtil.newReadOnlyList(TEST_VALUE2));
bld.setAttribute(TEST_NAME3, CollectionUtil.newReadOnlyList(TEST_VALUE3));
final List<Attribute> actualList = bld.build();
assertNotNull("null builder", actualList);
assertEquals("size", 2, actualList.size());
assertTrue(TEST_NAME2, actualList.contains(attrR2));
assertTrue(TEST_NAME3, actualList.contains(attrR3));
}
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AttributeMergeBuilder#addAttribute(java.lang.String, java.util.Collection)}
* .
*/
@Test
public void testAddAttributeStringCollectionOfObject() {
final Attribute attrR2 = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_RESULT3);
final Attribute attrR3 = AttributeBuilder.build(TEST_NAME3, (Object[]) TEST_RESULT4);
final AttributeMergeBuilder bld = new AttributeMergeBuilder(TO_GET_SET);
bld.addAttribute(TEST_NAME2, CollectionUtil.newReadOnlyList(TEST_VALUE2));
bld.addAttribute(TEST_NAME3, CollectionUtil.newReadOnlyList(TEST_VALUE3));
// add attribute values
bld.addAttribute(TEST_NAME2, CollectionUtil.newReadOnlyList(TEST_VALUE3));
bld.addAttribute(TEST_NAME3, CollectionUtil.newReadOnlyList(TEST_VALUE2));
final List<Attribute> actualList = bld.build();
assertNotNull("null builder", actualList);
assertEquals("size", 2, actualList.size());
assertTrue(TEST_NAME2, actualList.contains(attrR2));
assertTrue(TEST_NAME3, actualList.contains(attrR3));
}
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AttributeMergeBuilder#addAttribute(java.lang.String, java.lang.Object[])}
* .
*/
@Test
public void testSetAttributeStringObjectArray() {
final Attribute attrR2 = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_VALUE2);
final Attribute attrR3 = AttributeBuilder.build(TEST_NAME3, (Object[]) TEST_VALUE3);
final AttributeMergeBuilder bld = new AttributeMergeBuilder(TO_GET_SET);
bld.setAttribute(TEST_NAME2, (Object[]) TEST_VALUE3);
bld.setAttribute(TEST_NAME3, (Object[]) TEST_VALUE2);
// last win
bld.setAttribute(TEST_NAME2, (Object[]) TEST_VALUE2);
bld.setAttribute(TEST_NAME3, (Object[]) TEST_VALUE3);
final List<Attribute> actualList = bld.build();
assertNotNull("null builder", actualList);
assertEquals("size", 2, actualList.size());
assertTrue(TEST_NAME2, actualList.contains(attrR2));
assertTrue(TEST_NAME3, actualList.contains(attrR3));
}
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AttributeMergeBuilder#addAttribute(java.lang.String, java.lang.Object[])}
* .
*/
@Test
public void testAddAttributeStringObjectArray() {
final Attribute attrR2 = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_RESULT3);
final Attribute attrR3 = AttributeBuilder.build(TEST_NAME3, (Object[]) TEST_RESULT4);
final AttributeMergeBuilder bld = new AttributeMergeBuilder(TO_GET_SET);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE2);
bld.addAttribute(TEST_NAME3, (Object[]) TEST_VALUE3);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE3);
bld.addAttribute(TEST_NAME3, (Object[]) TEST_VALUE2);
final List<Attribute> actualList = bld.build();
assertNotNull("null builder", actualList);
assertEquals("size", 2, actualList.size());
assertTrue(TEST_NAME2, actualList.contains(attrR2));
assertTrue(TEST_NAME3, actualList.contains(attrR3));
}
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AttributeMergeBuilder#build()}.
*/
@Test
public void testMergeBuild() {
final Attribute attrR = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_RESULT3);
final Attribute attrRE = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_RESULT4);
final AttributeMergeBuilder bld = new AttributeMergeBuilder(TO_GET_SET);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE2);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE3);
final List<Attribute> actualList = bld.build();
assertNotNull("null builder", actualList);
assertEquals("size", 1, actualList.size());
assertTrue(TEST_NAME2, actualList.contains(attrR));
assertFalse(TEST_NAME2, actualList.contains(attrRE));
}
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AttributeMergeBuilder#build()}.
*/
@Test
public void testMergeNullBuild() {
final Attribute exp2 = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_RESULT3);
final Attribute attrRE = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_RESULT4);
final AttributeMergeBuilder bld = new AttributeMergeBuilder(TO_GET_SET);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE2);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE3);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE1);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE4);
final List<Attribute> actualList = bld.build();
assertNotNull("null builder", actualList);
assertEquals("size", 1, actualList.size());
assertTrue(TEST_NAME2, actualList.contains(exp2));
assertFalse(TEST_NAME2, actualList.contains(attrRE));
}
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AttributeMergeBuilder#build()}.
*/
@Test
public void testMergeNullFirstBuild() {
final Attribute attrR = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_RESULT3);
final Attribute attrRE = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_RESULT4);
final AttributeMergeBuilder bld = new AttributeMergeBuilder(TO_GET_SET);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE1);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE2);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE3);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE4);
final List<Attribute> actualList = bld.build();
assertNotNull("null builder", actualList);
assertEquals("size", 1, actualList.size());
assertTrue(TEST_NAME2, actualList.contains(attrR));
assertFalse(TEST_NAME2, actualList.contains(attrRE));
}
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AttributeMergeBuilder#build()}.
*/
@Test
public void testMergeNullAttribBuild() {
final Attribute attrR = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_RESULT3);
final Attribute attrRE = AttributeBuilder.build(TEST_NAME2, (Object[]) TEST_RESULT4);
final AttributeMergeBuilder bld = new AttributeMergeBuilder(TO_GET_SET);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE2);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE3);
bld.addAttribute(TEST_NAME1, (Object[]) TEST_VALUE1);
bld.addAttribute(TEST_NAME1, (Object[]) TEST_VALUE4);
final List<Attribute> actualList = bld.build();
assertNotNull("null builder", actualList);
assertEquals("size", 2, actualList.size());
assertTrue(TEST_NAME2, actualList.contains(attrR));
assertFalse(TEST_NAME2, actualList.contains(attrRE));
}
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AttributeMergeBuilder#build()}.
*/
@Test
public void testMergeToGetNames() {
final AttributeMergeBuilder bld = new AttributeMergeBuilder(TO_GET_SET2);
bld.addAttribute(TEST_NAME1, (Object[]) TEST_VALUE1);
bld.addAttribute(TEST_NAME2, (Object[]) TEST_VALUE2);
bld.addAttribute(TEST_NAME3, (Object[]) TEST_VALUE3);
final List<Attribute> actualList = bld.build();
assertNotNull("null builder", actualList);
assertEquals("size", 1, actualList.size());
}
}