package com.simpligility.maven.plugins.android.configuration;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.apache.maven.plugin.MojoExecutionException;
import org.junit.Test;
import com.simpligility.maven.plugins.android.configuration.VersionGenerator;
import static org.junit.Assert.*;
/**
* @author Pappy STÄ‚NESCU - pappy.stanescu@gmail.com
*/
public class VersionGeneratorTest
{
@Test
public void generate() throws MojoExecutionException
{
assertEquals( 2147483647, new VersionGenerator( "1,2,3,4" ).generate( "2.14.748.3647" ) );
assertEquals( 2147483647, new VersionGenerator( "4,3,2,1" ).generate( "2147.483.64.7" ) );
// that's weird versioning scheme :)
assertEquals( 2147483647, new VersionGenerator( "1,1,1,1,1,1,1,1,1,1" ).generate( "2.1.4.7.4.8.3.6.4.7" ) );
}
@Test
public void generateRegex() throws MojoExecutionException
{
assertEquals( 2147483647, new VersionGenerator( "1,2,3,4", "^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$" ).generate( "2.14.748.3647" ) );
assertEquals( 2147483647, new VersionGenerator( "4,3,2,1", "^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$" ).generate( "2147.483.64.7" ) );
}
@Test
public void compare() throws MojoExecutionException {
VersionGenerator gen = new VersionGenerator( "3,3,3" );
assertTrue( gen.generate( "1.0" ) < gen.generate( "1.0.1" ) );
assertTrue( gen.generate( "2.0" ) > gen.generate( "1.0.1" ) );
}
@Test
public void realCase() throws MojoExecutionException
{
VersionGenerator gen = new VersionGenerator( "1,1,2,1,4" );
int v1 = gen.generate( "4.1.16.8-SNAPSHOT.1946" );
int v2 = gen.generate( "4.1.17.8-SNAPSHOT.1246" );
assertEquals(411681946, v1 );
assertEquals(411781246, v2 );
assertTrue( v1 < v2 );
}
@Test
public void realCaseRegex() throws MojoExecutionException
{
{
VersionGenerator gen = new VersionGenerator( "1,1,2,1,4", "^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)(?:-[A-Z]+\\.(\\d+))?$" );
int v1 = gen.generate( "4.1.16.8-SNAPSHOT.1946" );
int v2 = gen.generate( "4.1.17.8" );
assertEquals( 411681946, v1 );
assertEquals( 411780000, v2 );
assertTrue( v1 < v2 );
}
{
VersionGenerator gen = new VersionGenerator( "4,3,3", "^(\\d+)\\.(\\d+)(?:-(\\d+)-g[0-9a-f]+(?:-dirty)?)?$" );
int v1 = gen.generate( "0.0-38-g493f883" );
int v2 = gen.generate( "0.1" );
assertEquals( 38, v1 );
assertEquals( 1000, v2 );
assertTrue( v1 < v2 );
}
{
VersionGenerator gen = new VersionGenerator( "3,2,2,3", "^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)" );
int v1 = gen.generate( "6.1.0.66-r1062275" );
int v2 = gen.generate( "6.2.0.0-r1234567" );
assertEquals( 60100066, v1 );
assertEquals( 60200000, v2 );
assertTrue( v1 < v2 );
}
}
@Test
public void mixedCase() throws MojoExecutionException
{
VersionGenerator g1 = new VersionGenerator( "1,1,2,1,4" );
VersionGenerator g2 = new VersionGenerator( "1,1,2,5" );
int v1 = g1.generate( "1.2.15.8-SNAPSHOT.1946" );
int v2 = g2.generate( "2.1.6-SNAPSHOT.1246" );
assertEquals(121581946, v1 );
assertEquals(210601246, v2 );
assertTrue( v1 < v2 );
}
@Test
public void faulty() throws MojoExecutionException
{
try
{
new VersionGenerator( "4,4,4" );
fail( "Expecting IllegalArgumentException" );
}
catch ( IllegalArgumentException e )
{
System.err.println( "OK: " + e );
}
try
{
new VersionGenerator( "4,3,3" ).generate( "2200.999.999" );
fail( "Expecting MojoExecutionException" );
}
catch ( MojoExecutionException e )
{
System.err.println( "OK: " + e );
}
try
{
new VersionGenerator( "4,3,3" ).generate( "2200.999.999" );
fail( "Expecting MojoExecutionException" );
}
catch ( MojoExecutionException e )
{
System.err.println( "OK: " + e );
}
try
{
new VersionGenerator( "4,3,3" ).generate( "1.1000.999" );
fail( "Expecting MojoExecutionException" );
}
catch ( MojoExecutionException e )
{
System.err.println( "OK: " + e );
}
}
}