| Index: compiler/javatests/com/google/dart/compiler/resolver/ElementMapTest.java
|
| ===================================================================
|
| --- compiler/javatests/com/google/dart/compiler/resolver/ElementMapTest.java (revision 0)
|
| +++ compiler/javatests/com/google/dart/compiler/resolver/ElementMapTest.java (revision 0)
|
| @@ -0,0 +1,188 @@
|
| +// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +package com.google.dart.compiler.resolver;
|
| +
|
| +import com.google.dart.compiler.ast.DartLabel;
|
| +import com.google.dart.compiler.ast.DartNode;
|
| +import com.google.dart.compiler.ast.Modifiers;
|
| +import com.google.dart.compiler.type.Type;
|
| +
|
| +import junit.framework.TestCase;
|
| +
|
| +public class ElementMapTest extends TestCase {
|
| +
|
| + private class MockElement implements Element {
|
| +
|
| + private final ElementKind kind;
|
| + private final String name;
|
| +
|
| + public MockElement(String name, ElementKind kind) {
|
| + this.name = name;
|
| + this.kind = kind;
|
| + }
|
| +
|
| + @Override
|
| + public EnclosingElement getEnclosingElement() {
|
| + throw new RuntimeException();
|
| + }
|
| +
|
| + @Override
|
| + public ElementKind getKind() {
|
| + return kind;
|
| + }
|
| +
|
| + @Override
|
| + public Modifiers getModifiers() {
|
| + throw new RuntimeException();
|
| + }
|
| +
|
| + @Override
|
| + public String getName() {
|
| + return name;
|
| + }
|
| +
|
| + @Override
|
| + public DartNode getNode() {
|
| + throw new RuntimeException();
|
| + }
|
| +
|
| + @Override
|
| + public String getOriginalSymbolName() {
|
| + throw new RuntimeException();
|
| + }
|
| +
|
| + @Override
|
| + public Type getType() {
|
| + throw new RuntimeException();
|
| + }
|
| +
|
| + @Override
|
| + public boolean isDynamic() {
|
| + throw new RuntimeException();
|
| + }
|
| +
|
| + @Override
|
| + public void setNode(DartLabel node) {
|
| + throw new RuntimeException();
|
| + }
|
| + }
|
| +
|
| + public void testAdd1() {
|
| + ElementMap map = new ElementMap();
|
| + MockElement element = new MockElement("foo", ElementKind.METHOD);
|
| + map.add("foo", element);
|
| + assertEquals(1, map.size());
|
| + assertEquals(1, map.values().size());
|
| + assertEquals(element, map.values().get(0));
|
| + assertEquals(element, map.get("foo"));
|
| + assertNull(map.get("bar"));
|
| + assertNull(map.get("foo", ElementKind.FIELD));
|
| + assertEquals(element, map.get("foo", ElementKind.METHOD));
|
| + }
|
| +
|
| + public void testAdd1DifferentName() {
|
| + ElementMap map = new ElementMap();
|
| + MockElement element = new MockElement("bar", ElementKind.METHOD);
|
| + map.add("foo", element);
|
| + assertEquals(1, map.size());
|
| + assertEquals(1, map.values().size());
|
| + assertEquals(element, map.values().get(0));
|
| + assertEquals(element, map.get("foo"));
|
| + assertNull(map.get("bar"));
|
| + assertNull(map.get("foo", ElementKind.FIELD));
|
| + assertEquals(element, map.get("foo", ElementKind.METHOD));
|
| + }
|
| +
|
| + public void testAdd2() {
|
| + ElementMap map = new ElementMap();
|
| + MockElement element = new MockElement("foo", ElementKind.METHOD);
|
| + MockElement element2 = new MockElement("bar", ElementKind.METHOD);
|
| + map.add("foo", element);
|
| + map.add("bar", element2);
|
| + assertEquals(2, map.size());
|
| + assertEquals(2, map.values().size());
|
| + assertEquals(element, map.values().get(0));
|
| + assertEquals(element2, map.values().get(1));
|
| + assertEquals(element, map.get("foo"));
|
| + assertEquals(element2, map.get("bar"));
|
| + assertNull(map.get("foo", ElementKind.FIELD));
|
| + assertEquals(element, map.get("foo", ElementKind.METHOD));
|
| + }
|
| +
|
| + public void testAdd2SameName() {
|
| + ElementMap map = new ElementMap();
|
| + MockElement element = new MockElement("foo", ElementKind.METHOD);
|
| + MockElement element2 = new MockElement("foo", ElementKind.FIELD);
|
| + map.add("foo", element);
|
| + map.add("foo", element2);
|
| + assertEquals(2, map.size());
|
| + assertEquals(2, map.values().size());
|
| + assertEquals(element, map.values().get(0));
|
| + assertEquals(element2, map.values().get(1));
|
| + assertEquals(element, map.get("foo"));
|
| + assertNull(map.get("bar"));
|
| + assertEquals(element2, map.get("foo", ElementKind.FIELD));
|
| + assertEquals(element, map.get("foo", ElementKind.METHOD));
|
| + }
|
| +
|
| + public void testDuplicate() throws Exception {
|
| + ElementMap map = new ElementMap();
|
| + MockElement element = new MockElement("foo", ElementKind.METHOD);
|
| + assertEquals(0, map.size());
|
| + map.add("foo", element);
|
| + assertEquals(1, map.size());
|
| + map.add("foo", element);
|
| + assertEquals(1, map.size());
|
| + }
|
| +
|
| + public void testDuplicate2() throws Exception {
|
| + ElementMap map = new ElementMap();
|
| + MockElement element = new MockElement("foo", ElementKind.METHOD);
|
| + MockElement element2 = new MockElement("foo", ElementKind.FIELD);
|
| + assertEquals(0, map.size());
|
| + map.add("foo", element);
|
| + assertEquals(1, map.size());
|
| + map.add("foo", element2);
|
| + assertEquals(2, map.size());
|
| + map.add("foo", element);
|
| + assertEquals(2, map.size());
|
| + map.add("foo", element2);
|
| + assertEquals(2, map.size());
|
| + }
|
| +
|
| + public void testEmpty() throws Exception {
|
| + ElementMap map = new ElementMap();
|
| + assertEmpty(map);
|
| + }
|
| +
|
| + public void testGrow() throws Exception {
|
| + ElementMap map = new ElementMap();
|
| + MockElement element = new MockElement("foo", ElementKind.METHOD);
|
| + MockElement element2 = new MockElement("foo", ElementKind.FIELD);
|
| + map.add("foo", element);
|
| + map.add("foo", element2);
|
| +
|
| + for (int i = 0; i < 100; i++) {
|
| + map.add("mem" + i, new MockElement("mem" + i, ElementKind.METHOD));
|
| + }
|
| +
|
| + assertEquals(element, map.values().get(0));
|
| + assertEquals(element2, map.values().get(1));
|
| + assertEquals(element, map.get("foo"));
|
| + assertNull(map.get("bar"));
|
| + assertEquals(element2, map.get("foo", ElementKind.FIELD));
|
| + assertEquals(element, map.get("foo", ElementKind.METHOD));
|
| + }
|
| +
|
| + private void assertEmpty(ElementMap map) {
|
| + assertTrue(map.isEmpty());
|
| + assertEquals(0, map.size());
|
| + assertEquals(0, map.values().size());
|
| + assertNull(map.get("foo"));
|
| + assertNull(map.get("bar"));
|
| + assertNull(map.get("foo", ElementKind.FIELD));
|
| + assertNull(map.get("foo", ElementKind.METHOD));
|
| + }
|
| +}
|
|
|