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