/** * Copyright (c) 2009 - 2012 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package org.candlepin.util; import static org.junit.Assert.*; import org.candlepin.common.util.RpmVersionComparator; import org.junit.After; import org.junit.Before; import org.junit.Test; /** * RpmVersionComparatorTest */ public class RpmVersionComparatorTest { private RpmVersionComparator cmp; @Before public void init() throws Exception { cmp = new RpmVersionComparator(); } @After public void down() throws Exception { cmp = null; } @Test public void versionTest() { assertCompareSymm(-1, "0.5.5-1", "0.5.5.2-1"); } @Test public void testBasicComparisons() { // Some equality assertCompareSymm(0, "0", "0"); assertCompareSymm(0, "1-a.1", "1-a.1"); assertCompareSymm(0, "1-a.1", "1.a-1"); assertCompareSymm(0, "", ""); // Some asymmetry .. not really a total ordering assertCompareAsym(-1, "-", "."); assertCompareAsym(-1, "--", "-"); assertCompareAsym(-1, "1-1-", "1-1."); assertCompareSymm(1, "1.1", "1a"); assertCompareSymm(-1, "9", "10"); assertCompareSymm(-1, "00009", "0010"); } @Test public void testBugzilla50977() { // From comment #2 assertCompareSymm(1, "10mdk", "10"); assertCompareSymm(-1, "10mdk", "10.1mdk"); assertCompareSymm(1, "9", "ximian.1"); // From comment #19 assertCompareSymm(-1, "1.4snap", "1.4.5"); assertCompareSymm(-1, "4.0x", "4.0.36"); assertCompareSymm(-1, "p19", "2.0.0"); assertCompareSymm(0, "2.0e", "2.0e"); assertCompareSymm(-1, "2.0e", "2.0.11"); } @Test public void testBugzilla82639() { // Some test cases from that bz. Note that the // results being tested for are not necessarily the ones from // bz, but whatever rpmvercmp in RHEL3 returns assertCompareSymm(1, "1", "asp1.7x.2"); assertCompareSymm(1, "ipl4mdk", "alt0.8"); assertCompareSymm(-1, "alt0.8", "ipl4mdk"); assertCompareSymm(1, "1asp", "alt1"); } @Test public void nullStringFirstArg() { assertCompare(1, null, "str2"); } @Test public void nullStringSecondArg() { assertCompare(1, "str1", null); } @Test public void bothNull() { assertCompare(0, null, null); } private void assertCompareAsym(int exp, String v1, String v2) { assertCompare(exp, v1, v2); assertCompare(exp, v2, v1); } private void assertCompareSymm(int exp, String v1, String v2) { assertCompare(exp, v1, v2); assertCompare(-exp, v2, v1); } private void assertCompare(int exp, String v1, String v2) { assertEquals(exp, cmp.compare(v1, v2)); assertEquals(0, cmp.compare(v1, v1)); assertEquals(0, cmp.compare(v2, v2)); } }