Package org.nutz.ioc.java

Source Code of org.nutz.ioc.java.ChainParsingTest

package org.nutz.ioc.java;

import static org.junit.Assert.*;

import org.junit.Test;
import org.nutz.ioc.IocMaking;
import org.nutz.ioc.impl.ScopeContext;

public class ChainParsingTest {

  private static String NAME(String name) {
    return "org.nutz.ioc.java.TFunc." + name;
  }

  private static ChainNode N(String s) {
    return new ChainParsing(s).getNode();
  }

  @Test(expected = RuntimeException.class)
  public void test_nostatic_function() {
    N(NAME("noStatic"));
  }

  @Test(expected = RuntimeException.class)
  public void test_unexists_function() {
    N(NAME("unexists"));
  }

  @Test
  public void test_normal_static_call() {
    String s = NAME("getAbc()");
    ChainNode cn = N(s);
    assertEquals(s, cn.toString());
    assertEquals("ABC", cn.eval(null));

    s = NAME("getAbc");
    cn = N(s);
    assertEquals(NAME("getAbc()"), cn.toString());
    assertEquals("ABC", cn.eval(null));

    String s2 = NAME("abc");
    cn = N(s2);
    assertEquals(NAME("getAbc()"), cn.toString());
    assertEquals("ABC", cn.eval(null));
  }

  @Test
  public void test_with_arguments() {
    String s = NAME("checkCase (true, 'aBc' )");
    ChainNode cn = N(s);
    assertEquals(NAME("checkCase(true, 'aBc')"), cn.toString());
    assertEquals("ABC", cn.eval(null));

    s = NAME("checkCase (false, 'aBc' )");
    cn = N(s);
    assertEquals("abc", cn.eval(null));
  }

  @Test
  public void test_constants_ioc() {
    String s = "@Ioc.get(null, 'xyz')";
    ChainNode cn = N(s);
    assertEquals(s, cn.toString());
  }

  @Test
  public void test_constants_name() {
    String s = "@Name.substring(0, 6)";
    ChainNode cn = N(s);
    assertEquals(s, cn.toString());
    IocMaking ing = new IocMaking(null, null, null, null, null, "123456789");
    assertEquals("123456", cn.eval(ing));
  }

  @Test
  public void test_constants_context() {
    String s = "@Context.save('xx', 'tt', null)";
    ChainNode cn = N(s);
    assertEquals(s, cn.toString());
    IocMaking ing = new IocMaking(null, null, new ScopeContext("app"), null, null, null);
    assertFalse((Boolean) cn.eval(ing));
  }

  @Test
  public void test_normal_ioc_object() {
    String s = "$obj.xyz()";
    ChainNode cn = N(s);
    assertEquals(s, cn.toString());
  }

  @Test
  public void test_normal_ioc_object_with_args() {
    String s = "$obj.xyz($tt, @Ioc, true, 34, 'TbT')";
    ChainNode cn = N(s);
    assertEquals(s, cn.toString());
  }

  @Test
  public void test_static_field() {
    N(NAME("XNAME"));
  }
}
TOP

Related Classes of org.nutz.ioc.java.ChainParsingTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.