/**
* Copyright (C) 2012 https://github.com/tenderowls/haxemojos
*
* 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 com.tenderowls.opensource.haxemojos.utils;
import org.testng.Assert;
import org.testng.annotations.Test;
public class NativeProgramVersionTest {
@Test
public void versionTest0() {
try {
NativeProgramVersion version = new NativeProgramVersion("2.10");
Assert.assertEquals(version.getMajor(), 2, "major");
Assert.assertEquals(version.getMinor(), 10, "minor");
Assert.assertEquals(version.getRevision(), 0, "revision");
Assert.assertFalse(version.isReleaseCandidate(), "isReleaseCandidate");
Assert.assertFalse(version.isSnapshot(), "isSnapshot");
} catch (NativeProgramVersion.NativeProgramVersionException e) {
Assert.fail();
}
}
@Test
public void versionTest1() {
try {
NativeProgramVersion version = new NativeProgramVersion("3.0");
Assert.assertEquals(version.getMajor(), 3, "major");
Assert.assertEquals(version.getMinor(), 0, "minor");
Assert.assertEquals(version.getRevision(), 0, "revision");
Assert.assertFalse(version.isReleaseCandidate(), "isReleaseCandidate");
Assert.assertFalse(version.isSnapshot(), "isSnapshot");
} catch (NativeProgramVersion.NativeProgramVersionException e) {
Assert.fail();
}
}
@Test
public void versionTest2() {
try {
NativeProgramVersion version = new NativeProgramVersion("3.0.1");
Assert.assertEquals(version.getMajor(), 3, "major");
Assert.assertEquals(version.getMinor(), 0, "minor");
Assert.assertEquals(version.getRevision(), 1, "revision");
Assert.assertFalse(version.isReleaseCandidate(), "isReleaseCandidate");
Assert.assertFalse(version.isSnapshot(), "isSnapshot");
} catch (NativeProgramVersion.NativeProgramVersionException e) {
Assert.fail();
}
}
@Test
public void versionTest3() {
try {
NativeProgramVersion version = new NativeProgramVersion("3.0.1-SNAPSHOT");
Assert.assertEquals(version.getMajor(), 3, "major");
Assert.assertEquals(version.getMinor(), 0, "minor");
Assert.assertEquals(version.getRevision(), 1, "revision");
Assert.assertFalse(version.isReleaseCandidate(), "isReleaseCandidate");
Assert.assertTrue(version.isSnapshot(), "isSnapshot");
} catch (NativeProgramVersion.NativeProgramVersionException e) {
Assert.fail();
}
}
@Test
public void versionTest4() {
try {
NativeProgramVersion version = new NativeProgramVersion("3.0.1-rc1");
Assert.assertTrue(version.isReleaseCandidate(), "isReleaseCandidate");
Assert.assertEquals(version.getMajor(), 3, "major");
Assert.assertEquals(version.getMinor(), 0, "minor");
Assert.assertEquals(version.getRevision(), 1, "revision");
Assert.assertEquals(version.getReleaseCandidate(), 1, "getReleaseCandidate");
Assert.assertFalse(version.isSnapshot(), "isSnapshot");
} catch (NativeProgramVersion.NativeProgramVersionException e) {
Assert.fail();
}
}
@Test
public void formatTest0() {
try {
NativeProgramVersion version = new NativeProgramVersion("3-rc1");
Assert.fail();
} catch (NativeProgramVersion.NativeProgramVersionException e) {
}
}
@Test
public void formatTest1() {
try {
NativeProgramVersion version = new NativeProgramVersion("3.0.0-alpha1");
Assert.fail();
} catch (NativeProgramVersion.NativeProgramVersionException e) {
}
}
@Test
public void formatTest2() {
try {
NativeProgramVersion version = new NativeProgramVersion("3.0.0.0-SNAPSHOT");
Assert.fail();
} catch (NativeProgramVersion.NativeProgramVersionException e) {
}
}
@Test
public void compareTest0() {
compareTestTemplate("3.0.0", "3.0.0", 0);
compareTestTemplate("3.0.0", "3.0", 0);
compareTestTemplate("2.10", "2.10", 0);
compareTestTemplate("3.0.1-SNAPSHOT", "3.0.1-SNAPSHOT", 0);
compareTestTemplate("3.0.1-rc1", "3.0.1-rc1", 0);
}
@Test
public void compareTest1() {
compareTestTemplate("3.0.0", "2.9.9", 1);
compareTestTemplate("3.1.0", "3.0.1", 1);
compareTestTemplate("3.0.2", "3.0.1", 1);
compareTestTemplate("3.0.1", "3.0.1-SNAPSHOT", 1);
compareTestTemplate("3.0.1", "3.0.1-rc1", 1);
compareTestTemplate("3.0.1-rc2", "3.0.1-rc1", 1);
compareTestTemplate("3.0.1-rc2", "3.0.1-SNAPSHOT", 1);
}
@Test
public void compareTest2() {
compareTestTemplate("2.0.0", "3.0.0", -1);
compareTestTemplate("3.0.0", "3.1.0", -1);
compareTestTemplate("3.0.0", "3.0.1", -1);
compareTestTemplate("3.0.0-SNAPSHOT", "3.0.0", -1);
compareTestTemplate("3.0.0-rc1", "3.0.0", -1);
compareTestTemplate("3.0.0-SNAPSHOT", "3.0.0-rc1", -1);
compareTestTemplate("3.0.0-rc1", "3.0.0-rc2", -1);
}
private void compareTestTemplate(String a, String b, int expected) {
try {
// compare
NativeProgramVersion version1 = new NativeProgramVersion(a);
NativeProgramVersion version2 = new NativeProgramVersion(b);
Assert.assertEquals(version1.compare(version2), expected);
} catch (NativeProgramVersion.NativeProgramVersionException e) {
Assert.fail();
}
}
}