Author: timotei
Date: Tue Jul 26 17:44:04 2011
New Revision: 50453
URL: http://svn.gna.org/viewcvs/wesnoth?rev=50453&view=rev
Log:
eclipse plugin: Add tests for parsing the configs
Added:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/plugin/
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/plugin/WMLParsingCampaignsConfigs.java
Modified:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/WMLTests.java
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/WMLTestsSuite.java
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/grammar/WMLFilesTests.java
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/grammar/WMLGrammarTokensTests.java
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wml/SimpleWMLParser.java
Modified: trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/WMLTests.java
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/WMLTests.java?rev=50453&r1=50452&r2=50453&view=diff
==============================================================================
--- trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/WMLTests.java
(original)
+++ trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/WMLTests.java Tue Jul
26 17:44:04 2011
@@ -1,5 +1,6 @@
package org.wesnoth.tests;
+import java.io.File;
import java.io.StringReader;
import java.util.List;
@@ -14,13 +15,17 @@
import org.eclipse.xtext.parser.antlr.ITokenDefProvider;
import org.eclipse.xtext.parser.antlr.Lexer;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.junit.Ignore;
import org.wesnoth.WMLStandaloneSetup;
import org.wesnoth.services.WMLGrammarAccess;
+import org.wesnoth.utils.StringUtils;
@SuppressWarnings( "all" )
public abstract class WMLTests extends AbstractXtextTests
{
- protected WMLGrammarAccess grammar;
+ protected WMLGrammarAccess grammar_;
+ protected String dataPath_ = "";
+
private Lexer lexer;
private ITokenDefProvider tokenDefProvider;
private IParser parser;
@@ -53,7 +58,14 @@
lexer = get( Lexer.class );
tokenDefProvider = get( ITokenDefProvider.class );
parser = get( IParser.class );
- grammar = ( WMLGrammarAccess ) getGrammarAccess( );
+ grammar_ = ( WMLGrammarAccess ) getGrammarAccess( );
+
+ // get the wesnoth data path from the user
+ dataPath_ = System.getProperty( "wesnothDataDir" );
+ if ( StringUtils.isNullOrEmpty( dataPath_ ) || ! new File( dataPath_
).exists( ) ) {
+ System.out.println( "Please set the wesnoth data dir before
testing!." );
+ assertTrue( false );
+ }
}
@Override
@@ -64,7 +76,8 @@
lexer = null;
tokenDefProvider = null;
parser = null;
- grammar = null;
+ grammar_ = null;
+ dataPath_ = null;
}
/**
@@ -174,4 +187,28 @@
String type = getTokenType( tokens.get( 0 ) );
assertFalse( keyword, type.charAt( 0 ) == '\'' );
}
+
+ @Ignore
+ public void testPath( String path )
+ {
+ File theFile = new File( path );
+
+ if ( ! theFile.exists( ) ) {
+ System.out.println( "Skipping non-existent path:" + path );
+ return;
+ }
+
+ if ( theFile.isFile( ) )
+ testFile( path );
+ else {
+ for ( File file : theFile.listFiles( ) ) {
+ testPath( file.getAbsolutePath( ) );
+ }
+ }
+ }
+
+ @Ignore
+ public void testFile( String path ) {
+
+ }
}
Modified:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/WMLTestsSuite.java
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/WMLTestsSuite.java?rev=50453&r1=50452&r2=50453&view=diff
==============================================================================
--- trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/WMLTestsSuite.java
(original)
+++ trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/WMLTestsSuite.java
Tue Jul 26 17:44:04 2011
@@ -8,23 +8,19 @@
*******************************************************************************/
package org.wesnoth.tests;
-import junit.framework.TestSuite;
-
-import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
import org.wesnoth.tests.grammar.WMLFilesTests;
import org.wesnoth.tests.grammar.WMLGrammarTokensTests;
+import org.wesnoth.tests.plugin.WMLParsingCampaignsConfigs;
+@RunWith( Suite.class )
[email protected](
+ {
+ WMLGrammarTokensTests.class,
+ WMLFilesTests.class,
+ WMLParsingCampaignsConfigs.class,
+ } )
public class WMLTestsSuite
{
- @Test
- public static TestSuite suite( )
- {
- TestSuite suite = new TestSuite( );
-
- // grammar
- suite.addTestSuite( WMLFilesTests.class );
- suite.addTestSuite( WMLGrammarTokensTests.class );
-
- return suite;
- }
}
Modified:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/grammar/WMLFilesTests.java
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/grammar/WMLFilesTests.java?rev=50453&r1=50452&r2=50453&view=diff
==============================================================================
---
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/grammar/WMLFilesTests.java
(original)
+++
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/grammar/WMLFilesTests.java
Tue Jul 26 17:44:04 2011
@@ -8,40 +8,18 @@
*******************************************************************************/
package org.wesnoth.tests.grammar;
-import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import org.eclipse.xtext.parser.IParseResult;
import org.junit.Ignore;
import org.wesnoth.tests.WMLTests;
-import org.wesnoth.utils.StringUtils;
/**
* This tests test the data/core directory and each campaign
*/
public class WMLFilesTests extends WMLTests
{
- protected String dataPath_ = "";
-
- @Override
- protected void setUp() throws Exception
- {
- super.setUp( );
-
- // get the wesnoth data path from the user
- dataPath_ = System.getProperty( "wesnothDataDir" );
- if ( StringUtils.isNullOrEmpty( dataPath_ ) || ! new File( dataPath_
).exists( ) )
- throw new Exception( "Please set the wesnoth data dir before
testing!." );
- }
-
- @Override
- protected void tearDown() throws Exception
- {
- super.tearDown( );
- dataPath_ = null;
- }
-
public void testCoreFiles() throws FileNotFoundException
{
testPath( dataPath_ + "/core/" );
@@ -137,25 +115,7 @@
testPath( dataPath_ + "/campaigns/Under_the_Burning_Suns/" );
}
- @Ignore
- public void testPath( String path )
- {
- File theFile = new File( path );
-
- if ( ! theFile.exists( ) ) {
- System.out.println( "Skipping non-existent path:" + path );
- return;
- }
-
- if ( theFile.isFile( ) )
- testFile( path );
- else {
- for ( File file : theFile.listFiles( ) ) {
- testPath( file.getAbsolutePath( ) );
- }
- }
- }
-
+ @Override
@Ignore
public void testFile( String path )
{
@@ -174,7 +134,7 @@
catch ( FileNotFoundException e ) {
e.printStackTrace();
//should not reach here.
- assertEquals( true, false );
+ assertTrue( false );
}
}
}
Modified:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/grammar/WMLGrammarTokensTests.java
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/grammar/WMLGrammarTokensTests.java?rev=50453&r1=50452&r2=50453&view=diff
==============================================================================
---
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/grammar/WMLGrammarTokensTests.java
(original)
+++
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/grammar/WMLGrammarTokensTests.java
Tue Jul 26 17:44:04 2011
@@ -33,7 +33,7 @@
public void testTokenSequences()
{
- checkParsing( "amount=+$random\r\n", grammar.getWMLKeyRule( ) );
+ checkParsing( "amount=+$random\r\n", grammar_.getWMLKeyRule( ) );
checkTokenisation( "123 abc", ID, WS, ID );
checkTokenisation( "123 \t#comment\n abc", ID, WS, SL_COMMENT, WS, ID
);
Added:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/plugin/WMLParsingCampaignsConfigs.java
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/plugin/WMLParsingCampaignsConfigs.java?rev=50453&view=auto
==============================================================================
---
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/plugin/WMLParsingCampaignsConfigs.java
(added)
+++
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/tests/plugin/WMLParsingCampaignsConfigs.java
Tue Jul 26 17:44:04 2011
@@ -1,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2011 by Timotei Dolean <[email protected]>
+ *
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+
*******************************************************************************/
+package org.wesnoth.tests.plugin;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+import org.wesnoth.tests.WMLTests;
+import org.wesnoth.utils.StringUtils;
+import org.wesnoth.wml.SimpleWMLParser;
+import org.wesnoth.wml.WMLConfig;
+
+/**
+ * The class tests the parsed campaigns config files
+ */
+@RunWith( value = Parameterized.class )
+public class WMLParsingCampaignsConfigs extends WMLTests
+{
+ private String campaignDir_;
+ private String campaignId;
+ private List<String> scenarioIds_;
+
+ private List<String> parsedCampaignIds_;
+ private List<String> parsedScenarioIds_;
+
+ public WMLParsingCampaignsConfigs( String[] data )
+ {
+ try {
+ setUp( );
+ }
+ catch ( Exception e ) {
+ e.printStackTrace();
+ assertTrue ( false );
+ }
+
+ campaignDir_ = data[0];
+ campaignId = data[1];
+ scenarioIds_ = new ArrayList<String>();
+
+ parsedCampaignIds_ = new ArrayList<String>();
+ parsedScenarioIds_ = new ArrayList<String>();
+
+ for( int i = data.length - 1 ; i > 1; --i )
+ scenarioIds_.add( data[i] );
+
+ // gather all info
+ testPath( dataPath_ + "/campaigns/" + campaignDir_ + "/" );
+ }
+
+ @Override
+ @Ignore
+ public void testFile( String path )
+ {
+ // just config files
+ if ( ! path.endsWith( ".cfg" ) )
+ return;
+
+ try {
+ SimpleWMLParser wmlParser = new SimpleWMLParser( new File( path ),
getParser( ) );
+ wmlParser.parse( );
+ WMLConfig config = wmlParser.getParsedConfig( );
+
+ if ( !StringUtils.isNullOrEmpty( config.ScenarioId ) )
+ parsedScenarioIds_.add( config.ScenarioId );
+
+ if ( !StringUtils.isNullOrEmpty( config.CampaignId ) )
+ parsedCampaignIds_.add( config.CampaignId );
+
+ }
+ catch ( FileNotFoundException e ) {
+ e.printStackTrace();
+ assertTrue( false );
+ }
+ }
+
+ @Test
+ public void testCampaignId()
+ {
+ assertTrue( parsedCampaignIds_.size( ) == 1 );
+ assertEquals( campaignId, parsedCampaignIds_.get( 0 ) );
+ }
+
+ @Test
+ public void testScenarioIds()
+ {
+ assertEquals( scenarioIds_.size( ), parsedScenarioIds_.size( ) );
+
+ parsedScenarioIds_.removeAll( scenarioIds_ );
+
+ // no scenario should have remained in the list
+ assertEquals( 0, parsedScenarioIds_.size( ) );
+ }
+
+ @Parameters
+ public static Collection< Object[] > data()
+ {
+ return Arrays.asList( new Object[][] {
+ { new String[]{ "An_Orcish_Incursion", "An_Orcish_Incursion",
"01_Defend_the_Forest", "02_Assassins", "03_Wasteland", "04_Valley_of_Trolls",
"05_Linaera_the_Quick", "06_A_Detour_through_the_Swamp", "07_Showdown" } },
+ { new String[]{ "Dead_Water", "Dead_Water", "01_Invasion",
"02_Flight", "03_Wolf_Coast", "04_Slavers", "05_Tirigaz",
"06_Uncharted_Islands", "07_Bilheld", "08_Talking_to_Tyegea", "09_The_Mage",
"10_The_Flaming_Sword", "11_Getting_Help", "12_Revenge", "13_Epilogue" } }
+ } );
+ }
+}
Modified:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wml/SimpleWMLParser.java
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wml/SimpleWMLParser.java?rev=50453&r1=50452&r2=50453&view=diff
==============================================================================
--- trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wml/SimpleWMLParser.java
(original)
+++ trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wml/SimpleWMLParser.java
Tue Jul 26 17:44:04 2011
@@ -8,6 +8,9 @@
*******************************************************************************/
package org.wesnoth.wml;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
@@ -15,6 +18,8 @@
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
+import org.eclipse.xtext.parser.IParseResult;
+import org.eclipse.xtext.parser.IParser;
import org.wesnoth.Logger;
import org.wesnoth.projects.ProjectCache;
import org.wesnoth.utils.ResourceUtils;
@@ -29,7 +34,7 @@
public class SimpleWMLParser
{
protected WMLConfig config_;
- protected IFile file_;
+ protected WMLRoot root_;
protected ProjectCache projectCache_;
protected int dependencyIndex_;
protected List<WMLTag> tags_;
@@ -55,7 +60,7 @@
public SimpleWMLParser( IFile file, WMLConfig config, ProjectCache
projCache )
{
config_ = Preconditions.checkNotNull( config );
- file_ = file;
+ root_ = ResourceUtils.getWMLRoot( file );
projectCache_ = projCache;
tags_ = new ArrayList<WMLTag>();
@@ -64,12 +69,24 @@
}
/**
+ * Creates a new parser that can be called on files outside the workspace
+ */
+ public SimpleWMLParser( File file, IParser parser ) throws
FileNotFoundException
+ {
+ projectCache_ = null;
+
+ IParseResult result = parser.parse( new FileReader( file ) );
+ root_ = ( WMLRoot ) result.getRootASTElement( );
+
+ config_ = new WMLConfig( file.getAbsolutePath( ) );
+ }
+
+ /**
* Parses the config. The resulted config will be available in {@link
#getParsedConfig()}
*/
public void parse( )
{
- WMLRoot root = ResourceUtils.getWMLRoot( file_ );
- TreeIterator<EObject> itor = root.eAllContents( );
+ TreeIterator<EObject> itor = root_.eAllContents( );
WMLTag currentTag = null;
String currentTagName = "";
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits