/** * This file is part of Graylog. * * Graylog is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Graylog is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Graylog. If not, see <http://www.gnu.org/licenses/>. */ package org.graylog2.plugin; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class VersionTest { @Test public void testGetName() throws Exception { assertEquals("0.20.0", Version.from(0, 20, 0).toString()); assertEquals("1.0.0", Version.from(1, 0, 0).toString()); assertEquals("1.2.3", Version.from(1, 2, 3).toString()); assertEquals("0.0.7", Version.from(0, 0, 7).toString()); assertEquals("1.0.0-preview.1", Version.from(1, 0, 0, "preview.1").toString()); assertEquals("1.0.0-preview.1+deadbeef", Version.from(1, 0, 0, "preview.1", "deadbeef").toString()); } @Test public void testEquals() throws Exception { assertTrue(Version.from(0, 20, 0).equals(Version.from(0, 20, 0))); assertTrue(Version.from(0, 20, 0, "preview.1").equals(Version.from(0, 20, 0, "preview.1"))); assertTrue(Version.from(1, 2, 3).equals(Version.from(1, 2, 3))); Version v = Version.from(0, 20, 0); assertEquals(Version.from(0, 20, 0), v); assertFalse(Version.from(0, 20, 0).equals(Version.from(0, 20, 1))); assertFalse(Version.from(0, 20, 0, "preview.1").equals(Version.from(0, 20, 0, "preview.2"))); assertFalse(Version.from(0, 20, 0).equals(null)); } @Test public void testGreaterMinor() throws Exception { Version v = Version.from(0, 20, 0); assertTrue(v.greaterMinor(Version.from(0, 19, 0))); assertTrue(v.greaterMinor(Version.from(0, 18, 2))); assertTrue(v.greaterMinor(Version.from(0, 19, 9001))); assertFalse(v.greaterMinor(Version.from(0, 20, 0))); assertFalse(v.greaterMinor(Version.from(1, 0, 0))); assertFalse(v.greaterMinor(Version.from(1, 0, 9001))); assertFalse(v.greaterMinor(Version.from(1, 20, 0))); assertFalse(v.greaterMinor(Version.from(1, 1, 0))); assertFalse(v.greaterMinor(Version.from(3, 2, 1))); assertTrue(v.greaterMinor(Version.from(0, 19, 0, "rc.1"))); v = Version.from(1, 5, 0); assertTrue(v.greaterMinor(Version.from(0, 19, 0))); assertTrue(v.greaterMinor(Version.from(1, 0, 0))); assertTrue(v.greaterMinor(Version.from(0, 19, 9001))); assertFalse(v.greaterMinor(Version.from(1, 6, 0))); assertFalse(v.greaterMinor(Version.from(3, 0, 0))); assertFalse(v.greaterMinor(Version.from(1, 5, 9001))); assertFalse(v.greaterMinor(Version.from(1, 20, 0))); assertFalse(v.greaterMinor(Version.from(1, 20, 5))); assertFalse(v.greaterMinor(Version.from(3, 2, 1))); assertTrue(v.greaterMinor(Version.from(0, 19, 0, "rc.1"))); } @Test public void testSameOrHigher() throws Exception { Version v = Version.from(0, 20, 2); assertTrue(v.sameOrHigher(Version.from(0, 19, 0))); assertTrue(v.sameOrHigher(Version.from(0, 18, 2))); assertTrue(v.sameOrHigher(Version.from(0, 19, 9001))); assertTrue(v.sameOrHigher(Version.from(0, 20, 0))); assertFalse(v.sameOrHigher(Version.from(1, 0, 0))); assertFalse(v.sameOrHigher(Version.from(1, 0, 9001))); assertFalse(v.sameOrHigher(Version.from(1, 20, 0))); assertFalse(v.sameOrHigher(Version.from(1, 1, 0))); assertFalse(v.sameOrHigher(Version.from(3, 2, 1))); assertTrue(v.sameOrHigher(Version.from(0, 19, 0, "rc.1"))); assertFalse(v.sameOrHigher(Version.from(1, 19, 0, "rc.1"))); assertFalse(v.sameOrHigher(Version.from(0, 21, 0, "rc.1"))); assertTrue(v.sameOrHigher(Version.from(0, 20, 1, "rc.1"))); assertTrue(v.sameOrHigher(Version.from(0, 20, 0, "rc.1"))); assertTrue(v.sameOrHigher(Version.from(0, 20, 2, "rc.1"))); assertFalse(v.sameOrHigher(Version.from(0, 20, 3, "rc.1"))); v = Version.from(1, 5, 0); assertTrue(v.sameOrHigher(Version.from(0, 19, 0))); assertTrue(v.sameOrHigher(Version.from(1, 0, 0))); assertTrue(v.sameOrHigher(Version.from(0, 19, 9001))); assertTrue(v.sameOrHigher(Version.from(1, 5, 0))); assertTrue(v.sameOrHigher(Version.from(1, 4, 9))); assertFalse(v.sameOrHigher(Version.from(1, 6, 0))); assertFalse(v.sameOrHigher(Version.from(3, 0, 0))); assertFalse(v.sameOrHigher(Version.from(1, 5, 9001))); assertFalse(v.sameOrHigher(Version.from(1, 20, 0))); assertFalse(v.sameOrHigher(Version.from(1, 20, 5))); assertFalse(v.sameOrHigher(Version.from(3, 2, 1))); assertTrue(v.sameOrHigher(Version.from(0, 19, 0, "rc.1"))); assertFalse(v.sameOrHigher(Version.from(2, 19, 0, "rc.1"))); assertTrue(v.sameOrHigher(Version.from(0, 0, 0))); assertFalse(v.sameOrHigher(Version.from(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE))); // See https://github.com/Graylog2/graylog2-server/issues/2462 v = Version.from(2, 1, 0, "beta.2"); assertTrue(v.sameOrHigher(Version.from(2, 1, 0, "alpha.1"))); assertTrue(v.sameOrHigher(Version.from(2, 1, 0, "beta.1"))); assertTrue(v.sameOrHigher(Version.from(2, 1, 0, "beta.2"))); assertTrue(v.sameOrHigher(Version.from(2, 1, 0))); // This needs to work! assertFalse(v.sameOrHigher(Version.from(2, 2, 0, "alpha.1"))); assertFalse(v.sameOrHigher(Version.from(2, 2, 0))); } @Test public void testCompareTo() { Version v = Version.from(0, 20, 2); assertTrue(v.compareTo(Version.from(0, 19, 0)) > 0); assertTrue(v.compareTo(Version.from(0, 18, 2)) > 0); assertTrue(v.compareTo(Version.from(0, 19, 9001)) > 0); assertTrue(v.compareTo(Version.from(0, 20, 2)) == 0); assertTrue(v.compareTo(Version.from(0, 20, 0)) > 0); assertTrue(v.compareTo(Version.from(1, 0, 0)) < 0); assertTrue(v.compareTo(Version.from(1, 0, 9001)) < 0); assertTrue(v.compareTo(Version.from(1, 20, 0)) < 0); assertTrue(v.compareTo(Version.from(1, 1, 0)) < 0); assertTrue(v.compareTo(Version.from(3, 2, 1)) < 0); assertTrue(v.compareTo(Version.from(0, 19, 0, "rc.1")) > 0); assertTrue(v.compareTo(Version.from(1, 19, 0, "rc.1")) < 0); assertTrue(v.compareTo(Version.from(0, 21, 0, "rc.1")) < 0); assertTrue(v.compareTo(Version.from(0, 20, 1, "rc.1")) > 0); assertTrue(v.compareTo(Version.from(0, 20, 0, "rc.1")) > 0); assertTrue(v.compareTo(Version.from(0, 20, 2, "rc.1")) > 0); assertTrue(v.compareTo(Version.from(0, 20, 3, "rc.1")) < 0); v = Version.from(1, 5, 0); assertTrue(v.compareTo(Version.from(0, 19, 0)) > 0); assertTrue(v.compareTo(Version.from(1, 0, 0)) > 0); assertTrue(v.compareTo(Version.from(0, 19, 9001)) > 0); assertTrue(v.compareTo(Version.from(1, 5, 0)) == 0); assertTrue(v.compareTo(Version.from(1, 4, 9)) > 0); assertTrue(v.compareTo(Version.from(1, 6, 0)) < 0); assertTrue(v.compareTo(Version.from(3, 0, 0)) < 0); assertTrue(v.compareTo(Version.from(1, 5, 9001)) < 0); assertTrue(v.compareTo(Version.from(1, 20, 0)) < 0); assertTrue(v.compareTo(Version.from(1, 20, 5)) < 0); assertTrue(v.compareTo(Version.from(3, 2, 1)) < 0); assertTrue(v.compareTo(Version.from(0, 19, 0, "rc.1")) > 0); assertTrue(v.compareTo(Version.from(2, 19, 0, "rc.1")) < 0); assertTrue(v.compareTo(Version.from(0, 0, 0)) > 0); assertTrue(v.compareTo(Version.from(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE)) < 0); v = Version.from(1, 0, 0, "beta.2"); assertTrue(v.compareTo(Version.from(1, 0, 0, "beta.1")) > 0); assertTrue(v.compareTo(Version.from(1, 0, 0, "beta.2")) == 0); assertTrue(v.compareTo(Version.from(1, 0, 0, "beta.3")) < 0); assertTrue(v.compareTo(Version.from(1, 0, 0, "alpha.1")) > 0); assertTrue(v.compareTo(Version.from(1, 0, 0, "alpha.3")) > 0); assertTrue(v.compareTo(Version.from(1, 0, 0, "rc.1")) < 0); assertTrue(v.compareTo(Version.from(1, 0, 0, "rc.3")) < 0); assertTrue(v.compareTo(Version.from(1, 0, 0)) < 0); } }