/**
* Copyright 2014-2017 Linagora, Université Joseph Fourier, Floralis
*
* The present code is developed in the scope of the joint LINAGORA -
* Université Joseph Fourier - Floralis research program and is designated
* as a "Result" pursuant to the terms and conditions of the LINAGORA
* - Université Joseph Fourier - Floralis research program. Each copyright
* holder of Results enumerated here above fully & independently holds complete
* ownership of the complete Intellectual Property rights applicable to the whole
* of said Results, and may freely exploit it in any manner which does not infringe
* the moral rights of the other copyright holders.
*
* 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 net.roboconf.core.model.comparators;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.Assert;
import net.roboconf.core.model.beans.Instance;
import net.roboconf.core.model.helpers.InstanceHelpers;
import org.junit.Test;
/**
* @author Vincent Zurczak - Linagora
*/
public class InstanceComparatorTest {
@Test
public void testRootInstances() {
Instance i1 = new Instance( "root1" );
Instance i2 = new Instance( "root2" );
Instance i3 = new Instance( "1" );
Instance i4 = new Instance( "_1" );
Instance i5 = new Instance( "root11" );
List<Instance> instances = new ArrayList<Instance> ();
instances.add( i1 );
instances.add( i2 );
instances.add( i3 );
instances.add( i4 );
instances.add( i5 );
Collections.sort( instances, new InstanceComparator());
Assert.assertEquals( i3, instances.get( 0 ));
Assert.assertEquals( i4, instances.get( 1 ));
Assert.assertEquals( i1, instances.get( 2 ));
Assert.assertEquals( i5, instances.get( 3 ));
Assert.assertEquals( i2, instances.get( 4 ));
}
@Test
public void testOneRootInstanceWithChildren() {
Instance i1 = new Instance( "root1" );
Instance i11 = new Instance( "child" );
Instance i12 = new Instance( "child2" );
Instance i2 = new Instance( "1" );
Instance i3 = new Instance( "root11" );
InstanceHelpers.insertChild( i1, i12 );
InstanceHelpers.insertChild( i1, i11 );
List<Instance> instances = new ArrayList<Instance> ();
instances.add( i1 );
instances.add( i2 );
instances.add( i12 );
instances.add( i3 );
instances.add( i11 );
Collections.sort( instances, new InstanceComparator());
Assert.assertEquals( i2, instances.get( 0 ));
Assert.assertEquals( i1, instances.get( 1 ));
Assert.assertEquals( i11, instances.get( 2 ));
Assert.assertEquals( i12, instances.get( 3 ));
Assert.assertEquals( i3, instances.get( 4 ));
}
@Test
public void testOnlyVmHavedifferentNames() {
Instance i1 = new Instance( "vmec2tomcatrubis1" );
Instance i2 = new Instance( "vmec2tomcatrubis2" );
Instance i10 = new Instance( "vmec2tomcatrubis10" );
Instance i11 = new Instance( "vmec2tomcatrubis11" );
Instance i1_1 = new Instance( "tomcat" );
Instance i2_1 = new Instance( "tomcat" );
Instance i10_1 = new Instance( "tomcat" );
Instance i11_1 = new Instance( "tomcat" );
Instance i11_2 = new Instance( "tomcat2" );
Instance i11_2_1 = new Instance( "app" );
InstanceHelpers.insertChild( i1, i1_1 );
InstanceHelpers.insertChild( i2, i2_1 );
InstanceHelpers.insertChild( i10, i10_1 );
InstanceHelpers.insertChild( i11, i11_1 );
InstanceHelpers.insertChild( i11, i11_2 );
InstanceHelpers.insertChild( i11_2, i11_2_1 );
List<Instance> instances = new ArrayList<Instance> ();
instances.add( i1 );
instances.add( i2 );
instances.add( i10 );
instances.add( i11 );
instances.add( i1_1 );
instances.add( i2_1 );
instances.add( i10_1 );
instances.add( i11_1 );
instances.add( i11_2 );
instances.add( i11_2_1 );
Collections.sort( instances, new InstanceComparator());
Assert.assertEquals( i1, instances.get( 0 ));
Assert.assertEquals( i1_1, instances.get( 1 ));
Assert.assertEquals( i10, instances.get( 2 ));
Assert.assertEquals( i10_1, instances.get( 3 ));
Assert.assertEquals( i11, instances.get( 4 ));
Assert.assertEquals( i11_1, instances.get( 5 ));
Assert.assertEquals( i11_2, instances.get( 6 ));
Assert.assertEquals( i11_2_1, instances.get( 7 ));
Assert.assertEquals( i2, instances.get( 8 ));
Assert.assertEquals( i2_1, instances.get( 9 ));
}
@Test
public void testWithInvalidInstancePath() {
Instance inst1 = new Instance( "inst" );
Instance inst2 = new Instance();
Instance inst3 = new Instance();
Instance inst4 = new Instance( "instance" );
List<Instance> instances = new ArrayList<Instance> ();
instances.add( inst1 );
instances.add( inst2 );
instances.add( inst3 );
instances.add( inst4 );
Collections.sort( instances, new InstanceComparator());
Assert.assertEquals( inst2, instances.get( 0 ));
Assert.assertEquals( inst3, instances.get( 1 ));
Assert.assertEquals( inst1, instances.get( 2 ));
Assert.assertEquals( inst4, instances.get( 3 ));
// Try another insertion order
instances.clear();
instances.add( inst2 );
instances.add( inst1 );
instances.add( inst3 );
instances.add( inst4 );
Collections.sort( instances, new InstanceComparator());
Assert.assertEquals( inst2, instances.get( 0 ));
Assert.assertEquals( inst3, instances.get( 1 ));
Assert.assertEquals( inst1, instances.get( 2 ));
Assert.assertEquals( inst4, instances.get( 3 ));
}
}