8 #include "flutter/fml/mapping.h"
9 #include "flutter/testing/testing.h"
11 #include "impeller/shader_archive/shader_archive_flatbuffers.h"
18 std::string p_string) {
19 auto string = std::make_shared<std::string>(std::move(p_string));
20 return std::make_shared<fml::NonOwnedMapping>(
21 reinterpret_cast<const uint8_t*
>(string->data()), string->size(),
22 [
string](
auto,
auto) {});
26 return std::string{
reinterpret_cast<const char*
>(mapping.GetMapping()),
30 TEST(ShaderArchiveTest, CanReadAndWriteBlobs) {
44 ASSERT_NE(mapping,
nullptr);
47 ASSERT_TRUE(library.ok());
48 ASSERT_EQ(library->GetShaderCount(), 5u);
55 ASSERT_NE(hello_vtx,
nullptr);
59 TEST(ShaderArchiveTest, ReturnsErrorOnInvalidVersion) {
60 fb::ShaderArchiveT shader_archive;
61 shader_archive.format_version = -1;
63 auto builder = std::make_shared<flatbuffers::FlatBufferBuilder>();
64 builder->Finish(fb::ShaderArchive::Pack(*builder.get(), &shader_archive),
65 fb::ShaderArchiveIdentifier());
66 auto mapping = std::make_shared<fml::NonOwnedMapping>(
67 builder->GetBufferPointer(), builder->GetSize(),
68 [builder](
auto,
auto) {});
71 ASSERT_FALSE(library.ok());
72 ASSERT_EQ(library.status().code(), absl::StatusCode::kInvalidArgument);
73 std::stringstream stream;
74 stream <<
"Unsupported shader archive format version. Expected: "
75 <<
static_cast<uint32_t
>(fb::ShaderArchiveFormatVersion::kVersion)
76 <<
", Got: 4294967295";
77 ASSERT_EQ(library.status().message(), stream.str());
static absl::StatusOr< ShaderArchive > Create(std::shared_ptr< fml::Mapping > payload)
bool AddShader(ArchiveShaderType type, std::string name, std::shared_ptr< fml::Mapping > mapping)
std::shared_ptr< fml::Mapping > CreateMapping() const
const std::string CreateStringFromMapping(const fml::Mapping &mapping)
TEST(AllocationSizeTest, CanCreateTypedAllocations)
static std::shared_ptr< fml::Mapping > CreateMappingFromString(std::string p_string)