/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.vm;
import java.io.StringReader;
import org.junit.Assert;
import org.junit.Test;
import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.LanguageVersionHandler;
import net.sourceforge.pmd.lang.Parser;
import net.sourceforge.pmd.lang.ast.Node;
/**
* Unit test for VM parsing.
*
*/
public class VmParserTest {
private static final String VM_SRC = "<HTML><BODY>Hello $customer.Name <table> "
+ "#foreach($mud in $mudsOnSpecial)" + " #if ( $customer.hasPurchased($mud) )" + " <tr>" + " <td>"
+ " $flogger.getPromo( $mud )" + " </td>" + " </tr>" + " #elseif ($customer.broke) do stuff #end"
+ "\n " + "#end " + "</table>";
private static final String SRC2 = "#macro(tablerows $color $values ) " + "#foreach( $value in $values ) "
+ "<tr><td bgcolor=$color>$value</td></tr> " + "#end " + "#end "
+ "#set( $greatlakes = [\"Superior\",\"Michigan\",\"Huron\",\"Erie\",\"Ontario\"] ) "
+ "#set( $color = \"blue\" ) " + "<table> " + " #tablerows( $color $greatlakes ) " + "</table>";
private static final String SRC3 = "#if ( $c1 ) #if ( $c2)#end #end";
// private static final String VM_SRC = "#if( $mud == 1 ) blah #if ($dirt ==
// 2) stuff #end #end";
@Test
public void testParser() {
final Node node = parse(VM_SRC);
Assert.assertNotNull(node);
}
@Test
public void testParser2() {
final Node node = parse(SRC2);
Assert.assertNotNull(node);
}
@Test
public void testParser3() {
final Node node = parse(SRC3);
Assert.assertNotNull(node);
}
private Node parse(final String code) {
final LanguageVersionHandler vmLang = LanguageRegistry.getLanguage(VmLanguageModule.NAME).getDefaultVersion()
.getLanguageVersionHandler();
final Parser parser = vmLang.getParser(vmLang.getDefaultParserOptions());
final Node node = parser.parse(null, new StringReader(code));
return node;
}
}