// Copyright 2013 The Flutter 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 FLUTTER_TESTING_TESTING_H_ #define FLUTTER_TESTING_TESTING_H_ #include #include #include "flutter/fml/file.h" #include "flutter/fml/mapping.h" #include "flutter/testing/assertions.h" #include "gtest/gtest.h" #include "third_party/skia/include/core/SkData.h" namespace flutter { namespace testing { const char* GetSourcePath(); //------------------------------------------------------------------------------ /// @brief Returns the directory containing the test fixture for the target /// if this target has fixtures configured. If there are no /// fixtures, this is a link error. If you see a linker error on /// this symbol, the unit-test target needs to depend on a /// `test_fixtures` target. /// /// @return The fixtures path. /// const char* GetFixturesPath(); //------------------------------------------------------------------------------ /// @brief Returns the directory containing assets shared across all tests. /// /// @return The testing assets path. /// const char* GetTestingAssetsPath(); //------------------------------------------------------------------------------ /// @brief Returns the default path to kernel_blob.bin. This file is within /// the directory returned by `GetFixturesPath()`. /// /// @return The kernel file path. /// std::string GetDefaultKernelFilePath(); //------------------------------------------------------------------------------ /// @brief Opens the fixtures directory for the unit-test harness. /// /// @return The file descriptor of the fixtures directory. /// fml::UniqueFD OpenFixturesDirectory(); //------------------------------------------------------------------------------ /// @brief Opens a fixture of the given file name. /// /// @param[in] fixture_name The fixture name /// /// @return The file descriptor of the given fixture. An invalid file /// descriptor is returned in case the fixture is not found. /// fml::UniqueFD OpenFixture(const std::string& fixture_name); //------------------------------------------------------------------------------ /// @brief Opens a fixture of the given file name and returns a mapping to /// its contents. /// /// @param[in] fixture_name The fixture name /// /// @return A mapping to the contents of fixture or null if the fixture does /// not exist or its contents cannot be mapped in. /// std::unique_ptr OpenFixtureAsMapping( const std::string& fixture_name); //------------------------------------------------------------------------------ /// @brief Opens a fixture of the given file name and returns a Skia SkData /// holding its contents. /// /// @param[in] fixture_name The fixture name /// /// @return An SkData, or null if the fixture does not exist or its contents /// cannot be mapped in. /// sk_sp OpenFixtureAsSkData(const std::string& fixture_name); //------------------------------------------------------------------------------ /// @brief Gets the name of the currently running test. This is useful in /// generating logs or assets based on test name. /// /// @return The current test name. /// std::string GetCurrentTestName(); enum class MemsetPatternOp { kMemsetPatternOpSetBuffer, kMemsetPatternOpCheckBuffer, }; //------------------------------------------------------------------------------ /// @brief Depending on the operation, either scribbles a known pattern /// into the buffer or checks if that pattern is present in an /// existing buffer. This is a portable variant of the /// memset_pattern class of methods that also happen to do assert /// that the same pattern exists. /// /// @param buffer The buffer /// @param[in] size The size /// @param[in] op The operation /// /// @return If the result of the operation was a success. /// bool MemsetPatternSetOrCheck(uint8_t* buffer, size_t size, MemsetPatternOp op); bool MemsetPatternSetOrCheck(std::vector& buffer, MemsetPatternOp op); } // namespace testing } // namespace flutter #endif // FLUTTER_TESTING_TESTING_H_