package org.develnext.jphp.core.syntax;
import org.junit.Assert;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.junit.runners.MethodSorters;
import org.develnext.jphp.core.tokenizer.token.Token;
import org.develnext.jphp.core.tokenizer.token.stmt.ExprStmtToken;
import org.develnext.jphp.core.tokenizer.token.stmt.NamespaceStmtToken;
import java.util.List;
@RunWith(JUnit4.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class NamespaceSyntaxTest extends AbstractSyntaxTestCase {
@Test
public void testSimple(){
List<Token> tree = getSyntaxTree("namespace; 123;");
Assert.assertTrue(tree.size() == 2);
Assert.assertTrue(tree.get(0) instanceof NamespaceStmtToken);
Assert.assertTrue(tree.get(1) instanceof ExprStmtToken);
NamespaceStmtToken token = (NamespaceStmtToken)tree.get(0);
Assert.assertNull(token.getTree());
Assert.assertNull(token.getName());
}
@Test
public void testLongName(){
List<Token> tree = getSyntaxTree("namespace A\\B\\C;");
Assert.assertTrue(tree.size() == 1);
Assert.assertTrue(tree.get(0) instanceof NamespaceStmtToken);
NamespaceStmtToken token = (NamespaceStmtToken)tree.get(0);
Assert.assertNull(token.getTree());
Assert.assertEquals("A\\B\\C", token.getName().toName());
}
@Test
public void testMultiple(){
List<Token> tree = getSyntaxTree("namespace A { 123; } namespace B { 321; }");
Assert.assertTrue(tree.size() == 4);
NamespaceStmtToken token = (NamespaceStmtToken)tree.get(0);
Assert.assertNotNull(token.getName());
Assert.assertEquals("A", token.getName().toName());
Assert.assertNull(token.getTree());
token = (NamespaceStmtToken)tree.get(2);
Assert.assertNotNull(token.getName());
Assert.assertEquals("B", token.getName().toName());
Assert.assertNull(token.getTree());
}
}