Package jfun.yan

Examples of jfun.yan.Container


    assertEquals(2, arr.length);
    assertEquals("hello", arr[0]);
    assertEquals(new Integer(20), arr[1]);
  }
  public void testBadArrayComponentWithRaggedType(){
    final Container yan = createYanContainer();
    yan.registerValue("age", new Integer(20));
    yan.registerComponent("target", Components.array(
        new Component[]{Components.value("hello"),
            Components.useKey("age")}, CharSequence.class));
   
    try{
      yan.verify();
      fail("should have failed with illegal argument");
    }
    catch(TypeMismatchException e){
      assertEquals("type mismatch: the #1 element is of java.lang.Integer, while java.lang.CharSequence is expected.", e.getMessage());
    }
View Full Code Here


    catch(TypeMismatchException e){
      assertEquals("type mismatch: the #1 element is of java.lang.Integer, while java.lang.CharSequence is expected.", e.getMessage());
    }
  }
  public void testListComponent(){
    final Container yan = createYanContainer();
    yan.registerComponent(Components.list(new Creator[]{
        Components.value("hello"), Components.value("world")}
    ));
    assertEquals(java.util.ArrayList.class,
        yan.verifyComponent(yan.getComponentOfType(java.util.List.class)));
    final java.util.List list = (java.util.List)yan.getInstanceOfType(java.util.ArrayList.class);
    assertEquals(2, list.size());
    assertEquals("hello", list.get(0));
    assertEquals("world", list.get(1));
  }
View Full Code Here

    assertEquals(2, list.size());
    assertEquals("hello", list.get(0));
    assertEquals("world", list.get(1));
  }
  public void testCyclicListComponent(){
    final Container yan = createYanContainer();
    yan.registerComponent("target", Components.list(new Creator[]{
        Components.value("hello"), Components.useKey("target")}
    ));
    try{
      yan.verifyKey("target");
      fail("should have failed with cyclic dependency");
    }
    catch(CyclicDependencyException e){
      assertEquals(4, e.getResolutionTrace().size());
      assertEntry(e, 0, "list [hello,useKey <target>]");
View Full Code Here

      assertEntry(e, 2, "list [hello,useKey <target>]");
      assertEntry(e, 3, "verifyKey <target>");
    }
  }  
  public void testCyclicArrayComponent(){
    final Container yan = createYanContainer();
    yan.registerComponent("target", Components.array(new Component[]{
        Components.value("hello"), Components.useKey("target")}
    ));
    try{
      yan.verifyKey("target");
      fail("should have failed with cyclic dependency");
    }
    catch(CyclicDependencyException e){
      assertTraceSize(e, 4);
      assertEntry(e, 0, "array [hello,useKey <target>]:java.lang.Object[]");
View Full Code Here

      assertEntry(e, 2, "array [hello,useKey <target>]:java.lang.Object[]");
      assertEntry(e, 3, "verifyKey <target>");
    }
  }
  public void testUseAll(){
    final Container yan = createYanContainer();
    yan.registerComponent("target", Components.useAll(String.class));
    assertEquals(0, ((java.util.List)yan.getInstanceOfType(java.util.List.class)).size());
    yan.registerValue("abc");
    yan.registerValue("yet another", "cde");
    java.util.List strs = (java.util.List)yan.getInstance("target");
    assertEquals(2, strs.size());
    assertEquals("abc", strs.get(0));
    assertEquals("cde", strs.get(1));
    yan.registerComponent("another", Components.useKey("yet another").subsume(String.class));
    strs = (java.util.List)yan.getInstance("target");
    assertEquals(3, strs.size());
    assertEquals("abc", strs.get(0));
    assertEquals("cde", strs.get(1));
    assertEquals("cde", strs.get(2));
   
View Full Code Here

    assertEquals("cde", strs.get(1));
    assertEquals("cde", strs.get(2));
   
  }
  public void testUseAllInSameContainer(){
    final Container yan = createYanContainer();
    yan.registerComponent("target", Components.useAll(yan, String.class));
    assertEquals(0, ((java.util.List)yan.getInstanceOfType(java.util.List.class)).size());
    yan.registerValue("abc");
    yan.registerValue("yet another", "cde");
    java.util.List strs = (java.util.List)yan.getInstance("target");
    assertEquals(2, strs.size());
    assertEquals("abc", strs.get(0));
    assertEquals("cde", strs.get(1));
    yan.registerComponent("another", Components.useKey("yet another").subsume(String.class));
    strs = (java.util.ArrayList)yan.getInstance("target");
    assertEquals(3, strs.size());
    assertEquals("abc", strs.get(0));
    assertEquals("cde", strs.get(1));
    assertEquals("cde", strs.get(2));
   
View Full Code Here

    assertEquals("cde", strs.get(1));
    assertEquals("cde", strs.get(2));
   
  }
  public void testUseAllInDifferentContainer(){
    final Container yan1 = createYanContainer();
    final Container yan = createYanContainer();
    yan1.registerComponent("target", Components.useAll(yan, String.class));
    assertEquals(0, ((java.util.List)yan1.getInstanceOfType(java.util.List.class)).size());
    yan.registerValue("abc");
    yan.registerValue("yet another", "cde");
    java.util.List strs = (java.util.List)yan1.getInstance("target");
    assertEquals(2, strs.size());
    assertEquals("abc", strs.get(0));
    assertEquals("cde", strs.get(1));
    //have to specify the container because otherwise "yet another" will be looked up from yan1.
    yan.registerComponent("another", Components.useKey(yan, "yet another").subsume(String.class));
    strs = (java.util.List)yan1.getInstance("target");
    assertEquals(3, strs.size());
    assertEquals("abc", strs.get(0));
    assertEquals("cde", strs.get(1));
    assertEquals("cde", strs.get(2));
View Full Code Here

    assertEquals("cde", strs.get(1));
    assertEquals("cde", strs.get(2));
   
  }
  public void testUseState(){
    final Container yan = createYanContainer();
    yan.registerComponent("allnul", Components.useState(new Predicate(){
      public boolean isObject(Object obj){
        return obj==null;
      }
      public String toString(){return "isnull";}
    }).withState("!do not recurse on me"));
    yan.registerComponent("startswithhello", Components.useState(new Predicate(){
      public boolean isObject(Object obj){
        if(obj instanceof String){
          final String s = (String)obj;
          return s.startsWith("hello");
        }
        else return false;
      }
      public String toString(){return "startsWithHello";}
    }));
    yan.registerValue("foo");
    yan.registerComponent("bar", Components.value(Class.class)
        .withState("hello world"));
    yan.registerValue("baz", new Integer(10));
    yan.registerComponent("joo", Components.value(int.class).withState("hello me"));
    try{
      final java.util.List nulls = (java.util.List)yan.getInstance("allnul");
      final java.util.List hellos = (java.util.List)yan.getInstance("startswithhello");
      assertEquals(3, nulls.size());
      assertEquals(2, hellos.size());
      final java.util.List the_hellos = (java.util.List)nulls.get(0);
      assertEquals(hellos, the_hellos);
      assertEquals("foo", nulls.get(1));
View Full Code Here

    assertSame(p1, p2);
    return p1.getName();
  }
  public void testSharedArgument()
  throws Exception{
    final Container yan = createYanContainer();
    final Component signup = Components.method(this, "signup");
    yan.registerComponent("target",
        Monad.bind(Components.useType(Person.class),
          new jfun.yan.Binder(){
            public Creator bind(Object v){
              final Component c = Components.value(v);
              return signup.withArguments(
                  new Creator[]{c,c}
              );
            }
          }
        ).cast(signup.getType())
    );
    yan.registerComponent(Components.method(this, "newPerson").bean(new String[]{"name"}));
    yan.registerValue(new Integer(10));
    final String name = "Jack Nicolson";
    yan.registerValue(name);
    assertEquals(name, yan.getInstance("target"));
  }
View Full Code Here

    final String name = "Jack Nicolson";
    yan.registerValue(name);
    assertEquals(name, yan.getInstance("target"));
  }
  public void testFactory(){
    final Container yan = createYanContainer();
    final Component mycache =
      Components.ctor(MyCache.class,
          new Class[]{String.class, int.class});
   
    final Component factory =
      mycache.factory(ICacheFactory.class);
    yan.registerComponent("target", factory);
    final ICacheFactory ifactory =
      (ICacheFactory)yan.getInstance("target");
    final tests.jfun.yan.testmodel.ICache icache = ifactory.createCache("tom", 10);
    assertEquals(MyCache.class, icache.getClass());
    assertEquals("tom", icache.getName());
    assertEquals(10, icache.getCapacity());
    try{
      yan.verify();
      fail("should have failed with IrresolveableArgumentException");
    }
    catch(IrresolveableArgumentException e){
      assertTraceSize(e, 3);
      assertEntry(e, 1, "tests.jfun.yan.testmodel.ICacheFactory");
      assertEquals(0, e.getOrdinalPosition());
      assertEquals(String.class, e.getParameterType());
    }
    yan.registerValue("someone");
    try{
      yan.verify();
      fail("should have failed with IrresolveableArgumentException");
    }
    catch(IrresolveableArgumentException e){
      assertTraceSize(e, 3);
      assertEntry(e, 1, "tests.jfun.yan.testmodel.ICacheFactory");
      assertEquals(1, e.getOrdinalPosition());
      assertEquals(int.class, e.getParameterType());
    }
    yan.registerValue(new Integer(0));
    yan.verify();
   
    final tests.jfun.yan.testmodel.ICache icache2 = ifactory.createCache("jack", 11);
    assertEquals(MyCache.class, icache2.getClass());
    assertEquals("jack", icache2.getName());
    assertEquals(11, icache2.getCapacity());
View Full Code Here

TOP

Related Classes of jfun.yan.Container

Copyright © 2018 www.massapicom. 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.