blob: ac3658c4bdbc054cb284e84a2235b0c1bd6baf74 [file] [log] [blame]
/*
* Copyright 2016-present Open Networking Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.yangutils.parser.impl.parseutils;
import org.junit.Test;
import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.onosproject.yangutils.parser.impl.parserutils.AugmentJavaFileNameGenUtil.clearOccurrenceCount;
import static org.onosproject.yangutils.parser.impl.parserutils.AugmentJavaFileNameGenUtil.createValidNameForAugment;
import static org.onosproject.yangutils.parser.impl.parserutils.AugmentJavaFileNameGenUtil.getAugmentJavaFileNameList;
import static org.onosproject.yangutils.parser.impl.parserutils.AugmentJavaFileNameGenUtil.updateNameWhenHasMultipleOuccrrence;
/**
* Unit test case for augment java file name generator utility.
*/
public class AugmentJavaFileNameGenUtilTest {
private static final String TEST1 = "test1Node";
private static final String PARENT_PREFIX = "if";
private static final String NODE_PREFIX = "rf";
private static final String TEST1_AUGMENTED_NAME_WITHOUT_PREFIX = "AugmentedTest1Node";
private static final String TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI1 = "AugmentedTest1Node1";
private static final String TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI2 = "AugmentedTest1Node2";
private static final String TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI3 = "AugmentedTest1Node3";
private static final String TEST1_AUGMENTED_NAME_WITH_PREFIX = "AugmentedRfTest1Node";
private static final String TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI1 = "AugmentedRfTest1Node1";
private static final String TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI2 = "AugmentedRfTest1Node2";
private static final String TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI3 = "AugmentedRfTest1Node3";
private static String testString = "";
/**
* Unit test case when parent's prefix is present and one occurrence of augment node to update same target node.
*/
@Test
public void testForAugmentNameWhenOneOuccrrenceWithParentPrefix() {
clearData();
testString = createValidNameForAugment(getStubNodeIdetifierWithParentPrefix(),
isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX)));
}
/**
* Unit test case when no prefix and one occurrence of augment node to update same target node.
*/
@Test
public void testForAugmentNameWhenOneOuccrrenceWithNoPrefix() {
clearData();
testString = createValidNameForAugment(getStubNodeIdetifierWithNoPrefix(),
isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX)));
}
/**
* Unit test case when different prefix then parent is present and
* one occurrence of augment node to update same target node.
*/
@Test
public void testForAugmentNameWhenOneOuccrrenceWithDiffPrefix() {
clearData();
testString = createValidNameForAugment(getStubNodeIdetifierWithDiffPrefix(),
isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX)));
}
/**
* Unit test case when parent's prefix is present and two occurrence of augment node to update
* same target node is present.
*/
@Test
public void testForAugmentNameWhenTwoOuccrrenceWithParentPrefix() {
clearData();
createValidNameForAugment(getStubNodeIdetifierWithParentPrefix(),
isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithParentPrefix(),
isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI2)));
}
/**
* Unit test case when no prefix and two occurrence of augment node to update
* same target node is present.
*/
@Test
public void testForAugmentNameWhenTwoOuccrrenceWithNoPrefix() {
clearData();
createValidNameForAugment(getStubNodeIdetifierWithNoPrefix(),
isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithNoPrefix(),
isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI2)));
}
/**
* Unit test case when different prefix then parent is present and
* two occurrence of augment node to update same target node is present.
*/
@Test
public void testForAugmentNameWhenTwoOuccrrenceWithDiffPrefix() {
clearData();
createValidNameForAugment(getStubNodeIdetifierWithDiffPrefix(),
isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithDiffPrefix(),
isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI2)));
}
/**
* Unit test case when parent prefix and three occurrence of augment node to update
* same target node is present.
*/
@Test
public void testForAugmentNameWhenThreeOuccrrenceWithParentPrefix() {
clearData();
createValidNameForAugment(getStubNodeIdetifierWithParentPrefix(),
isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithParentPrefix(),
isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithParentPrefix(),
isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI3)));
}
/**
* Unit test case when no prefix and three occurrence of augment node to update
* same target node is present.
*/
@Test
public void testForAugmentNameWhenThreeOuccrrenceNoPrefix() {
clearData();
createValidNameForAugment(getStubNodeIdetifierWithNoPrefix(),
isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithNoPrefix(),
isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithNoPrefix(),
isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI3)));
}
/**
* Unit test case when different prefix and three occurrence of augment node to update
* same target node is present.
*/
@Test
public void testForAugmentNameWhenThreeOuccrrenceWithDiffPrefix() {
clearData();
createValidNameForAugment(getStubNodeIdetifierWithDiffPrefix(),
isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithDiffPrefix(),
isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithDiffPrefix(),
isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI3)));
}
/**
* Unit test case for when three occurrence is there and parent prefix is present,
* all the names need to be updated in list.
*/
@Test
public void testForPreviousNamesGotUpdatedWhenParentPrefix() {
clearData();
createValidNameForAugment(getStubNodeIdetifierWithParentPrefix(),
isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithParentPrefix(),
isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithParentPrefix(),
isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
testString = getAugmentJavaFileNameList().get(0);
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI1)));
testString = getAugmentJavaFileNameList().get(1);
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI2)));
testString = getAugmentJavaFileNameList().get(2);
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI3)));
}
/**
* Unit test case for when three occurrence is there and no prefix is present,
* all the names need to be updated in list.
*/
@Test
public void testForPreviousNamesGotUpdatedWhenNoPrefix() {
clearData();
createValidNameForAugment(getStubNodeIdetifierWithNoPrefix(),
isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithNoPrefix(),
isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithNoPrefix(),
isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
testString = getAugmentJavaFileNameList().get(0);
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI1)));
testString = getAugmentJavaFileNameList().get(1);
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI2)));
testString = getAugmentJavaFileNameList().get(2);
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI3)));
}
/**
* Unit test case for when three occurrence is there and different prefix is present,
* all the names need to be updated in list.
*/
@Test
public void testForPreviousNamesGotUpdatedWhenDifferentPrefix() {
clearData();
createValidNameForAugment(getStubNodeIdetifierWithDiffPrefix(),
isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithDiffPrefix(),
isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithDiffPrefix(),
isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
testString = getAugmentJavaFileNameList().get(0);
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI1)));
testString = getAugmentJavaFileNameList().get(1);
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI2)));
testString = getAugmentJavaFileNameList().get(2);
assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI3)));
}
/**
* Returns stub node identifier when parent prefix is used.
*
* @param name name of node
* @param prefix prefix of node
* @return node identifier for node
*/
private YangNodeIdentifier getStubNodeIdetifierWithParentPrefix() {
YangNodeIdentifier nodeId = new YangNodeIdentifier();
nodeId.setName(TEST1);
nodeId.setPrefix(PARENT_PREFIX);
return nodeId;
}
/**
* Returns stub node identifier when no prefix is used.
*
* @param name name of node
* @param prefix prefix of node
* @return node identifier for node
*/
private YangNodeIdentifier getStubNodeIdetifierWithNoPrefix() {
YangNodeIdentifier nodeId = new YangNodeIdentifier();
nodeId.setName(TEST1);
nodeId.setPrefix(null);
return nodeId;
}
/**
* Returns stub node identifier when different prefix is used.
*
* @param name name of node
* @param prefix prefix of node
* @return node identifier for node
*/
private YangNodeIdentifier getStubNodeIdetifierWithDiffPrefix() {
YangNodeIdentifier nodeId = new YangNodeIdentifier();
nodeId.setName(TEST1);
nodeId.setPrefix(NODE_PREFIX);
return nodeId;
}
/**
* Returns true if a prefix is present and it is not equals to parents prefix.
*
* @param nodeId YANG node identifier
* @param parentsPrefix parent's prefix
* @return true if a prefix is present and it is not equals to parents prefix
*/
private static boolean isPrefixPresent(YangNodeIdentifier nodeId) {
return nodeId.getPrefix() != null && nodeId.getPrefix() != PARENT_PREFIX;
}
/**
* Clears list of names and occurrence count after each test case.
*/
private void clearData() {
getAugmentJavaFileNameList().clear();
clearOccurrenceCount();
}
}