# HG changeset patch # User kzhaldyb # Date 1473246148 -10800 # Wed Sep 07 14:02:28 2016 +0300 # Node ID 83c70b2a3396101de7c6dfb54df527126dfdb0f6 # Parent f722ed07b76bb8ffc26672ab952be7c0648fdc8f 8165433: Convert Test_linked_list to Gtest Reviewed-by: duke diff --git a/src/share/vm/utilities/internalVMTests.cpp b/src/share/vm/utilities/internalVMTests.cpp --- a/src/share/vm/utilities/internalVMTests.cpp +++ b/src/share/vm/utilities/internalVMTests.cpp @@ -62,7 +62,6 @@ run_unit_test(TestBitMap_test); run_unit_test(TestResourcehash_test); run_unit_test(ObjectMonitor_test); - run_unit_test(Test_linked_list); run_unit_test(TestChunkedList_test); run_unit_test(JSON_test); run_unit_test(Test_log_tag_combinations_limit); diff --git a/src/share/vm/utilities/linkedlist.cpp b/test/native/utilities/test_linkedlist.cpp rename from src/share/vm/utilities/linkedlist.cpp rename to test/native/utilities/test_linkedlist.cpp --- a/src/share/vm/utilities/linkedlist.cpp +++ b/test/native/utilities/test_linkedlist.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -19,96 +19,103 @@ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. - * + */ #include "precompiled.hpp" - -/////////////// Unit tests /////////////// - -#ifndef PRODUCT - -#include "runtime/os.hpp" +#include "unittest.hpp" #include "utilities/linkedlist.hpp" -#include "memory/allocation.hpp" -#include "memory/allocation.inline.hpp" class Integer : public StackObj { private: - int _value; + int _value; public: - Integer(int i) : _value(i) { } - int value() const { return _value; } - bool equals(const Integer& i) const { - return _value == i.value(); + Integer(int i) : _value(i) { + } + + int value() const { + return _value; + } + + bool equals(const Integer& i) const { + return _value == i.value(); + } + + static int compare(const Integer& i1, const Integer& i2) { + return i1.value() - i2.value(); } }; -int compare_Integer(const Integer& i1, const Integer& i2) { - return i1.value() - i2.value(); -} - -void check_list_values(const int* expected, const LinkedList* list) { +static void check_list_values(const int* expected, const LinkedList* list) { LinkedListNode* head = list->head(); int index = 0; while (head != NULL) { - assert(head->peek()->value() == expected[index], "Unexpected value"); + ASSERT_EQ(head->peek()->value(), expected[index]) + << "Unexpected value at index " << index; head = head->next(); - index ++; + index++; } } -void Test_linked_list() { - LinkedListImpl ll; +const Integer one(1), two(2), three(3), four(4), five(5), six(6); +// Test regular linked list +TEST(LinkedList, simple) { + LinkedListImpl ll; - // Test regular linked list - assert(ll.is_empty(), "Start with empty list"); - Integer one(1), two(2), three(3), four(4), five(5), six(6); + ASSERT_TRUE(ll.is_empty()) << "Start with empty list"; ll.add(six); - assert(!ll.is_empty(), "Should not be empty"); + ASSERT_TRUE(!ll.is_empty()) << "Should not be empty"; Integer* i = ll.find(six); - assert(i != NULL, "Should find it"); + ASSERT_NE(i, (Integer*) NULL) << "Should find it"; + ASSERT_EQ(i->value(), six.value()) << "Should be 6"; i = ll.find(three); - assert(i == NULL, "Not in the list"); + ASSERT_EQ(i, (Integer*) NULL) << "Not in the list"; LinkedListNode* node = ll.find_node(six); - assert(node != NULL, "6 is in the list"); + ASSERT_NE(node, (LinkedListNode*) NULL) << "6 is in the list"; ll.insert_after(three, node); ll.insert_before(one, node); int expected[3] = {1, 6, 3}; check_list_values(expected, &ll); +} +// Test sorted linked list +TEST(SortedLinkedList, simple) { + LinkedListImpl ll; + ll.add(one); + ll.add(six); + ll.add(three); ll.add(two); ll.add(four); ll.add(five); - // Test sorted linked list - SortedLinkedList sl; - assert(sl.is_empty(), "Start with empty list"); + SortedLinkedList sl; + ASSERT_TRUE(sl.is_empty()) << "Start with empty list"; size_t ll_size = ll.size(); sl.move(&ll); size_t sl_size = sl.size(); - assert(ll_size == sl_size, "Should be the same size"); - assert(ll.is_empty(), "No more entires"); + ASSERT_EQ(ll_size, sl_size) << "Should be the same size"; + ASSERT_TRUE(ll.is_empty()) << "No more entries"; // sorted result int sorted_result[] = {1, 2, 3, 4, 5, 6}; check_list_values(sorted_result, &sl); + if (HasFatalFailure()) { + return; + } - node = sl.find_node(four); - assert(node != NULL, "4 is in the list"); + LinkedListNode* node = sl.find_node(four); + ASSERT_NE(node, (LinkedListNode*) NULL) << "4 is in the list"; sl.remove_before(node); sl.remove_after(node); int remains[] = {1, 2, 4, 6}; check_list_values(remains, &sl); } -#endif // PRODUCT -