Path: blob/master/test/hotspot/gtest/runtime/test_classLoader.cpp
41144 views
/*1* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223#include "precompiled.hpp"24#include "classfile/classLoader.hpp"25#include "classfile/symbolTable.hpp"26#include "memory/resourceArea.hpp"27#include "unittest.hpp"2829// Tests ClassLoader::package_from_class_name()30TEST_VM(ClassLoader, null_class_name) {31bool bad_class_name = false;32TempNewSymbol retval = ClassLoader::package_from_class_name(NULL, &bad_class_name);33ASSERT_TRUE(bad_class_name) << "Function did not set bad_class_name with NULL class name";34ASSERT_TRUE(retval == NULL) << "Wrong package for NULL class name pointer";35}3637TEST_VM(ClassLoader, empty_class_name) {38bool bad_class_name = false;39TempNewSymbol name = SymbolTable::new_symbol("");40TempNewSymbol retval = ClassLoader::package_from_class_name(name, &bad_class_name);41ASSERT_TRUE(retval == NULL) << "Wrong package for empty string";42}4344TEST_VM(ClassLoader, no_slash) {45bool bad_class_name = false;46TempNewSymbol name = SymbolTable::new_symbol("L");47TempNewSymbol retval = ClassLoader::package_from_class_name(name, &bad_class_name);48ASSERT_FALSE(bad_class_name) << "Function set bad_class_name with empty package";49ASSERT_TRUE(retval == NULL) << "Wrong package for class with no slashes";50}5152TEST_VM(ClassLoader, just_slash) {53bool bad_class_name = false;54TempNewSymbol name = SymbolTable::new_symbol("/");55TempNewSymbol retval = ClassLoader::package_from_class_name(name, &bad_class_name);56ASSERT_TRUE(bad_class_name) << "Function did not set bad_class_name with package of length 0";57ASSERT_TRUE(retval == NULL) << "Wrong package for class with just slash";58}5960TEST_VM(ClassLoader, multiple_slashes) {61bool bad_class_name = false;62TempNewSymbol name = SymbolTable::new_symbol("///");63TempNewSymbol retval = ClassLoader::package_from_class_name(name, &bad_class_name);64ASSERT_FALSE(bad_class_name) << "Function set bad_class_name with slashes package";65ASSERT_TRUE(retval->equals("//")) << "Wrong package for class with just slashes";66}6768TEST_VM(ClassLoader, standard_case_1) {69bool bad_class_name = false;70TempNewSymbol name = SymbolTable::new_symbol("package/class");71TempNewSymbol retval = ClassLoader::package_from_class_name(name, &bad_class_name);72ASSERT_FALSE(bad_class_name) << "Function set bad_class_name for valid package";73ASSERT_TRUE(retval->equals("package")) << "Wrong package for class with one slash";74}7576TEST_VM(ClassLoader, standard_case_2) {77bool bad_class_name = false;78TempNewSymbol name = SymbolTable::new_symbol("package/folder/class");79TempNewSymbol retval = ClassLoader::package_from_class_name(name, &bad_class_name);80ASSERT_FALSE(bad_class_name) << "Function set bad_class_name for valid package";81ASSERT_TRUE(retval->equals("package/folder")) << "Wrong package for class with multiple slashes";82}8384TEST_VM(ClassLoader, class_array) {85bool bad_class_name = false;86TempNewSymbol name = SymbolTable::new_symbol("[package/class");87TempNewSymbol retval = ClassLoader::package_from_class_name(name, &bad_class_name);88ASSERT_FALSE(bad_class_name) << "Function set bad_class_name with class array";89ASSERT_TRUE(retval->equals("package")) << "Wrong package for class with leading bracket";90}9192TEST_VM(ClassLoader, class_multiarray) {93bool bad_class_name = false;94TempNewSymbol name = SymbolTable::new_symbol("[[package/class");95TempNewSymbol retval = ClassLoader::package_from_class_name(name, &bad_class_name);96ASSERT_FALSE(bad_class_name) << "Function set bad_class_name with class array";97ASSERT_TRUE(retval->equals("package")) << "Wrong package for class with leading bracket";98}99100TEST_VM(ClassLoader, class_object_array) {101bool bad_class_name = false;102TempNewSymbol name = SymbolTable::new_symbol("[Lpackage/class");103TempNewSymbol retval = ClassLoader::package_from_class_name(name, &bad_class_name);104ASSERT_TRUE(bad_class_name) << "Function did not set bad_class_name with array of class objects";105ASSERT_TRUE(retval == NULL) << "Wrong package for class with leading '[L'";106}107108109