/* * Copyright 2000-2013 JetBrains s.r.o. * * 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.intellij.psi; import org.junit.Test; import static org.junit.Assert.assertEquals; public class PsiNameHelperTest { @Test public void shortClassName() { doTest("I<Integer>", "I"); doTest("I<Long>", "I"); doTest("java.lang.Object", "Object"); doTest("java.lang.String", "String"); doTest("java.lang.Throwable", "Throwable"); doTest("java.io.PrintStream", "PrintStream"); doTest("java.io.PrintWriter", "PrintWriter"); doTest("java.lang.StackTraceElement", "StackTraceElement"); doTest("java.lang.Throwable.PrintStreamOrWriter", "PrintStreamOrWriter"); doTest("java.io.ObjectInputStream", "ObjectInputStream"); doTest("java.io.ObjectOutputStream", "ObjectOutputStream"); doTest("java.lang.Integer", "Integer"); doTest("java.lang.Long", "Long"); doTest("java.lang.Error", "Error"); doTest("java.lang.RuntimeException", "RuntimeException"); doTest("@Override", "Override"); doTest("java.lang.annotation.Target", "Target"); doTest("java.net.MalformedURLException", "MalformedURLException"); doTest("java.io.IOException", "IOException"); doTest("java.net.URLConnection", "URLConnection"); doTest("java.io.InputStream", "InputStream"); doTest("java.lang.AutoCloseable", "AutoCloseable"); doTest("@", ""); doTest("@Deprecated", "Deprecated"); doTest("java.lang.annotation.Documented", "Documented"); doTest("java.lang.annotation.Retention", "Retention"); doTest("CSuperFoo<X>", "CSuperFoo"); doTest("SuperFoo<X>", "SuperFoo"); doTest("java.lang.StringBuffer", "StringBuffer"); doTest("java.lang.StringBuilder", "StringBuilder"); doTest("Member<>", "Member"); doTest("Nested<>", "Nested"); doTest("Neg09.Nested<>", "Nested"); doTest("UndeclaredName<>", "UndeclaredName"); doTest("L<String>", "L"); doTest("P1<P<K>>", "P1"); doTest("P<P1T>", "P"); doTest("F<X>", "F"); doTest("Base<String>", "Base"); doTest("Base<Integer>", "Base"); doTest("A<V>", "A"); doTest("ArrayList<T>", "ArrayList"); doTest("I<>", "I"); doTest("java.util.Collection<? extends E>", "Collection"); doTest("java.util.Map<? extends K,? extends V>", "Map"); doTest("java.util.HashMap.Entry", "Entry"); doTest("java.util.Iterator<E>", "Iterator"); doTest("java.util.ListIterator<E>", "ListIterator"); doTest("java.util.List<E>", "List"); doTest("@SuppressWarnings", "SuppressWarnings"); doTest("java.lang.annotation.Annotation", "Annotation"); doTest("@MyAnno", "MyAnno"); doTest("java.lang.Exception", "Exception"); doTest("@SafeVarargs", "SafeVarargs"); doTest("List<T>", "List"); doTest("List<String>", "List"); doTest("List<?>", "List"); doTest("SemKey<String>", "SemKey"); doTest("Condition<String>", "Condition"); doTest("SemKey<T>", "SemKey"); doTest("java.lang.Class<?>", "Class"); doTest("A<T>", "A"); doTest("java.lang.invoke.MethodType", "MethodType"); doTest("java.lang.CharSequence", "CharSequence"); doTest("java.lang.IllegalAccessException", "IllegalAccessException"); doTest("java.util.Locale", "Locale"); doTest("java.util.List<java.lang.Class<?>>", "List"); doTest("java.lang.Void", "Void"); doTest("java.lang.invoke.MethodHandles.Lookup", "Lookup"); doTest("java.lang.invoke.MethodHandle", "MethodHandle"); doTest("java.lang.invoke.MethodHandle.PolymorphicSignature", "PolymorphicSignature"); doTest("Map<String, String>", "Map"); doTest("List<N>", "List"); doTest("Wrapper<E, T>", "Wrapper"); doTest("X<T>", "X"); doTest("Node<String>.Details", "Details"); doTest("Map<K, V>", "Map"); doTest("Map.Entry<K, V>", "Entry"); doTest("Matcher<Collection<? extends E>>", "Matcher"); doTest("A<String>", "A"); doTest("NonDefaultConstructorContainer.Inner", "Inner"); doTest("OtherClass.InnerClass", "InnerClass"); doTest("Foo<Number>", "Foo"); doTest("Foo<Integer>", "Foo"); doTest("Test<String>", "Test"); doTest("DiamondTest<String>", "DiamondTest"); doTest("ParallelPipeline<T, V>", "ParallelPipeline"); doTest("ArrayList<E>", "ArrayList"); doTest("Generic<String>", "Generic"); doTest("Generic<Object>", "Generic"); doTest("java.io.Serializable", "Serializable"); doTest("java.lang.Comparable<java.lang.String>", "Comparable"); doTest("@Target", "Target"); doTest("@TA", "TA"); doTest("java.lang.Enum", "Enum"); doTest("java.io.OutputStream", "OutputStream"); doTest("java.io.OutputStreamWriter", "OutputStreamWriter"); doTest("java.io.File", "File"); doTest("Foo.IBar", "IBar"); doTest("Iterable<Path>", "Iterable"); doTest("B<Integer>", "B"); doTest("B<Long>", "B"); doTest("java.lang.AbstractStringBuilder", "AbstractStringBuilder"); doTest("@NotNull", "NotNull"); doTest("@Nullable", "Nullable"); doTest("java.lang.Runnable", "Runnable"); doTest("java.io.FileDescriptor", "FileDescriptor"); doTest("java.io.FileNotFoundException", "FileNotFoundException"); doTest("java.sql.SQLException", "SQLException"); doTest("java.awt.Point", "Point"); doTest("List<A.B>", "List"); doTest("test.A", "A"); doTest("test.Client", "Client"); doTest("Pair<String, Pair<Integer, Boolean>>", "Pair"); doTest("util.Pair", "Pair"); doTest("java.util.Calendar", "Calendar"); doTest("java.util.ArrayList", "ArrayList"); doTest("java.util.Arrays", "Arrays"); doTest("java.util.List", "List"); doTest("java.lang.Boolean", "Boolean"); doTest("java.lang.ClassLoader", "ClassLoader"); doTest("Demo.Pojo2", "Pojo2"); doTest("A<E>", "A"); doTest("java.lang.reflect.Type", "Type"); doTest("java.security.ProtectionDomain", "ProtectionDomain"); doTest("java.lang.reflect.Field", "Field"); doTest("java.lang.reflect.Method", "Method"); doTest("java.lang.reflect.Constructor", "Constructor"); doTest("sun.reflect.annotation.AnnotationType", "AnnotationType"); doTest("java.lang.reflect.TypeVariable<java.lang.Class<T>>", "TypeVariable"); doTest("java.lang.reflect.TypeVariable<?>", "TypeVariable"); doTest("java.lang.Class<T>", "Class"); doTest("Parent<Integer>", "Parent"); doTest("@org.jetbrains.annotations.NotNull", "NotNull"); doTest("@org.jetbrains.annotations.Nullable", "Nullable"); doTest("org.jetbrains.annotations.NotNull", "NotNull"); doTest("org.jetbrains.annotations.Nullable", "Nullable"); doTest("IX<Throwable>", "IX"); doTest("@org.testng.annotations.BeforeMethod", "BeforeMethod"); doTest("Function<String, ?>", "Function"); doTest("Function<String>", "Function"); doTest("A<Throwable>", "A"); doTest("Generic<?>", "Generic"); doTest("A1<T>", "A1"); doTest("B<T>", "B"); doTest("pack.AAClass", "AAClass"); doTest("pack.WithInnerAClass", "WithInnerAClass"); doTest("java.lang.CloneNotSupportedException", "CloneNotSupportedException"); doTest("Foo<ZZZ", "Foo"); doTest("@MyObj", "MyObj"); doTest("@MyObjectType", "MyObjectType"); doTest("@Retention", "Retention"); doTest("java.io.FileInputStream", "FileInputStream"); doTest("java.lang.Class<? extends java.lang.Object>", "Class"); doTest("java.io.ObjectStreamField", "ObjectStreamField"); doTest("java.util.Comparator<java.lang.String>", "Comparator"); doTest("java.io.FilenameFilter", "FilenameFilter"); doTest("java.lang.Class", "Class"); doTest("foo.Foo", "Foo"); doTest("java.util.List<? super T>", "List"); doTest("java.awt.Component", "Component"); doTest("java.util.Collection<?>", "Collection"); doTest("java.awt.Rectangle", "Rectangle"); doTest("javax.swing.JTable", "JTable"); doTest("javax.swing.JScrollPane", "JScrollPane"); doTest("java.awt.Container", "Container"); doTest("java.net.FileNameMap", "FileNameMap"); doTest("java.awt.Frame", "Frame"); doTest("java.util.List<?>", "List"); doTest("java.awt.event.MouseEvent", "MouseEvent"); doTest("javax.swing.Action", "Action"); doTest("javax.swing.KeyStroke", "KeyStroke"); doTest("java.awt.event.KeyEvent", "KeyEvent"); doTest("java.io.DataInput", "DataInput"); doTest("java.net.ContentHandlerFactory", "ContentHandlerFactory"); doTest("java.net.DatagramSocketImplFactory", "DatagramSocketImplFactory"); doTest("java.net.SocketImplFactory", "SocketImplFactory"); doTest("java.net.URLStreamHandlerFactory", "URLStreamHandlerFactory"); doTest("java.util.Collection<? extends T>", "Collection"); doTest("java.util.Collection<T>", "Collection"); doTest("java.util.List<? extends T>", "List"); doTest("java.util.List<T>", "List"); doTest("java.util.Map<K,V>", "Map"); doTest("java.util.Set<? extends T>", "Set"); doTest("java.util.Set<T>", "Set"); doTest("java.util.SortedMap<K,? extends V>", "SortedMap"); doTest("java.util.SortedMap<K,V>", "SortedMap"); doTest("java.util.SortedSet<T>", "SortedSet"); doTest("java.lang.Float", "Float"); doTest("java.lang.Double", "Double"); doTest("java.lang.Short", "Short"); doTest("java.lang.annotation.ElementType", "ElementType"); doTest("java.lang.Byte", "Byte"); doTest("java.util.concurrent.TimeUnit", "TimeUnit"); doTest("java.lang.annotation.RetentionPolicy", "RetentionPolicy"); doTest("java.lang.Character", "Character"); doTest("java.sql.Time", "Time"); doTest("java.sql.Date", "Date"); doTest("java.sql.Timestamp", "Timestamp"); doTest("java.awt.Window", "Window"); doTest("Some<caret>", "Some"); doTest("foo.bar.AxBxCxDxEx", "AxBxCxDxEx"); doTest("net.n3.nanoxml.IXMLReader", "IXMLReader"); doTest("net.n3.nanoxml.IXMLBuilder", "IXMLBuilder"); doTest("net.n3.nanoxml.IXMLValidator", "IXMLValidator"); doTest("net.n3.nanoxml.IXMLEntityResolver", "IXMLEntityResolver"); doTest("java.util.Vector", "Vector"); doTest("foo.MyClass", "MyClass"); doTest("foo.ServiceManager", "ServiceManager"); doTest("Bar<String>", "Bar"); doTest("pkg.Bar", "Bar"); doTest("java.util.Random", "Random"); doTest("java.util.Set", "Set"); doTest("java.util.Map", "Map"); doTest("java.util.Comparator", "Comparator"); doTest("java.util.Collection<E>", "Collection"); doTest("java.util.Set<E>", "Set"); doTest("java.util.SortedSet<E>", "SortedSet"); doTest("java.util.Comparator<T>", "Comparator"); doTest("java.util.Enumeration<T>", "Enumeration"); doTest("pkg.Foo", "Foo"); doTest("foo.Bar", "Bar"); doTest("sun.nio.ch.Interruptible", "Interruptible"); doTest("java.lang.ThreadGroup", "ThreadGroup"); doTest("java.lang.Thread", "Thread"); doTest("java.lang.Iterable", "Iterable"); doTest("java.lang.Package", "Package"); doTest("java.lang.reflect.Constructor<?>", "Constructor"); doTest("java.lang.reflect.Constructor<T>", "Constructor"); doTest("java.lang.Class<U>", "Class"); doTest("java.lang.Class<A>", "Class"); doTest("java.lang.Class<? extends java.lang.annotation.Annotation>", "Class"); doTest("foo.Util", "Util"); doTest("java.lang.SecurityManager", "SecurityManager"); doTest("java.util.Properties", "Properties"); doTest("java.util.Map<java.lang.String,java.lang.String>", "Map"); doTest("java.lang.Class<W>", "Class"); doTest("java.lang.Class<V>", "Class"); doTest("@Foo", "Foo"); doTest("@Anno", "Anno"); doTest("java.awt.Font", "Font"); doTest("java.awt.Graphics", "Graphics"); doTest("java.awt.Color", "Color"); doTest("java.awt.Dimension", "Dimension"); doTest("java.awt.Event", "Event"); doTest("java.awt.PopupMenu", "PopupMenu"); doTest("java.awt.MenuComponent", "MenuComponent"); doTest("java.beans.PropertyChangeListener", "PropertyChangeListener"); doTest("java.awt.ComponentOrientation", "ComponentOrientation"); doTest("java.awt.LayoutManager", "LayoutManager"); doTest("javax.swing.JPopupMenu", "JPopupMenu"); doTest("javax.swing.border.Border", "Border"); doTest("java.awt.Insets", "Insets"); doTest("javax.swing.InputVerifier", "InputVerifier"); doTest("java.awt.event.ActionListener", "ActionListener"); doTest("javax.swing.ComponentInputMap", "ComponentInputMap"); doTest("javax.swing.ActionMap", "ActionMap"); doTest("javax.swing.TransferHandler", "TransferHandler"); doTest("javax.swing.event.AncestorListener", "AncestorListener"); doTest("javax.swing.JComponent", "JComponent"); doTest("java.awt.event.ContainerListener", "ContainerListener"); doTest("java.awt.AWTEvent", "AWTEvent"); doTest("java.awt.event.ContainerEvent", "ContainerEvent"); doTest("java.awt.FocusTraversalPolicy", "FocusTraversalPolicy"); doTest("java.awt.dnd.DropTarget", "DropTarget"); doTest("java.awt.PointerInfo", "PointerInfo"); doTest("java.awt.Cursor", "Cursor"); doTest("java.awt.Image", "Image"); doTest("java.awt.image.ImageProducer", "ImageProducer"); doTest("java.awt.event.MouseWheelEvent", "MouseWheelEvent"); doTest("java.awt.event.ComponentListener", "ComponentListener"); doTest("java.awt.event.FocusListener", "FocusListener"); doTest("java.awt.event.HierarchyListener", "HierarchyListener"); doTest("java.awt.event.HierarchyBoundsListener", "HierarchyBoundsListener"); doTest("java.awt.event.KeyListener", "KeyListener"); doTest("java.awt.event.MouseListener", "MouseListener"); doTest("java.awt.event.MouseMotionListener", "MouseMotionListener"); doTest("java.awt.event.MouseWheelListener", "MouseWheelListener"); doTest("java.awt.event.InputMethodListener", "InputMethodListener"); doTest("java.awt.event.ComponentEvent", "ComponentEvent"); doTest("java.awt.event.FocusEvent", "FocusEvent"); doTest("java.awt.event.InputMethodEvent", "InputMethodEvent"); doTest("java.awt.event.HierarchyEvent", "HierarchyEvent"); doTest("java.util.EventListener", "EventListener"); doTest("javax.accessibility.AccessibleContext", "AccessibleContext"); doTest("java.awt.peer.ContainerPeer", "ContainerPeer"); doTest("javax.swing.InputMap", "InputMap"); doTest("javax.swing.JToolTip", "JToolTip"); doTest("javax.swing.JRootPane", "JRootPane"); doTest("java.awt.peer.ComponentPeer", "ComponentPeer"); doTest("java.awt.GraphicsConfiguration", "GraphicsConfiguration"); doTest("java.awt.Toolkit", "Toolkit"); doTest("java.awt.image.ColorModel", "ColorModel"); doTest("java.awt.FontMetrics", "FontMetrics"); doTest("java.awt.image.VolatileImage", "VolatileImage"); doTest("java.awt.ImageCapabilities", "ImageCapabilities"); doTest("java.awt.image.ImageObserver", "ImageObserver"); doTest("java.awt.im.InputMethodRequests", "InputMethodRequests"); doTest("java.awt.im.InputContext", "InputContext"); doTest("javax.swing.JPanel", "JPanel"); doTest("@T", "T"); doTest("java.util.Set<K>", "Set"); doTest("java.util.Collection<V>", "Collection"); doTest("java.util.Set<java.util.Map.Entry<K,V>>", "Set"); doTest("java.util.Map.Entry<K,V>", "Entry"); doTest("java.util.TimeZone", "TimeZone"); doTest("java.util.Date", "Date"); doTest("AbstractSet<T>", "AbstractSet"); doTest("@TestFor", "TestFor"); doTest("@MyAnnotation", "MyAnnotation"); doTest("@My", "My"); doTest("@Test", "Test"); doTest("List<V>", "List"); doTest("Function<Object, ArrayIndexOutOfBoundsException>", "Function"); doTest("@in", "in"); doTest("YourMapInterface<K, V>", "YourMapInterface"); doTest("@ab", "ab"); doTest("List<A>", "List"); doTest("@MyAn", "MyAn"); doTest("@java.la", "la"); doTest("java.lang.Class<E>", "Class"); doTest("javax.accessibility.AccessibleStateSet", "AccessibleStateSet"); doTest("Bar.", ""); doTest("@TestAnnotation", "TestAnnotation"); doTest("Key<T>", "Key"); doTest("foo.Super", "Super"); doTest("@NN", "NN"); doTest("java.io.InputStreamReader", "InputStreamReader"); doTest("foo.StringValue", "StringValue"); doTest("@B", "B"); doTest("@Example", "Example"); doTest("java.util.HashMap", "HashMap"); doTest("@MagicConstant", "MagicConstant"); doTest("List<Inner>", "List"); doTest("List<bar.Foo.Inner>", "List"); doTest("bar.Foo", "Foo"); doTest("bar.Assert", "Assert"); doTest("java.util.Collections", "Collections"); doTest("Foo<String>", "Foo"); doTest("Bar<Goo>", "Bar"); doTest("java.util.Collection", "Collection"); doTest("Collection<Foo>", "Collection"); doTest("java.net.URL", "URL"); doTest("java.util.Enumeration", "Enumeration"); doTest("java.lang.ref.SoftReference", "SoftReference"); doTest("sun.reflect.generics.repository.ClassRepository", "ClassRepository"); doTest("sun.reflect.ReflectionFactory", "ReflectionFactory"); doTest("java.lang.Class.EnclosingMethodInfo", "EnclosingMethodInfo"); doTest("sun.reflect.generics.factory.GenericsFactory", "GenericsFactory"); doTest("sun.reflect.ConstantPool", "ConstantPool"); doTest("javax.swing.event.EventListenerList", "EventListenerList"); doTest("javax.swing.ArrayTable", "ArrayTable"); doTest("javax.swing.AncestorNotifier", "AncestorNotifier"); doTest("java.awt.LightweightDispatcher", "LightweightDispatcher"); doTest("sun.awt.DebugHelper", "DebugHelper"); doTest("javax.accessibility.Accessible", "Accessible"); doTest("java.util.logging.Logger", "Logger"); doTest("sun.awt.AppContext", "AppContext"); doTest("java.awt.image.BufferStrategy", "BufferStrategy"); doTest("java.beans.PropertyChangeSupport", "PropertyChangeSupport"); doTest("java.awt.Component.NativeInLightFixer", "NativeInLightFixer"); doTest("java.util.concurrent.ConcurrentHashMap<java.lang.String,java.util.Locale>", "ConcurrentHashMap"); doTest("sun.util.resources.OpenListResourceBundle", "OpenListResourceBundle"); doTest("java.text.MessageFormat", "MessageFormat"); doTest("java.security.Provider", "Provider"); doTest("Super<String>", "Super"); doTest("Super<Integer>", "Super"); doTest("Super<T>", "Super"); doTest("SubGeneric<T>", "SubGeneric"); doTest("MyDD<String>", "MyDD"); doTest("java.lang.Class<java.lang.Boolean>", "Class"); doTest("MyProcessor<T>", "MyProcessor"); doTest("Pair<A,B>", "Pair"); doTest("foo.Foo<T>", "Foo"); doTest("java.net.URI", "URI"); doTest("FList<T>", "FList"); doTest("java.util.ArrayList<T>", "ArrayList"); doTest("XXX<X>", "XXX"); doTest("XXX<Z>", "XXX"); doTest("XXX<Z, Z1>", "XXX"); doTest("XXX<ZZZ<Z>>", "XXX"); doTest("Set<T>", "Set"); doTest("Outer.Boo", "Boo"); doTest("Params<", "Params"); doTest("Key<Impl>", "Key"); doTest("ExtensionPointName<T>", "ExtensionPointName"); doTest("X<String>", "X"); doTest("A<StringBuffer>", "A"); doTest("Function<String, String>", "Function"); doTest("java.io.FileFilter", "FileFilter"); doTest("@Join", "Join"); doTest("@Table", "Table"); doTest("Computable<Boolean>", "Computable"); doTest("Comparable<Foo>", "Comparable"); doTest("Goo<String>", "Goo"); doTest("Comparator<String>", "Comparator"); doTest("@A", "A"); doTest("java.awt.geom.Point2D.Double", "Double"); doTest("java.awt.geom.Point2D", "Point2D"); doTest("bar.Bar", "Bar"); doTest("A<T[]>", "A"); doTest("IA<String>", "IA"); doTest("B<K>", "B"); doTest("ArgumentA<Object>", "ArgumentA"); doTest("ClassB<E>", "ClassB"); doTest("ClassA<E>", "ClassA"); doTest("BaseMatcher<String>", "BaseMatcher"); doTest("x.A", "A"); doTest("x.sub.B", "B"); doTest("effectiveAccess.pp<", "pp"); doTest("effectiveAccess.pp", "pp"); doTest("BaseImpl.Inner", "Inner"); doTest("x.Base", "Base"); doTest("@java.lang.Deprecated", "Deprecated"); doTest("I<II>", "I"); doTest("C<Q>", "C"); doTest("AC<CC>", "AC"); doTest("@Deprecated Object", "Object"); doTest("@Ann", "Ann"); doTest("@In", "In"); doTest("@Inner2", "Inner2"); doTest("@java.lang", "lang"); doTest("@Expose", "Expose"); doTest("@Expose1", "Expose1"); doTest("DummyList<? extends String>", "DummyList"); doTest("C<C<U>>", "C"); doTest("C1<C1<U>>", "C1"); doTest("CC<T>", "CC"); doTest("Gen<GT>", "Gen"); doTest("A1<String>", "A1"); doTest("I1<Integer>", "I1"); doTest("II1<Integer>", "II1"); doTest("II2<Integer>", "II2"); doTest("II2<String>", "II2"); doTest("II1<Number>", "II1"); doTest("II2<Number>", "II2"); doTest("AAA<T>", "AAA"); doTest("III<T>", "III"); doTest("Cmp<Singleton<T1>>", "Cmp"); doTest("e<String>", "e"); doTest("ValueChangeListener<Number>", "ValueChangeListener"); doTest("First<S>", "First"); doTest("Second<Integer>", "Second"); doTest("SuperA<T, E>", "SuperA"); doTest("SuperB<T, E>", "SuperB"); doTest("Super<Collection>", "Super"); doTest("TypeDispatcher<T,V>", "TypeDispatcher"); doTest("DefaultDispatcher<Node, String>", "DefaultDispatcher"); doTest("SmartList<Bug2>", "SmartList"); doTest("java.util.List<Bug2>", "List"); doTest("java.util.AbstractList<E>", "AbstractList"); doTest("TableContextAction<Object>", "TableContextAction"); doTest("ActionContext<TableContextAction<TCP>>", "ActionContext"); doTest("ContextAction<TableContext<RO>>", "ContextAction"); doTest("Listener<String>", "Listener"); doTest("I<I>", "I"); doTest("I<T>", "I"); doTest("I<D>", "I"); doTest("DT<T>", "DT"); doTest("b<d, c>", "b"); doTest("c<d, c<c,c>>", "c"); doTest("d<b<c<c,c>,d>>", "d"); doTest("c<K, c<V,V>>", "c"); doTest("d<b<V,K>>", "d"); doTest("Z<Integer>", "Z"); doTest("BaseC<String>", "BaseC"); doTest("Int<T>", "Int"); doTest("A<A>", "A"); doTest("Outer<String>", "Outer"); doTest("Outer<String>.Inner", "Inner"); doTest("AbstractClass<AI>", "AbstractClass"); doTest("AbstractClass<BI>", "AbstractClass"); doTest("PrivilegedExceptionAction<FileNotFoundException>", "PrivilegedExceptionAction"); doTest("Printer<T>", "Printer"); doTest("I1<C1,C2>", "I1"); doTest("I2<C1,C2>", "I2"); doTest("List<Decl>", "List"); doTest("Reference<T>", "Reference"); doTest("Comparable<? super ccc>", "Comparable"); doTest("ArrayList<G1>", "ArrayList"); doTest("WeakReference<T>", "WeakReference"); doTest("Y<Y>", "Y"); doTest("ArrayList<String>", "ArrayList"); doTest("Comparable<C>", "Comparable"); doTest("Comparable<String>", "Comparable"); doTest("ZZZ<K>", "ZZZ"); doTest("Callable<T>", "Callable"); doTest("GenericTest99<E,Double>", "GenericTest99"); doTest("Use99<GenericTest99D<?>,Double>", "Use99"); doTest("A67675<T[]>", "A67675"); doTest("java.util.Comparator<? super T>", "Comparator"); doTest("I2<", "I2"); doTest("java.util.Map<K, V>", "Map"); doTest("AA<BB>", "AA"); doTest("GrandParent<T>", "GrandParent"); doTest("Base<T[]>", "Base"); doTest("Base<T>", "Base"); doTest("AbstractParent<E>", "AbstractParent"); doTest("Interface<E>", "Interface"); doTest("SuperAbstract<Owner, String>", "SuperAbstract"); doTest("HalfGenericSuper<Owner>", "HalfGenericSuper"); doTest("List<E>", "List"); doTest("Comparable<A<T>>", "Comparable"); doTest("A<", "A"); doTest("Runnable<", "Runnable"); doTest("HashMap<K, V>", "HashMap"); doTest("Comparable<Object>", "Comparable"); doTest("A<K>", "A"); doTest("Base <String>", "Base"); doTest("Outer<Other>", "Outer"); doTest("Lst<?, ?>", "Lst"); doTest("Collection<A>", "Collection"); doTest("Matcher<? super T>", "Matcher"); doTest("ThingUser<?>", "ThingUser"); doTest("YO<String>", "YO"); doTest("YO<Integer>", "YO"); doTest("ArrayList<Integer>", "ArrayList"); doTest("Comparable<Date>", "Comparable"); doTest("List<Class<? extends Serializable>>", "List"); doTest("java.lang.Cloneable", "Cloneable"); doTest("Test1<ArrayList>", "Test1"); doTest("Comparator<Object>", "Comparator"); doTest("TestIF3<T>", "TestIF3"); doTest("TestBase<Enum1>", "TestBase"); doTest("Comparable<SortTest<R>>", "Comparable"); doTest("TypeSafeMap<CoreMap>", "TypeSafeMap"); doTest("TypeSafeMap.Key<CoreMap, V>", "Key"); doTest("Map<K,V>", "Map"); doTest("Version<V, R>", "Version"); doTest("Ref<V, R>", "Ref"); doTest("VersionEntity<G, GR>", "VersionEntity"); doTest("RefEntity<G, GR>", "RefEntity"); doTest("Node<?, ?>", "Node"); doTest("IQ<", "IQ"); doTest("P<TB>", "P"); doTest("DomInvocationHandler<FixedChildDescriptionImpl>", "DomInvocationHandler"); doTest("RunConfigurationExtension<Bo>", "RunConfigurationExtension"); doTest("Comparator<I>", "Comparator"); doTest("JSResolveUtil.Resolver<M>", "Resolver"); doTest("JSResolveUtil.F", "F"); doTest("Model<Inner>", "Model"); doTest("Comparator<A.B>", "Comparator"); doTest("IConverter<N>", "IConverter"); doTest("AbstractNumberConverter<Double>", "AbstractNumberConverter"); doTest("IConverter<C>", "IConverter"); doTest("Class<? extends Iterator>", "Class"); doTest("List<? extends AbstractTreeNode>", "List"); doTest("Iterator<T>", "Iterator"); doTest("Class<E>", "Class"); doTest("Comparator<byte[]>", "Comparator"); doTest("C<T,T>", "C"); doTest("A2<T>", "A2"); doTest("A3<T>", "A3"); doTest("IB<", "IB"); doTest("A<S>", "A"); doTest("B<String>", "B"); doTest("List<List<T>>", "List"); doTest("I<A[]>", "I"); doTest("I<B[]>", "I"); doTest("A<S,T>", "A"); doTest("F<A, P1<B>>", "F"); doTest("Iterable<T>", "Iterable"); doTest("A<Integer>", "A"); doTest("Pair<A, B>", "Pair"); doTest("Field<Object>", "Field"); doTest("MyInterface<Object>", "MyInterface"); doTest("Class<I>", "Class"); doTest("Outer.Inner", "Inner"); doTest("Comparator<K>", "Comparator"); doTest("Comparable<SelfComparable>", "Comparable"); doTest("Collection<T>", "Collection"); doTest("Collection<E>", "Collection"); doTest("Iterator<E>", "Iterator"); doTest("UnmodifiableCollection<E>", "UnmodifiableCollection"); doTest("Set<E>", "Set"); doTest("SortedSet<T>", "SortedSet"); doTest("UnmodifiableSet<E>", "UnmodifiableSet"); doTest("SortedSet<E>", "SortedSet"); doTest("ListIterator<E>", "ListIterator"); doTest("UnmodifiableList<E>", "UnmodifiableList"); doTest("UnmodifiableSet<Map.Entry<K,V>>", "UnmodifiableSet"); doTest("Iterator<Map.Entry<K,V>>", "Iterator"); doTest("Map.Entry<K,V>", "Entry"); doTest("SortedMap<K,V>", "SortedMap"); doTest("UnmodifiableMap<K,V>", "UnmodifiableMap"); doTest("SynchronizedCollection<E>", "SynchronizedCollection"); doTest("SynchronizedSet<E>", "SynchronizedSet"); doTest("SynchronizedList<E>", "SynchronizedList"); doTest("SynchronizedMap<K,V>", "SynchronizedMap"); doTest("CheckedCollection<E>", "CheckedCollection"); doTest("CheckedSet<E>", "CheckedSet"); doTest("CheckedList<E>", "CheckedList"); doTest("Set<Map.Entry<K,V>>", "Set"); doTest("CheckedMap<K,V>", "CheckedMap"); doTest("AbstractSet<Object>", "AbstractSet"); doTest("Iterator<Object>", "Iterator"); doTest("AbstractList<Object>", "AbstractList"); doTest("AbstractMap<Object,Object>", "AbstractMap"); doTest("AbstractSet<E>", "AbstractSet"); doTest("AbstractList<E>", "AbstractList"); doTest("AbstractMap<K,V>", "AbstractMap"); doTest("Comparator<T>", "Comparator"); doTest("Comparator<Comparable<Object>>", "Comparator"); doTest("Enumeration<T>", "Enumeration"); doTest("java.util.SortedMap", "SortedMap"); doTest("java.util.AbstractList", "AbstractList"); doTest("java.util.TreeMap", "TreeMap"); doTest("java.util.concurrent.atomic.AtomicBoolean", "AtomicBoolean"); doTest("x.n.X1", "X1"); doTest("x.n.X2", "X2"); doTest("x.n.X3", "X3"); doTest("java.util.X", "X"); doTest("java.io.Reader", "Reader"); doTest("java.security.cert.Certificate", "Certificate"); doTest("i<", "i"); doTest("ii<", "ii"); doTest("i2<", "i2"); doTest("A57.X", "X"); doTest("A.B", "B"); doTest("A42.B", "B"); doTest("B57.X", "X"); doTest("c4<", "c4"); doTest("i7<", "i7"); doTest("c8<", "c8"); doTest("i5<", "i5"); doTest("ConflictWithObject<", "ConflictWithObject"); doTest("MethodsFromObject<", "MethodsFromObject"); doTest("java.awt.event.ActionEvent", "ActionEvent"); doTest("a<", "a"); doTest("A1<", "A1"); doTest("Foo<", "Foo"); doTest("c2<", "c2"); doTest("c1<", "c1"); doTest("java.awt.BufferCapabilities", "BufferCapabilities"); doTest("java.io.ObjectOutput", "ObjectOutput"); doTest("java.io.ObjectInput", "ObjectInput"); doTest("java.lang.ClassNotFoundException", "ClassNotFoundException"); doTest("IFoo.UNKNOWN", "UNKNOWN"); doTest("Integer.MAX_VALUE", "MAX_VALUE"); doTest("Inner1<", "Inner1"); doTest("D.B", "B"); doTest("D.", ""); doTest("D.B1", "B1"); doTest("A.B1", "B1"); doTest("C1.B1", "B1"); doTest("@java.lang.SuppressWarnings", "SuppressWarnings"); doTest("BaseStream<T>", "BaseStream"); doTest("StreamOp<E_IN, Node<E_OUT>>", "StreamOp"); doTest("IntermediateOp<E_IN, E_OUT>", "IntermediateOp"); doTest("StreamOp<E_IN, R>", "StreamOp"); doTest("StatefulOp<T, T>", "StatefulOp"); doTest("Foo1<Integer, Integer>", "Foo1"); doTest("List<B>", "List"); doTest("Optional<U>", "Optional"); doTest("BiFunction<T, T, T>", "BiFunction"); doTest("Collector<T, M1>", "Collector"); doTest("BinaryOperator<M2>", "BinaryOperator"); doTest("Collector<T, R>", "Collector"); doTest("C<T, M1>", "C"); doTest("BiOp<M2>", "BiOp"); doTest("C<T, R>", "C"); doTest("BiFun<T, T, T>", "BiFun"); doTest("Map<A, B>", "Map"); doTest("Map<K1, M1>", "Map"); doTest("FindOp<MT, Optional<MT>>", "FindOp"); doTest("TerminalSink<FindSinkT, FindSinkO>", "TerminalSink"); doTest("FindSink<OfRefT, Optional<OfRefT>>", "FindSink"); doTest("FindOp1<MT, Optional<MT>>", "FindOp1"); doTest("FindOp2<MT, Optional<MT>>", "FindOp2"); doTest("Optional<T>", "Optional"); doTest("Consumer<T>", "Consumer"); doTest("@FunctionalInterface", "FunctionalInterface"); doTest("Sink<Integer>", "Sink"); doTest("Sink<T>", "Sink"); doTest("FirstParent<", "FirstParent"); doTest("Block<T>", "Block"); doTest("TerminalSink<T, Void>", "TerminalSink"); doTest("VoidTerminalSink<Integer>", "VoidTerminalSink"); doTest("Sink.OfInt", "OfInt"); doTest("VoidTerminalSink.OfInt<", "OfInt"); doTest("ForEachOp<T>", "ForEachOp"); doTest("VoidTerminalSink.OfInt", "OfInt"); doTest("Iso<R, T>", "Iso"); doTest("I<X>", "I"); doTest("I1<T>", "I1"); doTest("I2<T>", "I2"); doTest("Y<Object>", "Y"); doTest("BinaryOperator<Integer>", "BinaryOperator"); doTest("Combiner<T,T,T>", "Combiner"); doTest("IntermediateOp<L, M>", "IntermediateOp"); doTest("IntermediateOp1<T, U>", "IntermediateOp1"); doTest("I<A,B>", "I"); doTest("A<L>", "A"); doTest("SameArgsI<T>", "SameArgsI"); doTest("LambdaTest<U>", "LambdaTest"); doTest("Option<T>", "Option"); doTest("Function<T, Integer>", "Function"); doTest("BaseStream<Integer>", "BaseStream"); doTest("Comparator<Map.Entry<K, V>>", "Comparator"); doTest("Function<T, T>", "Function"); doTest("A<M>", "A"); doTest("Foo<X>", "Foo"); doTest("Iterable<U>", "Iterable"); doTest("ASink<R, Moo>", "ASink"); doTest("ASink<AAMoo, AAMoo>", "ASink"); doTest("ASink<R, AAAMoo>", "ASink"); doTest("Collector<T, C>", "Collector"); doTest("Collector<T, List<T>>", "Collector"); doTest("Stream<C>", "Stream"); doTest("BiFunction<T,T,T>", "BiFunction"); doTest("Collector<Integer, R>", "Collector"); doTest("C.E2", "E2"); doTest("C.E1", "E1"); doTest("java.nio.charset.Charset", "Charset"); doTest("java.nio.charset.CharsetDecoder", "CharsetDecoder"); doTest("I<String>", "I"); doTest("InOut<B>", "InOut"); doTest("DeeBee<B>", "DeeBee"); doTest("b<C.D>", "b"); doTest("b<String>", "b"); doTest("Foo.Bar", "Bar"); doTest("@Attr", "Attr"); doTest("javax.swing.table.TableModel", "TableModel"); doTest("javax.swing.event.TableModelListener", "TableModelListener"); doTest("@BeanAware", "BeanAware"); doTest("java.awt.MenuContainer", "MenuContainer"); doTest("java.lang.Number", "Number"); doTest("Foo<Bug>", "Foo"); doTest("Seq<T>", "Seq"); doTest("Seq<V>", "Seq"); doTest("Comparable<R>", "Comparable"); doTest("@org.jetbrains.annotations.NonNls", "NonNls"); doTest("org.jetbrains.annotations.NonNls", "NonNls"); doTest("@NonNls", "NonNls"); doTest("MatchOp<T>", "MatchOp"); doTest("BooleanTerminalSink<T>", "BooleanTerminalSink"); doTest("Callable<String>", "Callable"); doTest("Callable<Integer>", "Callable"); doTest("AsyncTask<String, Integer, Long>", "AsyncTask"); doTest("AsyncTask<String,Integer,Integer>", "AsyncTask"); doTest("List<AppInfo>", "List"); doTest("ArrayList<ResolveInfo>", "ArrayList"); doTest("CallableEx<String>", "CallableEx"); doTest("Callable<TE>", "Callable"); doTest("CallableEx<Integer>", "CallableEx"); doTest("TestCase<caret>", "TestCase"); doTest("@org.ju", "ju"); doTest("l.InLib", "InLib"); doTest("junit.framework.Assert", "Assert"); doTest("junit.framework.TestCase", "TestCase"); doTest("junit.framework.Test", "Test"); doTest("junit.framework.TestSuite", "TestSuite"); doTest("junit.framework.TestResult", "TestResult"); doTest("junit.framework.TestListener", "TestListener"); doTest("junit.framework.TestFailure", "TestFailure"); doTest("junit.framework.ComparisonFailure", "ComparisonFailure"); doTest("junit.framework.AssertionFailedError", "AssertionFailedError"); doTest("x.InA", "InA"); doTest("y.AddDependency", "AddDependency"); doTest("y.AddLibrary", "AddLibrary"); doTest("x.DoTest", "DoTest"); doTest("@org.junit.Test", "Test"); doTest("org.junit.Test", "Test"); doTest("x.DoTest4", "DoTest4"); doTest("Some<K, T>", "Some"); doTest("java.util.Collection<? super T>", "Collection"); doTest("I.FOO", "FOO"); doTest("I.FOO1", "FOO1"); doTest("I.FOO2", "FOO2"); doTest("I.FOO3", "FOO3"); doTest("I.FOO4", "FOO4"); doTest("I.FOO5", "FOO5"); doTest("@java.lang.SafeVarargs", "SafeVarargs"); doTest("M<T>", "M"); doTest("M<String>", "M"); doTest("@javax.annotation.Generated", "Generated"); doTest("II<String>", "II"); doTest("AroundTemplateMethod<T>", "AroundTemplateMethod"); doTest("SetupTimer<Integer>", "SetupTimer"); doTest("bar.Log", "Log"); doTest("@Bar.Foo", "Foo"); doTest("I<Object>", "I"); doTest("Superclass<E, Q>", "Superclass"); doTest("@org.testng.annotations.Test", "Test"); doTest("@org.junit.Before", "Before"); doTest("Ref<T>", "Ref"); doTest("M<MX, MY>", "M"); doTest("Proc<String>", "Proc"); doTest("Proc<Integer>", "Proc"); doTest("java.util.Iterator", "Iterator"); doTest("p1.Base", "Base"); doTest("javax.swing.Icon", "Icon"); doTest("java.awt.Dialog", "Dialog"); doTest("javax.swing.JLabel", "JLabel"); doTest("test.Matcher", "Matcher"); doTest("java.util.Collections.CopiesList", "CopiesList"); doTest("java.util.Collections.EmptyList", "EmptyList"); doTest("java.util.Collections.EmptyMap", "EmptyMap"); doTest("java.util.Collections.EmptySet", "EmptySet"); doTest("java.util.Collections.ReverseComparator", "ReverseComparator"); doTest("java.util.Collections.ReverseComparator2", "ReverseComparator2"); doTest("java.util.Collections.SelfComparable", "SelfComparable"); doTest("java.util.Collections.SingletonList", "SingletonList"); doTest("java.util.Collections.SingletonMap", "SingletonMap"); doTest("java.util.Collections.SingletonMap.ImmutableEntry", "ImmutableEntry"); doTest("java.util.Collections.SingletonSet", "SingletonSet"); doTest("java.util.Collections.SynchronizedCollection", "SynchronizedCollection"); doTest("java.util.Collections.SynchronizedList", "SynchronizedList"); doTest("java.util.Collections.SynchronizedMap", "SynchronizedMap"); doTest("java.util.Collections.SynchronizedRandomAccessList", "SynchronizedRandomAccessList"); doTest("java.util.Collections.SynchronizedSet", "SynchronizedSet"); doTest("java.util.Collections.SynchronizedSortedMap", "SynchronizedSortedMap"); doTest("java.util.Collections.SynchronizedSortedSet", "SynchronizedSortedSet"); doTest("java.util.Collections.UnmodifiableCollection", "UnmodifiableCollection"); doTest("java.util.Collections.UnmodifiableList", "UnmodifiableList"); doTest("java.util.Collections.UnmodifiableMap", "UnmodifiableMap"); doTest("java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet", "UnmodifiableEntrySet"); doTest("java.util.Collections.UnmodifiableMap.UnmodifiableEntrySet.UnmodifiableEntry", "UnmodifiableEntry"); doTest("java.util.Collections.UnmodifiableRandomAccessList", "UnmodifiableRandomAccessList"); doTest("java.util.Collections.UnmodifiableSet", "UnmodifiableSet"); doTest("java.util.Collections.UnmodifiableSortedMap", "UnmodifiableSortedMap"); doTest("java.util.Collections.UnmodifiableSortedSet", "UnmodifiableSortedSet"); doTest("java.util.Map.Entry", "Entry"); doTest("AnnotatedNonStaticInnerClassConstructor.Inner", "Inner"); doTest("pack.Modifiers", "Modifiers"); doTest("pkg.Deprecated", "Deprecated"); doTest("pkg.package-info", "package-info"); doTest("pkg.Nested", "Nested"); doTest("pkg.Nested.Inner1", "Inner1"); doTest("pkg.Nested.Inner1.Inner2", "Inner2"); doTest("pkg.SimpleEnum", "SimpleEnum"); doTest("pkg.EnumWithFields", "EnumWithFields"); doTest("pkg.NormalClass", "NormalClass"); doTest("pkg.NormalClass.Inner", "Inner"); doTest("pkg.Annotations", "Annotations"); doTest("pkg.Annotations.IndeterminateAnno", "IndeterminateAnno"); doTest("pkg.Annotations.A4", "A4"); doTest("pkg.Annotations.A3", "A3"); doTest("pkg.Annotations.A2", "A2"); doTest("pkg.Annotations.A1", "A1"); doTest("pkg.ParameterNames", "ParameterNames"); doTest("pkg.EmptyEnum", "EmptyEnum"); doTest("pkg.$BuckClass", "$BuckClass"); doTest("pkg.BuckClass$", "BuckClass$"); doTest("pkg.ExtMethods", "ExtMethods"); doTest("pkg.MethodReceiver", "MethodReceiver"); doTest("pkg.MethodReceiver.A", "A"); doTest("com.google.android.maps.OverlayItem", "OverlayItem"); doTest("com.google.android.maps.GeoPoint", "GeoPoint"); doTest("android.graphics.drawable.Drawable", "Drawable"); doTest("com.TestClass", "TestClass"); doTest("ppp.BadClass", "BadClass"); doTest("@AnnotationType", "AnnotationType"); doTest("@annotations.AnnotationType", "AnnotationType"); doTest("List<Integer>", "List"); doTest("List<List<Integer>>", "List"); doTest("pack.MyClass", "MyClass"); doTest("p2.A", "A"); doTest("p1.A", "A"); doTest("Parent.Child", "Child"); doTest("net.n3.nanoxml.XMLUtil", "XMLUtil"); doTest("net.n3.nanoxml.PIReader", "PIReader"); doTest("net.n3.nanoxml.XMLWriter", "XMLWriter"); doTest("net.n3.nanoxml.IXMLParser", "IXMLParser"); doTest("net.n3.nanoxml.XMLElement", "XMLElement"); doTest("net.n3.nanoxml.CDATAReader", "CDATAReader"); doTest("net.n3.nanoxml.IXMLElement", "IXMLElement"); doTest("net.n3.nanoxml.NonValidator", "NonValidator"); doTest("net.n3.nanoxml.StdXMLParser", "StdXMLParser"); doTest("net.n3.nanoxml.StdXMLReader", "StdXMLReader"); doTest("net.n3.nanoxml.XMLAttribute", "XMLAttribute"); doTest("net.n3.nanoxml.StdXMLReader.StackedReader", "StackedReader"); doTest("net.n3.nanoxml.XMLException", "XMLException"); doTest("net.n3.nanoxml.ContentReader", "ContentReader"); doTest("net.n3.nanoxml.StdXMLBuilder", "StdXMLBuilder"); doTest("net.n3.nanoxml.ValidatorPlugin", "ValidatorPlugin"); doTest("net.n3.nanoxml.XMLParserFactory", "XMLParserFactory"); doTest("net.n3.nanoxml.XMLEntityResolver", "XMLEntityResolver"); doTest("net.n3.nanoxml.XMLParseException", "XMLParseException"); doTest("net.n3.nanoxml.XMLValidationException", "XMLValidationException"); doTest("com.google.protobuf.Message", "Message"); doTest("com.google.protobuf.RpcUtil", "RpcUtil"); doTest("com.google.protobuf.Service", "Service"); doTest("com.google.protobuf.Message.Builder", "Builder"); doTest("com.google.protobuf.FieldSet", "FieldSet"); doTest("com.google.protobuf.FieldSet.FieldDescriptorLite", "FieldDescriptorLite"); doTest("com.google.protobuf.Internal", "Internal"); doTest("com.google.protobuf.RpcUtil.AlreadyCalledException", "AlreadyCalledException"); doTest("com.google.protobuf.Internal.EnumLiteMap", "EnumLiteMap"); doTest("com.google.protobuf.RpcCallback<Type>", "RpcCallback"); doTest("com.google.protobuf.Internal.EnumLite", "EnumLite"); doTest("com.google.protobuf.MessageLite", "MessageLite"); doTest("com.google.protobuf.MessageOrBuilder", "MessageOrBuilder"); doTest("com.google.protobuf.MessageLite.Builder", "Builder"); doTest("com.google.protobuf.RpcCallback<com.google.protobuf.Message>", "RpcCallback"); doTest("com.google.protobuf.ByteString", "ByteString"); doTest("com.google.protobuf.RpcCallback<ParameterType>", "RpcCallback"); doTest("com.google.protobuf.RpcChannel", "RpcChannel"); doTest("com.google.protobuf.ByteString.CodedBuilder", "CodedBuilder"); doTest("com.google.protobuf.TextFormat", "TextFormat"); doTest("com.google.protobuf.WireFormat", "WireFormat"); doTest("com.google.protobuf.TextFormat.InvalidEscapeSequenceException", "InvalidEscapeSequenceException"); doTest("com.google.protobuf.WireFormat.FieldType", "FieldType"); doTest("com.google.protobuf.ByteString.Output", "Output"); doTest("com.google.protobuf.TextFormat.ParseException", "ParseException"); doTest("com.google.protobuf.TextFormat.Tokenizer", "Tokenizer"); doTest("com.google.protobuf.WireFormat.JavaType", "JavaType"); doTest("java.io.FilterOutputStream", "FilterOutputStream"); doTest("java.lang.Comparable<T>", "Comparable"); doTest("com.google.protobuf.FieldSet<T>", "FieldSet"); doTest("com.google.protobuf.Descriptors", "Descriptors"); doTest("com.google.protobuf.RpcCallback", "RpcCallback"); doTest("com.google.protobuf.Descriptors.DescriptorPool", "DescriptorPool"); doTest("com.google.protobuf.RpcController", "RpcController"); doTest("com.google.protobuf.DynamicMessage", "DynamicMessage"); doTest("com.google.protobuf.Descriptors.DescriptorPool.DescriptorIntPair", "DescriptorIntPair"); doTest("com.google.protobuf.DynamicMessage.Builder", "Builder"); doTest("com.google.protobuf.TextFormat.TextGenerator", "TextGenerator"); doTest("com.google.protobuf.Descriptors.DescriptorPool.PackageDescriptor", "PackageDescriptor"); doTest("com.google.protobuf.MessageLiteOrBuilder", "MessageLiteOrBuilder"); doTest("com.google.protobuf.TextFormat.Printer", "Printer"); doTest("com.google.protobuf.LazyStringList", "LazyStringList"); doTest("java.util.List<java.lang.String>", "List"); doTest("com.google.protobuf.SmallSortedMap", "SmallSortedMap"); doTest("com.google.protobuf.SmallSortedMap.EmptySet", "EmptySet"); doTest("com.google.protobuf.SmallSortedMap.EntryIterator", "EntryIterator"); doTest("com.google.protobuf.SmallSortedMap.EntrySet", "EntrySet"); doTest("com.google.protobuf.SmallSortedMap.Entry", "Entry"); doTest("java.util.AbstractMap<K,V>", "AbstractMap"); doTest("java.lang.Iterable<T>", "Iterable"); doTest("java.util.Iterator<java.util.Map.Entry<K,V>>", "Iterator"); doTest("java.util.AbstractSet<java.util.Map.Entry<K,V>>", "AbstractSet"); doTest("java.lang.Comparable<com.google.protobuf.SmallSortedMap<K,V>.Entry>", "Comparable"); doTest("com.google.protobuf.SmallSortedMap<FieldDescriptorType,java.lang.Object>", "SmallSortedMap"); doTest("com.google.protobuf.SmallSortedMap<K,V>", "SmallSortedMap"); doTest("com.google.protobuf.AbstractMessage", "AbstractMessage"); doTest("com.google.protobuf.AbstractMessage.Builder<com.google.protobuf.DynamicMessage.Builder>", "Builder"); doTest("com.google.protobuf.Descriptors.DescriptorValidationException", "DescriptorValidationException"); doTest("com.google.protobuf.BlockingService", "BlockingService"); doTest("com.google.protobuf.AbstractMessage.Builder", "Builder"); doTest("com.google.protobuf.Descriptors.GenericDescriptor", "GenericDescriptor"); doTest("com.google.protobuf.UnknownFieldSet", "UnknownFieldSet"); doTest("com.google.protobuf.UnknownFieldSet.Field", "Field"); doTest("com.google.protobuf.Descriptors.MethodDescriptor", "MethodDescriptor"); doTest("com.google.protobuf.UnknownFieldSet.Field.Builder", "Builder"); doTest("com.google.protobuf.CodedInputStream", "CodedInputStream"); doTest("com.google.protobuf.UnknownFieldSet.Builder", "Builder"); doTest("com.google.protobuf.Descriptors.ServiceDescriptor", "ServiceDescriptor"); doTest("com.google.protobuf.AbstractMessageLite", "AbstractMessageLite"); doTest("com.google.protobuf.AbstractMessageLite.Builder<BuilderType>", "Builder"); doTest("com.google.protobuf.UninitializedMessageException", "UninitializedMessageException"); doTest("com.google.protobuf.GeneratedMessage", "GeneratedMessage"); doTest("com.google.protobuf.GeneratedMessage.FieldAccessorTable", "FieldAccessorTable"); doTest("com.google.protobuf.GeneratedMessage.FieldAccessorTable.RepeatedMessageFieldAccessor", "RepeatedMessageFieldAccessor"); doTest("com.google.protobuf.Descriptors.EnumValueDescriptor", "EnumValueDescriptor"); doTest("com.google.protobuf.ServiceException", "ServiceException"); doTest("com.google.protobuf.Descriptors.EnumDescriptor", "EnumDescriptor"); doTest("com.google.protobuf.GeneratedMessage.FieldAccessorTable.SingularMessageFieldAccessor", "SingularMessageFieldAccessor"); doTest("com.google.protobuf.CodedOutputStream", "CodedOutputStream"); doTest("com.google.protobuf.CodedOutputStream.OutOfSpaceException", "OutOfSpaceException"); doTest("com.google.protobuf.Descriptors.FieldDescriptor", "FieldDescriptor"); doTest("com.google.protobuf.GeneratedMessage.FieldAccessorTable.RepeatedEnumFieldAccessor", "RepeatedEnumFieldAccessor"); doTest("com.google.protobuf.Descriptors.FieldDescriptor.JavaType", "JavaType"); doTest("com.google.protobuf.ExtensionRegistry", "ExtensionRegistry"); doTest("com.google.protobuf.ExtensionRegistry.DescriptorIntPair", "DescriptorIntPair"); doTest("com.google.protobuf.ExtensionRegistry.ExtensionInfo", "ExtensionInfo"); doTest("com.google.protobuf.Descriptors.FieldDescriptor.Type", "Type"); doTest("com.google.protobuf.GeneratedMessage.FieldAccessorTable.SingularEnumFieldAccessor", "SingularEnumFieldAccessor"); doTest("com.google.protobuf.ExtensionRegistryLite", "ExtensionRegistryLite"); doTest("com.google.protobuf.BlockingRpcChannel", "BlockingRpcChannel"); doTest("com.google.protobuf.SingleFieldBuilder", "SingleFieldBuilder"); doTest("com.google.protobuf.GeneratedMessage.BuilderParent", "BuilderParent"); doTest("com.google.protobuf.GeneratedMessage.FieldAccessorTable.RepeatedFieldAccessor", "RepeatedFieldAccessor"); doTest("com.google.protobuf.AbstractMessageLite.Builder", "Builder"); doTest("com.google.protobuf.AbstractMessageLite.Builder.LimitedInputStream", "LimitedInputStream"); doTest("java.io.FilterInputStream", "FilterInputStream"); doTest("com.google.protobuf.LazyStringArrayList", "LazyStringArrayList"); doTest("com.google.protobuf.GeneratedMessage.FieldAccessorTable.SingularFieldAccessor", "SingularFieldAccessor"); doTest("java.util.AbstractList<java.lang.String>", "AbstractList"); doTest("java.util.RandomAccess", "RandomAccess"); doTest("com.google.protobuf.ProtocolMessageEnum", "ProtocolMessageEnum"); doTest("com.google.protobuf.GeneratedMessageLite", "GeneratedMessageLite"); doTest("com.google.protobuf.GeneratedMessageLite.SerializedForm", "SerializedForm"); doTest("com.google.protobuf.GeneratedMessageLite.GeneratedExtension", "GeneratedExtension"); doTest("com.google.protobuf.GeneratedMessage.FieldAccessorTable.FieldAccessor", "FieldAccessor"); doTest("com.google.protobuf.Descriptors.Descriptor", "Descriptor"); doTest("com.google.protobuf.GeneratedMessageLite.ExtensionDescriptor", "ExtensionDescriptor"); doTest("com.google.protobuf.GeneratedMessage.GeneratedExtension", "GeneratedExtension"); doTest("com.google.protobuf.GeneratedMessageLite.Builder", "Builder"); doTest("com.google.protobuf.GeneratedMessage.ExtensionDescriptorRetriever", "ExtensionDescriptorRetriever"); doTest("com.google.protobuf.FieldSet.FieldDescriptorLite<com.google.protobuf.GeneratedMessageLite.ExtensionDescriptor>", "FieldDescriptorLite"); doTest("com.google.protobuf.GeneratedMessageLite.Builder<MessageType,BuilderType>", "Builder"); doTest("com.google.protobuf.GeneratedMessageLite.GeneratedExtension<ContainingType,Type>", "GeneratedExtension"); doTest("com.google.protobuf.Descriptors.FileDescriptor", "FileDescriptor"); doTest("com.google.protobuf.RepeatedFieldBuilder", "RepeatedFieldBuilder"); doTest("com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner", "InternalDescriptorAssigner"); doTest("com.google.protobuf.RepeatedFieldBuilder.MessageOrBuilderExternalList", "MessageOrBuilderExternalList"); doTest("com.google.protobuf.RepeatedFieldBuilder.BuilderExternalList", "BuilderExternalList"); doTest("com.google.protobuf.RepeatedFieldBuilder.MessageExternalList", "MessageExternalList"); doTest("java.util.AbstractList<IType>", "AbstractList"); doTest("java.util.List<IType>", "List"); doTest("java.util.AbstractList<BType>", "AbstractList"); doTest("java.util.List<BType>", "List"); doTest("java.util.AbstractList<MType>", "AbstractList"); doTest("java.util.List<MType>", "List"); doTest("com.google.protobuf.ExtensionRegistryLite.ObjectIntPair", "ObjectIntPair"); doTest("com.google.protobuf.GeneratedMessage.Builder", "Builder"); doTest("com.google.protobuf.Internal.EnumLiteMap<com.google.protobuf.Descriptors.EnumValueDescriptor>", "EnumLiteMap"); doTest("java.lang.Comparable<com.google.protobuf.Descriptors.FieldDescriptor>", "Comparable"); doTest("com.google.protobuf.FieldSet.FieldDescriptorLite<com.google.protobuf.Descriptors.FieldDescriptor>", "FieldDescriptorLite"); doTest("com.google.protobuf.GeneratedMessage.Builder.BuilderParentImpl", "BuilderParentImpl"); doTest("com.google.protobuf.UnmodifiableLazyStringList", "UnmodifiableLazyStringList"); doTest("Map<Integer, Integer>", "Map"); doTest("java.lang.Comparable<T.NameRef>", "Comparable"); doTest("List<T[]>", "List"); doTest("Condition<T>", "Condition"); doTest("Class<Foo>", "Class"); doTest("Class<Runnable>", "Class"); doTest("Foo<BarImpl>", "Foo"); doTest("Y<T>", "Y"); doTest("GenericClass<String>", "GenericClass"); doTest("A.I", "I"); doTest("Test<T>", "Test"); doTest("Comparable<Integer>", "Comparable"); doTest("Iterator<Map.Entry<K, V>>", "Iterator"); doTest("Predicate<T>", "Predicate"); doTest("Foo.Predicate<T>", "Predicate"); doTest("Callable<Object>", "Callable"); doTest("C<String>", "C"); doTest("p1.S2", "S2"); doTest("p2.S1", "S1"); doTest("p1.S1", "S1"); doTest("p2.S2", "S2"); doTest("p2.p1.S1", "S1"); doTest("p2.p1.S2", "S2"); doTest("@javax.xml.bind.annotation.XmlSchema", "XmlSchema"); doTest("A <R>", "A"); doTest("Extracted.Inner", "Inner"); doTest("java.util.List<String>", "List"); doTest("@java.lang.Override", "Override"); doTest("a.Test", "Test"); doTest("b.TestSubclass", "TestSubclass"); doTest("java.util.ListIterator", "ListIterator"); doTest("p1.AA", "AA"); doTest("p2.C", "C"); doTest("java.math.BigDecimal", "BigDecimal"); doTest("java.sql.SQLWarning", "SQLWarning"); doTest("java.sql.ResultSetMetaData", "ResultSetMetaData"); doTest("java.sql.Statement", "Statement"); doTest("java.sql.Ref", "Ref"); doTest("java.sql.Blob", "Blob"); doTest("java.sql.Clob", "Clob"); doTest("java.sql.Array", "Array"); doTest("java.sql.ResultSet", "ResultSet"); doTest("p.Test", "Test"); doTest("p1.Usage", "Usage"); doTest("Super<R>", "Super"); doTest("java.lang.Comparable<java.lang.Long>", "Comparable"); doTest("R<String, Object>", "R"); doTest("Res.R<java.lang.String,java.lang.Object>", "R"); doTest("Res.R<String,java.lang.Object>", "R"); doTest("Res.R<String,Object>", "R"); doTest("Res.R<String, Object>", "R"); doTest("@Before", "Before"); doTest("org.junit.Before", "Before"); doTest("Test<G, T>", "Test"); doTest("p.Param", "Param"); doTest("p2.Test", "Test"); doTest("pack1.Class2", "Class2"); doTest("pack2.Class1", "Class1"); doTest("pack1.X", "X"); doTest("pack2.X", "X"); doTest("pack2.A", "A"); doTest("pack1.Class1", "Class1"); doTest("packUser.Class2", "Class2"); doTest("pack0.Class0", "Class0"); doTest("pack2.A.Class1", "Class1"); doTest("A.Class1", "Class1"); doTest("pack1.Usage", "Usage"); doTest("pack1.StaticInner", "StaticInner"); doTest("pack1.Client", "Client"); doTest("xxx.Outer", "Outer"); doTest("p.A.B", "B"); doTest("p.A", "A"); doTest("p.B", "B"); doTest("package2.InnerClass", "InnerClass"); doTest("package1.OuterClass", "OuterClass"); doTest("pack1.DImpl", "DImpl"); doTest("pack1.A", "A"); doTest("pack1.B", "B"); doTest("pack2.B", "B"); doTest("pack1.Outer", "Outer"); doTest("POne<Hooray<A>>", "POne"); doTest("Eff<POne<A>, A>", "Eff"); doTest("@SomeAnnotation", "SomeAnnotation"); doTest("pack2.OtherClass", "OtherClass"); doTest("pack1.ClassWithStaticMethod", "ClassWithStaticMethod"); doTest("bar.A", "A"); doTest("A.Inner", "Inner"); doTest("B.Inner", "Inner"); doTest("target.pack1.S1", "S1"); doTest("pack2.UsagesFromBoth", "UsagesFromBoth"); doTest("pack2.UsagesFromBoth2", "UsagesFromBoth2"); doTest("Parent<T>", "Parent"); doTest("Parent<String>", "Parent"); doTest("I<S>", "I"); doTest("Base<U>", "Base"); doTest("javax.swing.JTextField", "JTextField"); doTest("Test<Throwable>", "Test"); doTest("BaseTask<T, ForEachTask<T>>", "BaseTask"); doTest("pack1.List", "List"); doTest("pack2.Usage2", "Usage2"); doTest("pack2.Usage", "Usage"); doTest("pack1.ParentXXX", "ParentXXX"); doTest("pack1.Derived", "Derived"); doTest("pack1.Object", "Object"); doTest("renameCollisions.String", "String"); doTest("javax.swing.SwingConstants", "SwingConstants"); doTest("Holder<X>", "Holder"); doTest("MyEventListener<Object>", "MyEventListener"); doTest("foo.Builder", "Builder"); doTest("Test<A, B, C>", "Test"); doTest("B<TC>", "B"); doTest("A<TB>", "A"); doTest("A<TC>", "A"); doTest("pack1.AnInterface", "AnInterface"); doTest("pack1.AClass", "AClass"); doTest("pack2.Client", "Client"); doTest("Int<Xyz>", "Int"); doTest("Int<XInt>", "Int"); doTest("Factory<IntF>", "Factory"); doTest("Factory<Clazz>", "Factory"); doTest("LinkedList<Integer>", "LinkedList"); doTest("LinkedList<E, T>", "LinkedList"); doTest("LinkedList<E, Integer>", "LinkedList"); doTest("Map<Integer, Y>", "Map"); doTest("List<X>", "List"); doTest("Collection<X>", "Collection"); doTest("List<P>", "List"); doTest("C<String,Integer>", "C"); doTest("C<Integer, String,Integer>", "C"); doTest("C<Integer, String >", "C"); doTest("C<String, L<String>>", "C"); doTest("Subject<String>", "Subject"); doTest("Subject<SubjectFace, Set<Object>>", "Subject"); doTest("Subject<SubjectFace, java.util.Set<Object>>", "Subject"); doTest("X<U>", "X"); doTest("java.util.TreeMap.Entry", "Entry"); doTest("java.util.TreeMap.Entry<K,?>", "Entry"); doTest("java.util.TreeMap.Entry<K,V>", "Entry"); doTest("java.util.Comparator<? super K>", "Comparator"); doTest("WeighingComparable<T, Loc>", "WeighingComparable"); doTest("Key<ProximityWeigher>", "Key"); doTest("Weigher<String, ProximityLocation>", "Weigher"); doTest("Comparable<WeighingComparable<T, Loc>>", "Comparable"); doTest("p1.ParentWithProtected", "ParentWithProtected"); doTest("p1.SubjectWithSuper", "SubjectWithSuper"); doTest("p2.Usage", "Usage"); doTest("p1.ParentUniqueName", "ParentUniqueName"); doTest("p1.ChildCtor", "ChildCtor"); doTest("java.util.Comparator<String>", "Comparator"); doTest("Demo.MyParent", "MyParent"); doTest("A.MyActionListener", "MyActionListener"); doTest("Comparable<T>", "Comparable"); doTest("qqq.aaa.Yahoo", "Yahoo"); doTest("p1.C1", "C1"); doTest("zzz.bbb.QQQ", "QQQ"); } @Test public void shortNameWithTypeAnnotations() { doTest("java.util.@NotAllowed Date", "Date"); doTest("@IllegalSyntax java.util.Date", "Date"); doTest("Map<@NonNull String, @NonEmpty List<@Readonly Document>>", "Map"); doTest("@NonEmpty @Readonly List<@Readonly String>", "List"); doTest("Map.@NonNull Entry", "Entry"); doTest("MyClass<@Immutable ? extends Comparable<MyClass>>", "MyClass"); } private static void doTest(String referenceText, String shortName) { assertEquals(shortName, PsiNameHelper.getShortClassName(referenceText)); } }