More module IsValid tests
Bug: tint:11 Change-Id: I1ce2b930f3dbf40791fa68963037e7b9f122658f Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/16664 Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
This commit is contained in:
parent
f300756eff
commit
3eaf827cc8
|
@ -29,9 +29,30 @@ const Import* Module::FindImportByName(const std::string& name) {
|
||||||
|
|
||||||
bool Module::IsValid() const {
|
bool Module::IsValid() const {
|
||||||
for (const auto& import : imports_) {
|
for (const auto& import : imports_) {
|
||||||
if (!import->IsValid())
|
if (import == nullptr || !import->IsValid()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
for (const auto& var : global_variables_) {
|
||||||
|
if (var == nullptr || !var->IsValid()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const auto& ep : entry_points_) {
|
||||||
|
if (ep == nullptr || !ep->IsValid()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const auto& alias : alias_types_) {
|
||||||
|
if (alias == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const auto& func : functions_) {
|
||||||
|
if (func == nullptr || !func->IsValid()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,11 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
|
#include "src/ast/entry_point.h"
|
||||||
|
#include "src/ast/function.h"
|
||||||
|
#include "src/ast/import.h"
|
||||||
|
#include "src/ast/type/f32_type.h"
|
||||||
|
#include "src/ast/variable.h"
|
||||||
|
|
||||||
namespace tint {
|
namespace tint {
|
||||||
namespace ast {
|
namespace ast {
|
||||||
|
@ -62,17 +67,104 @@ TEST_F(ModuleTest, IsValid_Empty) {
|
||||||
EXPECT_TRUE(m.IsValid());
|
EXPECT_TRUE(m.IsValid());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ModuleTest, IsValid_InvalidImport) {
|
TEST_F(ModuleTest, IsValid_Import) {
|
||||||
Module m;
|
|
||||||
m.AddImport(std::make_unique<Import>());
|
|
||||||
EXPECT_FALSE(m.IsValid());
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(ModuleTest, IsValid_ValidImport) {
|
|
||||||
Module m;
|
Module m;
|
||||||
m.AddImport(std::make_unique<Import>("GLSL.std.430", "std::glsl"));
|
m.AddImport(std::make_unique<Import>("GLSL.std.430", "std::glsl"));
|
||||||
EXPECT_TRUE(m.IsValid());
|
EXPECT_TRUE(m.IsValid());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_Null_Import) {
|
||||||
|
Module m;
|
||||||
|
m.AddImport(nullptr);
|
||||||
|
EXPECT_FALSE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_Invalid_Import) {
|
||||||
|
Module m;
|
||||||
|
m.AddImport(std::make_unique<Import>());
|
||||||
|
EXPECT_FALSE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_GlobalVariable) {
|
||||||
|
type::F32Type f32;
|
||||||
|
auto var = std::make_unique<Variable>("var", StorageClass::kInput, &f32);
|
||||||
|
|
||||||
|
Module m;
|
||||||
|
m.AddGlobalVariable(std::move(var));
|
||||||
|
EXPECT_TRUE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_Null_GlobalVariable) {
|
||||||
|
Module m;
|
||||||
|
m.AddGlobalVariable(nullptr);
|
||||||
|
EXPECT_FALSE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_Invalid_GlobalVariable) {
|
||||||
|
auto var = std::make_unique<Variable>("var", StorageClass::kInput, nullptr);
|
||||||
|
|
||||||
|
Module m;
|
||||||
|
m.AddGlobalVariable(std::move(var));
|
||||||
|
EXPECT_FALSE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_EntryPoint) {
|
||||||
|
Module m;
|
||||||
|
m.AddEntryPoint(
|
||||||
|
std::make_unique<EntryPoint>(PipelineStage::kVertex, "main", "vtx_main"));
|
||||||
|
EXPECT_TRUE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_Null_EntryPoint) {
|
||||||
|
Module m;
|
||||||
|
m.AddEntryPoint(nullptr);
|
||||||
|
EXPECT_FALSE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_Invalid_EntryPoint) {
|
||||||
|
Module m;
|
||||||
|
m.AddEntryPoint(std::make_unique<EntryPoint>());
|
||||||
|
EXPECT_FALSE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_Alias) {
|
||||||
|
type::F32Type f32;
|
||||||
|
type::AliasType alias("alias", &f32);
|
||||||
|
|
||||||
|
Module m;
|
||||||
|
m.AddAliasType(&alias);
|
||||||
|
EXPECT_TRUE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_Null_Alias) {
|
||||||
|
Module m;
|
||||||
|
m.AddAliasType(nullptr);
|
||||||
|
EXPECT_FALSE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_Function) {
|
||||||
|
type::F32Type f32;
|
||||||
|
auto func = std::make_unique<Function>(
|
||||||
|
"main", std::vector<std::unique_ptr<Variable>>(), &f32);
|
||||||
|
|
||||||
|
Module m;
|
||||||
|
m.AddFunction(std::move(func));
|
||||||
|
EXPECT_TRUE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_Null_Function) {
|
||||||
|
Module m;
|
||||||
|
m.AddFunction(nullptr);
|
||||||
|
EXPECT_FALSE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ModuleTest, IsValid_Invalid_Function) {
|
||||||
|
auto func = std::make_unique<Function>();
|
||||||
|
|
||||||
|
Module m;
|
||||||
|
m.AddFunction(std::move(func));
|
||||||
|
EXPECT_FALSE(m.IsValid());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ast
|
} // namespace ast
|
||||||
} // namespace tint
|
} // namespace tint
|
||||||
|
|
Loading…
Reference in New Issue