/**
* Copyright (C) 2008-2010, Squale Project - http://www.squale.org
*
* This file is part of Squale.
*
* Squale is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or any later version.
*
* Squale 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 Lesser General Public License
* along with Squale. If not, see <http://www.gnu.org/licenses/>.
*/
package org.squale.squalix.tools.compiling.java.parser.wsad;
import java.util.LinkedList;
import org.squale.squalecommon.SqualeTestCase;
import org.squale.squalix.tools.compiling.java.beans.JWSADProject;
/**
* Test du parser de fichier de configuration WSAD
*/
public class JWSADParserTest
extends SqualeTestCase
{
/**
* Test de parsing du fichier .classpath Ce tests suppose qu'il est ex�cut� dans le r�pertoire du projet WSAD
* courant
*/
public void testExecuteWSAD()
{
// Le fait de creer un projet vide permet son traitement avec junit
// car il cherchera � travailler sur le r�pertoire courant
JWSADProject project = new JWSADProject();
project.setPath( "./" );
assertEquals( "Le classpath devrait �tre vide", project.getClasspath(), "" );
assertEquals( "Le chemin des sources devrait �tre vide", project.getSrcPath(), "" );
assertEquals( "Le classpath des librairies export�es devrait �tre vide", project.getExportedLib(), "" );
LinkedList list = new LinkedList();
list.add( project );
try
{
JWSADParser parser = new JWSADParser( list );
parser.execute();
}
catch ( Exception e )
{
e.printStackTrace();
fail( "Unexpected exception" );
}
assertTrue( "Le classpath n'a pas �t� pars�", project.getClasspath().length() > 0 );
// Le projet n'exporte aucune librairie
assertTrue( "Le classpath des librairies export�es devrait �tre vide", project.getExportedLib().length() == 0 );
assertTrue( "Le fichier .classpath a mal �t� pars�", project.getSrcPath().length() > 0 );
assertFalse( "Le projet n'est pas compil�", project.isCompiled() );
assertTrue( "Le projet est un projet WSAD", project.isWSAD() );
}
/**
* Test de parsing en l'absence du fichier .classpath
*/
public void testExecuteNonWSAD()
{
// Le fait de creer un projet vide permet son traitement avec junit
// car il cherchera � travailler sur le r�pertoire courant
JWSADProject project = new JWSADProject();
project.setPath( "../" );
assertEquals( "Le classpath ne devrait �tre vide", project.getClasspath(), "" );
assertEquals( "Le chemin des sources devrait �tre nul", project.getSrcPath(), "" );
LinkedList list = new LinkedList();
list.add( project );
try
{
JWSADParser parser = new JWSADParser( list );
parser.execute();
}
catch ( Exception e )
{
e.printStackTrace();
fail( "Unexpected exception" );
}
assertEquals( "Le classpath ne devrait �tre vide", project.getClasspath(), "" );
assertEquals( "Le chemin des sources devrait �tre nul", project.getSrcPath(), "" );
assertTrue( "Le projet est consid�r� compil�", project.isCompiled() );
assertFalse( "Le projet est un projet WSAD", project.isWSAD() );
}
/**
* Teste l'ajout des librairies export�es dans les classpath
*/
public void testWSADProjects()
{
final String root = "./data/ClasspathForJavaCompilingTest/WSADProjects/";
LinkedList list = new LinkedList();
// Projet D
final String DRoot = root + "ProjectD/";
JWSADProject projectD = new JWSADProject();
projectD.setName( "ProjectD" );
projectD.setPath( DRoot );
list.add( projectD );
// Projet C
final String CRoot = root + "ProjectC/";
JWSADProject projectC = new JWSADProject();
projectC.setName( "ProjectC" );
projectC.setPath( CRoot );
list.add( projectC );
// Projet B
final String BRoot = root + "ProjectB/";
JWSADProject projectB = new JWSADProject();
projectB.setName( "ProjectB" );
projectB.setPath( BRoot );
list.add( projectB );
// Projet A
final String ARoot = root + "ProjectA/";
JWSADProject projectA = new JWSADProject();
projectA.setName( "ProjectA" );
projectA.setPath( ARoot );
list.add( projectA );
try
{
JWSADParser parser = new JWSADParser( list );
parser.execute();
}
catch ( Exception e )
{
e.printStackTrace();
fail( "Unexpected exception" );
}
// V�rification projet D
assertTrue( "Le projet D est un projet WSAD", projectD.isWSAD() );
assertEquals( "Le chemin des sources de D", DRoot + "src/;", projectD.getSrcPath() );
assertTrue( "Le classpath de D a exportedDLib.jar", projectD.getClasspath().matches( ".*exportedDLib.*" ) );
assertTrue( "Le classpath de D a DLib.jar", projectD.getClasspath().matches( ".*/DLib.*" ) );
assertTrue( "Les librairies export�es de D ont exportedDLib.jar",
projectD.getExportedLib().matches( ".*exportedDLib.*" ) );
// V�rification projet C
assertTrue( "Le projet C est un projet WSAD", projectC.isWSAD() );
assertEquals( "Le chemin des sources de C", CRoot + "src/;", projectC.getSrcPath() );
assertTrue( "Le classpath de C a exportedCLib.jar", projectC.getClasspath().matches( ".*/exportedCLib.*" ) );
assertTrue( "Le classpath de C a la librairie export�e de D",
projectC.getClasspath().matches( ".*exportedDLib.*" ) );
assertFalse( "Le classpath de C n'a pas DLib.jar", projectC.getClasspath().matches( ".*/DLib.*" ) );
assertTrue( "Les librairies export�es de C ont exportedCLib.jar",
projectC.getExportedLib().matches( ".*exportedCLib.*" ) );
// V�rification projet B
assertTrue( "Le projet B est un projet WSAD", projectB.isWSAD() );
assertEquals( "Le chemin des sources de B", BRoot + "src/;", projectB.getSrcPath() );
assertTrue( "Le classpath de B a exportedBLib.jar", projectB.getClasspath().matches( ".*exportedBLib.*" ) );
assertTrue( "Le classpath de B a la librairie export�e de C",
projectB.getClasspath().matches( ".*exportedCLib.*" ) );
assertTrue( "Le classpath de B a la librairie export�e de D",
projectB.getClasspath().matches( ".*exportedDLib.*" ) );
assertTrue( "Les librairies export�es de B ont exportedBLib.jar",
projectB.getExportedLib().matches( ".*exportedBLib.*" ) );
// V�rification projet A
assertTrue( "Le projet a est un projet WSAD", projectA.isWSAD() );
assertTrue( "Le classpath de A a exportedALib.jar", projectA.getClasspath().matches( ".*exportedALib.*" ) );
assertTrue( "Le classpath de A a la librairie export�e de B",
projectA.getClasspath().matches( ".*exportedBLib.*" ) );
assertTrue( "Le classpath de A a la librairie export�e de C",
projectA.getClasspath().matches( ".*exportedCLib.*" ) );
assertTrue( "Le classpath de A a la librairie export�e de D",
projectA.getClasspath().matches( ".*exportedDLib.*" ) );
assertTrue( "Les librairies export�es de A ont exportedALib.jar",
projectA.getExportedLib().matches( ".*exportedALib.*" ) );
}
}