package org.perl6.metamodel.tests;
import java.util.*;
import junit.framework.*;
import org.perl6.metamodel.Class;
import org.perl6.metamodel.Instance;
import org.perl6.metamodel.Method;
public class InstanceTest extends TestCase {
private HashMap options;
private Instance foo;
public static void main (String[] args) {
junit.textui.TestRunner.run (suite());
}
public static Test suite() {
return new TestSuite(InstanceTest.class);
}
public void setUp () {
options = new HashMap();
// Set up the instance data
HashMap inst = new HashMap();
HashMap imeths = new HashMap();
Method m1 = new Method () {
public java.lang.Object code (java.lang.Object inv, ArrayList args) {
return "Foo.bar";
}
};
imeths.put("baz", m1);
inst.put("methods", imeths);
options.put("instance", inst);
Class Foo = new Class("Foo", options);
foo = new Instance(Foo);
}
public void testConstructor () {
assertEquals( foo.getClass().getName(), "org.perl6.metamodel.Instance" );
}
public void testIsA () {
assertTrue(foo.isa("Foo"));
assertFalse(foo.isa("Bar"));
}
public void testCan () {
Method m = foo.can("baz");
assertEquals(m.call(foo, new ArrayList()),"Foo.bar");
assertNull(foo.can("sglerbadck"));
}
}