diff --git a/pom.xml b/pom.xml index f56aaba..07fc03d 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,8 @@ 3.2.10 1.2 + + 3.9 @@ -77,7 +79,12 @@ de.alpharogroup jobj-contract-verifier ${jobj-contract-verifier.version} - test + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} @@ -91,7 +98,6 @@ jobj-contract-verifier test - de.alpharogroup @@ -111,6 +117,13 @@ test + + + org.apache.commons + commons-lang3 + test + + - + diff --git a/src/test/java/de/alpharogroup/collection/comparators/TripleComparator.java b/src/test/java/de/alpharogroup/collection/comparators/TripleComparator.java new file mode 100644 index 0000000..3de7390 --- /dev/null +++ b/src/test/java/de/alpharogroup/collection/comparators/TripleComparator.java @@ -0,0 +1,57 @@ +/** + * The MIT License + * + * Copyright (C) 2015 Asterios Raptis + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package de.alpharogroup.collection.comparators; + +import java.util.Comparator; + +import org.apache.commons.lang3.builder.CompareToBuilder; + +import de.alpharogroup.collections.pairs.Triple; + +/** + * The class {@link TripleComparator} is a comparator for {@link Triple} objects. + * + * @param + * The type of the left content of this Triple. + * @param + * The type of the middle content of this Triple. + * @param + * The type of the right content of this Triple. + */ +public class TripleComparator implements Comparator> +{ + + /** + * {@inheritDoc} + */ + @Override + public int compare(final Triple o1, final Triple o2) + { + return new CompareToBuilder().append(o1.getLeft(), o2.getLeft()) + .append(o1.getMiddle(), o2.getMiddle()).append(o1.getRight(), o2.getRight()) + .toComparison(); + } + +} diff --git a/src/test/java/de/alpharogroup/collection/comparators/TripleComparatorTest.java b/src/test/java/de/alpharogroup/collection/comparators/TripleComparatorTest.java new file mode 100644 index 0000000..72840d1 --- /dev/null +++ b/src/test/java/de/alpharogroup/collection/comparators/TripleComparatorTest.java @@ -0,0 +1,85 @@ +/** + * The MIT License + * + * Copyright (C) 2015 Asterios Raptis + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package de.alpharogroup.collection.comparators; + +import static org.testng.AssertJUnit.assertTrue; + +import org.meanbean.test.BeanTester; +import org.testng.annotations.Test; + +import de.alpharogroup.collections.pairs.Triple; +import de.alpharogroup.test.objects.Customer; +import de.alpharogroup.test.objects.Employee; +import de.alpharogroup.test.objects.Person; + +/** + * The unit test class for the class {@link TripleComparator}. + */ +public class TripleComparatorTest +{ + + /** For use of the result of the comparator. */ + int actual; + + /** For use of the expected result. */ + boolean expected; + + /** + * Test method for {@link TripleComparator#compare(Object, Object)} + */ + @Test + public final void testCompare() + { + + final Person person = Person.builder().name("John").married(Boolean.FALSE).build(); + + final Employee employee = Employee.builder().id("20").person(person).build(); + + Customer customer = Customer.builder().build(); + + Triple o1 = Triple. builder() + .left(person).middle(employee).right(customer).build(); + + Triple o2 = Triple. builder() + .left(person).middle(employee).right(customer).build(); + + TripleComparator comparator = new TripleComparator<>(); + + actual = comparator.compare(o1, o2); + expected = actual == 0; + assertTrue(expected); + } + + /** + * Test method for {@link TripleComparator} + */ + @Test + public void testWithBeanTester() + { + final BeanTester beanTester = new BeanTester(); + beanTester.testBean(TripleComparator.class); + } + +}