001: /*
002: * PetraTest.java
003: * JUnit based test
004: *
005: * Created on August 18, 2006, 8:32 AM
006: */
007:
008: package org.netbeans.modules.languages.parser;
009:
010: import junit.framework.TestCase;
011: import java.util.ArrayList;
012: import java.util.Arrays;
013: import java.util.Collections;
014: import java.util.List;
015:
016: import org.netbeans.api.languages.ASTToken;
017: import org.netbeans.api.languages.ParseException;
018: import org.netbeans.modules.languages.Rule;
019: import org.netbeans.modules.languages.TestLanguage;
020:
021: /**
022: *
023: * @author Jan Jancura
024: */
025: public class FirstTest extends TestCase {
026:
027: public FirstTest(String testName) {
028: super (testName);
029: }
030:
031: public void testFirst1() throws ParseException {
032: TestLanguage language = new TestLanguage();
033: language.addToken(0, "a");
034: language.addToken(1, "b");
035: language.addToken(2, "c");
036: List<Rule> rules = new ArrayList<Rule>();
037: rules.add(Rule.create("S", new ArrayList(
038: Arrays
039: .asList(new Object[] {
040: "A",
041: ASTToken.create(language, "a", null, 0,
042: 0, null),
043: ASTToken.create(language, "b", null, 0,
044: 0, null) }))));
045: rules.add(Rule.create("A", new ArrayList(Arrays
046: .asList(new Object[] {}))));
047: rules.add(Rule.create("A", new ArrayList(
048: Arrays
049: .asList(new Object[] {
050: ASTToken.create(language, "a", null, 0,
051: 0, null),
052: ASTToken.create(language, "c", null, 0,
053: 0, null) }))));
054: First first = First.create(rules, language);
055: // S ystem.out.println(first);
056: // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
057: assertEquals(2, first.getRule(language.getNTID("A"),
058: TokenInputUtils.create(new ASTToken[] {
059: ASTToken.create(language, 0, "a", 0),
060: ASTToken.create(language, 1, "b", 0) }),
061: Collections.<Integer> emptySet())); // should return 1 if there is follow method computed correctly!!!!!
062: assertEquals(2, first.getRule(language.getNTID("A"),
063: TokenInputUtils.create(new ASTToken[] {
064: ASTToken.create(language, 0, "a", 0),
065: ASTToken.create(language, 2, "c", 0) }),
066: Collections.<Integer> emptySet()));
067: }
068:
069: public void testFirst2() throws ParseException {
070: TestLanguage language = new TestLanguage();
071: language.addToken(0, "a");
072: language.addToken(1, "b");
073: language.addToken(2, "c");
074: language.addToken(3, "d");
075: List<Rule> rules = new ArrayList<Rule>();
076: rules.add(Rule.create("S", new ArrayList(
077: Arrays
078: .asList(new Object[] {
079: "A",
080: ASTToken.create(language, "b", null, 0,
081: 0, null),
082: ASTToken.create(language, "c", null, 0,
083: 0, null) }))));
084: rules.add(Rule.create("S", new ArrayList(
085: Arrays
086: .asList(new Object[] {
087: ASTToken.create(language, "b", null, 0,
088: 0, null),
089: "A",
090: ASTToken.create(language, "c", null, 0,
091: 0, null) }))));
092: rules.add(Rule.create("S", new ArrayList(
093: Arrays
094: .asList(new Object[] {
095: "B",
096: ASTToken.create(language, "c", null, 0,
097: 0, null) }))));
098: rules.add(Rule.create("S", new ArrayList(
099: Arrays
100: .asList(new Object[] {
101: ASTToken.create(language, "b", null, 0,
102: 0, null),
103: ASTToken.create(language, "d", null, 0,
104: 0, null),
105: ASTToken.create(language, "a", null, 0,
106: 0, null) }))));
107: rules.add(Rule.create("A", new ArrayList(Arrays
108: .asList(new Object[] { ASTToken.create(language, "d",
109: null, 0, 0, null) }))));
110: rules.add(Rule.create("B", new ArrayList(Arrays
111: .asList(new Object[] { ASTToken.create(language, "d",
112: null, 0, 0, null) }))));
113: First first = First.create(rules, language);
114: // S ystem.out.println(first);
115: assertEquals(3, first.getRule(0, TokenInputUtils
116: .create(new ASTToken[] {
117: ASTToken.create(language, 1, "b", 0),
118: ASTToken.create(language, 3, "d", 0),
119: ASTToken.create(language, 0, "a", 0) }),
120: Collections.<Integer> emptySet()));
121: assertEquals(1, first.getRule(0, TokenInputUtils
122: .create(new ASTToken[] {
123: ASTToken.create(language, 1, "b", 0),
124: ASTToken.create(language, 3, "d", 0),
125: ASTToken.create(language, 2, "c", 0) }),
126: Collections.<Integer> emptySet()));
127: assertEquals(0, first.getRule(0, TokenInputUtils
128: .create(new ASTToken[] {
129: ASTToken.create(language, 3, "d", 0),
130: ASTToken.create(language, 1, "b", 0) }),
131: Collections.<Integer> emptySet()));
132: assertEquals(2, first.getRule(0, TokenInputUtils
133: .create(new ASTToken[] {
134: ASTToken.create(language, 3, "d", 0),
135: ASTToken.create(language, 2, "c", 0) }),
136: Collections.<Integer> emptySet()));
137: assertEquals(-2, first.getRule(0, TokenInputUtils
138: .create(new ASTToken[] { ASTToken.create(language, 3,
139: "d", 0) }), Collections.<Integer> emptySet()));
140: assertEquals(-2, first.getRule(0, TokenInputUtils
141: .create(new ASTToken[] {
142: ASTToken.create(language, 1, "b", 0),
143: ASTToken.create(language, 1, "b", 0) }),
144: Collections.<Integer> emptySet()));
145: }
146: }
|