// Copyright 2021 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_TEST_CCTEST_TEST_SWISS_HASH_TABLE_SHARED_TESTS_H_ #define V8_TEST_CCTEST_TEST_SWISS_HASH_TABLE_SHARED_TESTS_H_ #include <algorithm> #include <optional> #include <string> #include "test/cctest/test-swiss-name-dictionary-infra.h" namespace v8 { namespace internal { namespace test_swiss_hash_table { // The name of the test-*.cc file that executes the tests below with the // RuntimeTestRunner. extern const char kRuntimeTestFileName[]; // The name of the test-*.cc file that executes the tests below with the // CSATestRunner. extern const char kCSATestFileName[]; // This class contains test cases for SwissNameDictionary that can be executed // by different "test runners", which are supplied as a template parameter. The // TestRunner determines how the operations on dictionaries are actually // executed. Currently there are two TestRunners: RuntimeTestRunner calls C++ // functions, whereas CSATestRunner executes dictionary operations by executing // CSA-generated code. // To execute the tests, just create an instance of the class below with an // appropriate TestRunner. // Whenever creating an instance of this class in a file bar.cc, the template // parameter |kTestFileName| should be set to the name of the file that // *instantiates the class* (i.e., "bar.cc"). This ensures that the tests // defined below are then registred within the overall cctest machinery as if // they were directly written within bar.cc. template <typename TestRunner, char const* kTestFileName> struct SharedSwissTableTests { … }; } // namespace test_swiss_hash_table } // namespace internal } // namespace v8 #endif // V8_TEST_CCTEST_TEST_SWISS_HASH_TABLE_SHARED_TESTS_H_