| /* |
| * Copyright 2008 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.dev.util; |
| |
| import junit.framework.TestCase; |
| |
| /** |
| * Tests the {@link JsniRef} class. |
| */ |
| public class JsniRefTest extends TestCase { |
| public static void testBasics() { |
| { |
| JsniRef ref = JsniRef.parse("@some.package.SomeClass::someField"); |
| assertEquals("some.package.SomeClass", ref.className()); |
| assertEquals("someField", ref.memberName()); |
| assertEquals("someField", ref.memberSignature()); |
| assertFalse(ref.isMethod()); |
| assertTrue(ref.isField()); |
| } |
| |
| { |
| JsniRef ref = JsniRef.parse("@some.package.SomeClass::someMeth()"); |
| assertEquals("some.package.SomeClass", ref.className()); |
| assertEquals("someMeth", ref.memberName()); |
| assertEquals("someMeth()", ref.memberSignature()); |
| assertTrue(ref.isMethod()); |
| assertFalse(ref.isField()); |
| assertFalse(ref.matchesAnyOverload()); |
| assertEquals(0, ref.paramTypes().length); |
| } |
| |
| { |
| // test with every JNI type included |
| JsniRef ref = JsniRef.parse("@some.package.SomeClass::someMeth(" |
| + "[[ZBCDFIJLjava/lang/String;S)"); |
| assertEquals("some.package.SomeClass", ref.className()); |
| assertEquals("someMeth", ref.memberName()); |
| assertEquals("someMeth([[ZBCDFIJLjava/lang/String;S)", |
| ref.memberSignature()); |
| assertTrue(ref.isMethod()); |
| assertFalse(ref.matchesAnyOverload()); |
| assertEquals(9, ref.paramTypes().length); |
| assertEquals("[[Z", ref.paramTypes()[0]); |
| assertEquals("B", ref.paramTypes()[1]); |
| assertEquals("C", ref.paramTypes()[2]); |
| assertEquals("D", ref.paramTypes()[3]); |
| assertEquals("F", ref.paramTypes()[4]); |
| assertEquals("I", ref.paramTypes()[5]); |
| assertEquals("J", ref.paramTypes()[6]); |
| assertEquals("Ljava/lang/String;", ref.paramTypes()[7]); |
| assertEquals("S", ref.paramTypes()[8]); |
| } |
| |
| { |
| // Test with a wildcard parameter list |
| JsniRef ref = JsniRef.parse("@some.package.SomeClass::someMeth(*)"); |
| assertEquals("some.package.SomeClass", ref.className()); |
| assertEquals("someMeth", ref.memberName()); |
| assertTrue(ref.isMethod()); |
| assertTrue(ref.matchesAnyOverload()); |
| } |
| |
| { |
| // test some badly formatted wildcard strings |
| assertNull(JsniRef.parse("@some.package.SomeClass::someMeth(*")); |
| assertNull(JsniRef.parse("@some.package.SomeClass::someMeth(I*)")); |
| } |
| |
| { |
| // test with no preceding at sign |
| JsniRef ref = JsniRef.parse("some.package.SomeClass::someField"); |
| assertEquals("some.package.SomeClass", ref.className()); |
| assertEquals("someField", ref.memberName()); |
| assertEquals("someField", ref.memberSignature()); |
| assertFalse(ref.isMethod()); |
| assertTrue(ref.isField()); |
| } |
| } |
| |
| public void testEquals() { |
| String[] tests = new String[] { |
| "@some.package.SomeClass::someField", |
| "@some.package.SomeClass::someMeth()", |
| "@some.package.SomeClass::someMeth([[ZBCDFIJLjava/lang/String;S)"}; |
| |
| for (String test : tests) { |
| JsniRef ref1 = JsniRef.parse(test); |
| JsniRef ref2 = JsniRef.parse(test); |
| assertEquals(ref1, ref2); |
| } |
| } |
| |
| public void testHashCode() { |
| String[] tests = new String[] { |
| "@some.package.SomeClass::someField", |
| "@some.package.SomeClass::someMeth()", |
| "@some.package.SomeClass::someMeth([[ZBCDFIJLjava/lang/String;S)"}; |
| |
| for (String test : tests) { |
| JsniRef ref1 = JsniRef.parse(test); |
| JsniRef ref2 = JsniRef.parse(test); |
| assertEquals(ref1.hashCode(), ref2.hashCode()); |
| } |
| } |
| |
| public void testToString() { |
| String[] tests = new String[] { |
| "@some.package.SomeClass::someField", |
| "@some.package.SomeClass::someMeth()", |
| "@some.package.SomeClass::someMeth([[ZBCDFIJLjava/lang/String;S)"}; |
| |
| for (String test : tests) { |
| JsniRef ref = JsniRef.parse(test); |
| assertEquals(test, ref.toString()); |
| } |
| } |
| } |