blob: badc5c43a9a6d3d37c4fa8cea490a9f6eae5fbb1 [file] [log] [blame]
// Copyright (c) 2016, the R8 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.android.tools.r8.utils;
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.nio.file.Paths;
import org.junit.Test;
public class DescriptorUtilsTest {
@Test
public void toShorty() {
assertEquals("Z", DescriptorUtils.javaTypeToShorty("boolean"));
assertEquals("B", DescriptorUtils.javaTypeToShorty("byte"));
assertEquals("S", DescriptorUtils.javaTypeToShorty("short"));
assertEquals("C", DescriptorUtils.javaTypeToShorty("char"));
assertEquals("I", DescriptorUtils.javaTypeToShorty("int"));
assertEquals("J", DescriptorUtils.javaTypeToShorty("long"));
assertEquals("F", DescriptorUtils.javaTypeToShorty("float"));
assertEquals("D", DescriptorUtils.javaTypeToShorty("double"));
assertEquals("L", DescriptorUtils.javaTypeToShorty("int[]"));
assertEquals("L", DescriptorUtils.javaTypeToShorty("int[][]"));
assertEquals("L", DescriptorUtils.javaTypeToShorty("java.lang.Object"));
assertEquals("L", DescriptorUtils.javaTypeToShorty("a.b.C"));
}
@Test
public void toDescriptor() {
assertEquals("Z", DescriptorUtils.javaTypeToDescriptor("boolean"));
assertEquals("B", DescriptorUtils.javaTypeToDescriptor("byte"));
assertEquals("S", DescriptorUtils.javaTypeToDescriptor("short"));
assertEquals("C", DescriptorUtils.javaTypeToDescriptor("char"));
assertEquals("I", DescriptorUtils.javaTypeToDescriptor("int"));
assertEquals("J", DescriptorUtils.javaTypeToDescriptor("long"));
assertEquals("F", DescriptorUtils.javaTypeToDescriptor("float"));
assertEquals("D", DescriptorUtils.javaTypeToDescriptor("double"));
assertEquals("[I", DescriptorUtils.javaTypeToDescriptor("int[]"));
assertEquals("[[I", DescriptorUtils.javaTypeToDescriptor("int[][]"));
assertEquals("Ljava/lang/Object;", DescriptorUtils.javaTypeToDescriptor("java.lang.Object"));
assertEquals("La/b/C;", DescriptorUtils.javaTypeToDescriptor("a.b.C"));
}
@Test
public void fromDescriptor() {
String obj = "Ljava/lang/Object;";
assertEquals("Object", DescriptorUtils.getUnqualifiedClassNameFromDescriptor(obj));
assertEquals("java.lang.Object", DescriptorUtils.getClassNameFromDescriptor(obj));
assertEquals("java.lang", DescriptorUtils.getPackageNameFromDescriptor(obj));
assertEquals("java/lang/Object", DescriptorUtils.getClassBinaryNameFromDescriptor(obj));
}
@Test
public void toJavaType() {
assertEquals("boolean", DescriptorUtils.descriptorToJavaType("Z"));
assertEquals("byte", DescriptorUtils.descriptorToJavaType("B"));
assertEquals("short", DescriptorUtils.descriptorToJavaType("S"));
assertEquals("char", DescriptorUtils.descriptorToJavaType("C"));
assertEquals("int", DescriptorUtils.descriptorToJavaType("I"));
assertEquals("long", DescriptorUtils.descriptorToJavaType("J"));
assertEquals("float", DescriptorUtils.descriptorToJavaType("F"));
assertEquals("double", DescriptorUtils.descriptorToJavaType("D"));
assertEquals("int[]", DescriptorUtils.descriptorToJavaType("[I"));
assertEquals("int[][]", DescriptorUtils.descriptorToJavaType("[[I"));
assertEquals("java.lang.Object", DescriptorUtils.descriptorToJavaType("Ljava/lang/Object;"));
assertEquals("a.b.C", DescriptorUtils.descriptorToJavaType("La/b/C;"));
}
@Test
public void guessClassDescriptor() {
String obj = "java/lang/Object.class";
assertEquals("Ljava/lang/Object;", DescriptorUtils.guessTypeDescriptor(obj));
String objBackslash = "java\\lang\\Object.class";
assertEquals("Ljava\\lang\\Object;", DescriptorUtils.guessTypeDescriptor(objBackslash));
String objFileSeparatorChar =
"java" + File.separatorChar + "lang" + File.separatorChar + "Object.class";
assertEquals("Ljava/lang/Object;",
DescriptorUtils.guessTypeDescriptor(Paths.get(objFileSeparatorChar)));
}
}