blob: 560e428c4b679e5afa735e74b8cb535f14384969 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 freemarker.template;
import static org.junit.Assert.*;
import java.sql.Date;
import org.junit.Test;
@SuppressWarnings("boxing")
public class VersionTest {
@Test
public void testFromNumber() {
Version v = new Version(1, 2, 3);
assertEquals("1.2.3", v.toString());
assertEquals(1002003, v.intValue());
assertEquals(1, v.getMajor());
assertEquals(2, v.getMinor());
assertEquals(3, v.getMicro());
assertNull(v.getExtraInfo());
assertNull(v.isGAECompliant());
assertNull(v.getBuildDate());
}
@Test
public void testFromNumber2() {
Version v = new Version(1, 2, 3, "beta8", Boolean.TRUE, new Date(5000));
assertEquals("1.2.3-beta8", v.toString());
assertEquals("beta8", v.getExtraInfo());
assertTrue(v.isGAECompliant().booleanValue());
assertEquals(new Date(5000), v.getBuildDate());
}
@Test
public void testFromNumber3() {
Version v = new Version(new Version(1, 2, 3).intValue());
assertEquals(1, v.getMajor());
assertEquals(2, v.getMinor());
assertEquals(3, v.getMicro());
}
public void testFromNumberIncubating() {
Version v = new Version(2, 3, 24, "rc01-incubating", Boolean.FALSE, new Date(5000));
assertEquals("2.3.24-rc01-incubating", v.toString());
assertEquals("rc01-incubating", v.getExtraInfo());
assertFalse(v.isGAECompliant().booleanValue());
assertEquals(new Date(5000), v.getBuildDate());
}
@Test
public void testFromString() {
Version v = new Version("1.2.3-beta2");
assertEquals("1.2.3-beta2", v.toString());
assertEquals(1002003, v.intValue());
assertEquals(1, v.getMajor());
assertEquals(2, v.getMinor());
assertEquals(3, v.getMicro());
assertEquals("beta2", v.getExtraInfo());
assertNull(v.isGAECompliant());
assertNull(v.getBuildDate());
}
@Test
public void testFromString2() {
Version v = new Version("10.20.30", Boolean.TRUE, new Date(5000));
assertEquals("10.20.30", v.toString());
assertEquals(10020030, v.intValue());
assertEquals(10, v.getMajor());
assertEquals(20, v.getMinor());
assertEquals(30, v.getMicro());
assertNull(v.getExtraInfo());
assertTrue(v.isGAECompliant().booleanValue());
assertEquals(new Date(5000), v.getBuildDate());
}
@Test
public void testFromString3() {
Version v = new Version("01.002.0003-20130524");
assertEquals("01.002.0003-20130524", v.toString());
assertEquals(1, v.getMajor());
assertEquals(2, v.getMinor());
assertEquals(3, v.getMicro());
assertEquals("20130524", v.getExtraInfo());
v = new Version("01.002.0003.4");
assertEquals("01.002.0003.4", v.toString());
assertEquals(1, v.getMajor());
assertEquals(2, v.getMinor());
assertEquals(3, v.getMicro());
assertEquals("4", v.getExtraInfo());
v = new Version("1.2.3.FC");
assertEquals("1.2.3.FC", v.toString());
assertEquals("FC", v.getExtraInfo());
v = new Version("1.2.3mod");
assertEquals("1.2.3mod", v.toString());
assertEquals(1, v.getMajor());
assertEquals(2, v.getMinor());
assertEquals(3, v.getMicro());
assertEquals("mod", v.getExtraInfo());
}
@Test
public void testFromStringIncubating() {
Version v = new Version("2.3.24-rc01-incubating");
assertEquals("2.3.24-rc01-incubating", v.toString());
assertEquals(2, v.getMajor());
assertEquals(3, v.getMinor());
assertEquals(24, v.getMicro());
assertEquals("rc01-incubating", v.getExtraInfo());
}
@Test
public void testHashAndEquals() {
Version v1 = new Version("1.2.3-beta2");
Version v2 = new Version(1, 2, 3, "beta2", null, null);
assertEquals(v1, v2);
assertEquals(v1.hashCode(), v2.hashCode());
v2 = new Version("1.2.3-beta3");
assertTrue(!v1.equals(v2));
assertTrue(v1.hashCode() != v2.hashCode());
v2 = new Version(1, 2, 3, "beta2", true, null);
assertTrue(!v1.equals(v2));
assertTrue(v1.hashCode() != v2.hashCode());
v2 = new Version(1, 2, 3, "beta2", null, new Date(5000));
assertTrue(!v1.equals(v2));
assertTrue(v1.hashCode() != v2.hashCode());
v2 = new Version("1.2.9-beta2");
assertTrue(!v1.equals(v2));
assertTrue(v1.hashCode() != v2.hashCode());
v2 = new Version("1.9.3-beta2");
assertTrue(!v1.equals(v2));
assertTrue(v1.hashCode() != v2.hashCode());
v2 = new Version("9.2.3-beta2");
assertTrue(!v1.equals(v2));
assertTrue(v1.hashCode() != v2.hashCode());
v2 = new Version("1.2.3");
assertTrue(!v1.equals(v2));
assertTrue(v1.hashCode() != v2.hashCode());
}
@Test
public void testShortForms() {
Version v = new Version("1.0.0-beta2");
assertEquals(v, new Version("1.0-beta2"));
assertEquals(v, new Version("1-beta2"));
v = new Version("1.0.0");
assertEquals(v, new Version("1.0"));
assertEquals(v, new Version("1"));
}
@Test
public void testMalformed() {
try {
new Version("1.2.");
fail();
} catch (IllegalArgumentException e) {
// expected
}
try {
new Version("1.2.3.");
fail();
} catch (IllegalArgumentException e) {
// expected
}
try {
new Version("1..3");
fail();
} catch (IllegalArgumentException e) {
// expected
}
try {
new Version(".2");
fail();
} catch (IllegalArgumentException e) {
// expected
}
try {
new Version("a");
fail();
} catch (IllegalArgumentException e) {
// expected
}
try {
new Version("-a");
fail();
} catch (IllegalArgumentException e) {
// expected
}
}
}