mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
122 lines
4.3 KiB
C++
122 lines
4.3 KiB
C++
// 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 <string>
|
|
#include <vector>
|
|
|
|
#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<fml::Mapping> 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<SkData> 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<uint8_t>& buffer, MemsetPatternOp op);
|
|
|
|
} // namespace testing
|
|
} // namespace flutter
|
|
|
|
#endif // FLUTTER_TESTING_TESTING_H_
|