package de.saumya.mojo.gems; import java.io.IOException; import junit.framework.TestCase; import org.codehaus.plexus.util.IOUtil; public class Maven2GemVersionConverterTest extends TestCase { private static final String SEP = System.getProperty("line.separator"); private Maven2GemVersionConverter converter; @Override protected void setUp() throws Exception { super.setUp(); converter = new Maven2GemVersionConverter(); } public void testSimple() { check( "1", "1.0.0", false ); check( "1.2", "1.2.0", false ); check( "1.2.3", "1.2.3", true ); check( "1.2-SNAPSHOT", "1.2.0.snapshot", false ); check( "1.2.3-SNAPSHOT", "1.2.3.snapshot", false ); check( "1.2-3", "1.2.0.3", false ); check( "1_2_3", "1.0.0.2.3", false ); check( "1-2-3", "1.0.0.2.3", false ); check( "1-2.3", "1.0.0.2.3", false ); check( "1.2.3a", "1.2.3.a", false ); check( "1.2.3alpha", "1.2.3.a", false ); check( "1.2.3beta", "1.2.3.b", false ); check( "1.2.3.gamma", "1.2.3.g", false ); check( "2.3.3-RC1", "2.3.3.r.1", false ); check( "1.2.3-alpha-2", "1.2.3.a.2", false ); check( "12.23beta23", "12.23.b.23", false ); check( "3.0-alpha-1.20020912.045138", "3.0.0.a.1.20020912.045138", false ); check( "2.2-b1", "2.2.0.b.1", false ); check( "2.2b1", "2.2.b.1", false ); check( "3.3.2.GA", "3.3.2.ga", false ); check( "3.3.0.SP1", "3.3.0.s.1", false ); check( "3.3.0.CR1", "3.3.0.r.1", false ); check( "1.0.0.RC3_JONAS", "1.0.0.r.3.jonas", false ); check( "1.1.0-M1b-JONAS", "1.1.0.m.1.b.jonas", false ); check( "2.0-m5", "2.0.0.m.5", false ); check( "2.1_3", "2.1.0.3", false ); check( "1.2beta4", "1.2.b.4", false ); check( "R8pre2", "0.0.1.r.8.pre.2", false ); check( "R8RC2.3", "0.0.1.r.8.r.2.3", false ); check( "Somethin", "0.0.1.somethin", false ); } public void testMore() throws IOException { String[] versions = IOUtil.toString( Thread.currentThread().getContextClassLoader().getResourceAsStream( "versions.txt" ) ) .split( SEP ); for ( String version : versions ) { String gemVersion = converter.createGemVersion( version ); assertTrue( Maven2GemVersionConverter.gemVersionPattern.matcher( gemVersion ).matches() ); assertNotSame( Maven2GemVersionConverter.DUMMY_VERSION, gemVersion ); } } // == protected void check( String mavenVersion, String expectedVersion, boolean inputIsProperGemVersion ) { String gemVersion = converter.createGemVersion( mavenVersion ); if ( expectedVersion != null ) { assertEquals( "Expected and got versions differ!", expectedVersion, gemVersion ); } if ( inputIsProperGemVersion ) { assertTrue( "The input is proper Gem version, SAME INSTANCE of String should be returned!", mavenVersion == gemVersion ); } else { assertFalse( "The input is not a proper Gem version, NEW INSTANCE of String should be returned!", mavenVersion == gemVersion ); } assertTrue( "The version \"" + gemVersion + "\" is not a proper Gem version!", isProperGemVersion( gemVersion ) ); } protected boolean isProperGemVersion( String gemVersion ) { return Maven2GemVersionConverter.gemVersionPattern.matcher( gemVersion ).matches(); } }