Nuke Builders Part 3: remove validation test builder expectations
BUG=dawn:125 Change-Id: I64a0b957e39b60334916ad71fb4beee5d8baa9db Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/6162 Reviewed-by: Austin Eng <enga@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
parent
cb2c64f7d9
commit
c3155205fa
|
@ -54,22 +54,6 @@ ValidationTest::~ValidationTest() {
|
|||
|
||||
void ValidationTest::TearDown() {
|
||||
ASSERT_FALSE(mExpectError);
|
||||
|
||||
for (auto& expectation : mExpectations) {
|
||||
std::string name = expectation.debugName;
|
||||
if (name.empty()) {
|
||||
name = "<no debug name set>";
|
||||
}
|
||||
|
||||
ASSERT_TRUE(expectation.gotStatus) << "Didn't get a status for " << name;
|
||||
|
||||
ASSERT_NE(DAWN_BUILDER_ERROR_STATUS_UNKNOWN, expectation.status) << "Got unknown status for " << name;
|
||||
|
||||
bool wasSuccess = expectation.status == DAWN_BUILDER_ERROR_STATUS_SUCCESS;
|
||||
ASSERT_EQ(expectation.expectSuccess, wasSuccess)
|
||||
<< "Got wrong status value for " << name
|
||||
<< ", status was " << expectation.status << " with \"" << expectation.statusMessage << "\"";
|
||||
}
|
||||
}
|
||||
|
||||
void ValidationTest::StartExpectDeviceError() {
|
||||
|
@ -89,32 +73,11 @@ void ValidationTest::OnDeviceError(const char* message, DawnCallbackUserdata use
|
|||
auto self = reinterpret_cast<ValidationTest*>(static_cast<uintptr_t>(userdata));
|
||||
self->mDeviceErrorMessage = message;
|
||||
|
||||
// Skip this one specific error that is raised when a builder is used after it got an error
|
||||
// this is important because we don't want to wrap all creation tests in ASSERT_DEVICE_ERROR.
|
||||
// Yes the error message is misleading.
|
||||
if (self->mDeviceErrorMessage == "Builder cannot be used after GetResult") {
|
||||
return;
|
||||
}
|
||||
|
||||
ASSERT_TRUE(self->mExpectError) << "Got unexpected device error: " << message;
|
||||
ASSERT_FALSE(self->mError) << "Got two errors in expect block";
|
||||
self->mError = true;
|
||||
}
|
||||
|
||||
// static
|
||||
void ValidationTest::OnBuilderErrorStatus(DawnBuilderErrorStatus status, const char* message, dawn::CallbackUserdata userdata1, dawn::CallbackUserdata userdata2) {
|
||||
auto* self = reinterpret_cast<ValidationTest*>(static_cast<uintptr_t>(userdata1));
|
||||
size_t index = static_cast<size_t>(userdata2);
|
||||
|
||||
ASSERT_LT(index, self->mExpectations.size());
|
||||
|
||||
auto& expectation = self->mExpectations[index];
|
||||
ASSERT_FALSE(expectation.gotStatus);
|
||||
expectation.gotStatus = true;
|
||||
expectation.status = status;
|
||||
expectation.statusMessage = message;
|
||||
}
|
||||
|
||||
ValidationTest::DummyRenderPass::DummyRenderPass(const dawn::Device& device)
|
||||
: attachmentFormat(dawn::TextureFormat::R8G8B8A8Unorm), width(400), height(400) {
|
||||
|
||||
|
|
|
@ -35,20 +35,6 @@ class ValidationTest : public testing::Test {
|
|||
|
||||
void TearDown() override;
|
||||
|
||||
// Use these methods to add expectations on the validation of a builder. The expectations are
|
||||
// checked on test teardown. Adding an expectation is done like the following:
|
||||
//
|
||||
// dawn::Foo foo = AssertWillBe[Success|Error](device.CreateFooBuilder(), "my foo")
|
||||
// .SetBar(1)
|
||||
// .GetResult();
|
||||
//
|
||||
// The string argument is optional but will be printed when an expectations is missed, this
|
||||
// will help debug tests where multiple expectations are added.
|
||||
template<typename Builder>
|
||||
Builder AssertWillBeSuccess(Builder builder, std::string debugName = "");
|
||||
template<typename Builder>
|
||||
Builder AssertWillBeError(Builder builder, std::string debugName = "");
|
||||
|
||||
void StartExpectDeviceError();
|
||||
bool EndExpectDeviceError();
|
||||
std::string GetLastDeviceErrorMessage() const;
|
||||
|
@ -78,47 +64,6 @@ class ValidationTest : public testing::Test {
|
|||
std::string mDeviceErrorMessage;
|
||||
bool mExpectError = false;
|
||||
bool mError = false;
|
||||
|
||||
struct BuilderStatusExpectations {
|
||||
bool expectSuccess;
|
||||
std::string debugName;
|
||||
|
||||
bool gotStatus = false;
|
||||
std::string statusMessage;
|
||||
DawnBuilderErrorStatus status;
|
||||
};
|
||||
std::vector<BuilderStatusExpectations> mExpectations;
|
||||
|
||||
template<typename Builder>
|
||||
Builder AddExpectation(Builder& builder, std::string debugName, bool expectSuccess);
|
||||
|
||||
static void OnBuilderErrorStatus(DawnBuilderErrorStatus status, const char* message, dawn::CallbackUserdata userdata1, dawn::CallbackUserdata userdata2);
|
||||
};
|
||||
|
||||
// Template implementation details
|
||||
|
||||
template<typename Builder>
|
||||
Builder ValidationTest::AssertWillBeSuccess(Builder builder, std::string debugName) {
|
||||
return AddExpectation(builder, debugName, true);
|
||||
}
|
||||
|
||||
template<typename Builder>
|
||||
Builder ValidationTest::AssertWillBeError(Builder builder, std::string debugName) {
|
||||
return AddExpectation(builder, debugName, false);
|
||||
}
|
||||
|
||||
template<typename Builder>
|
||||
Builder ValidationTest::AddExpectation(Builder& builder, std::string debugName, bool expectSuccess) {
|
||||
uint64_t userdata1 = reinterpret_cast<uintptr_t>(this);
|
||||
uint64_t userdata2 = mExpectations.size();
|
||||
builder.SetErrorCallback(OnBuilderErrorStatus, userdata1, userdata2);
|
||||
|
||||
mExpectations.emplace_back();
|
||||
auto& expectation = mExpectations.back();
|
||||
expectation.expectSuccess = expectSuccess;
|
||||
expectation.debugName = debugName;
|
||||
|
||||
return std::move(builder);
|
||||
}
|
||||
|
||||
#endif // TESTS_UNITTESTS_VALIDATIONTEST_H_
|
||||
|
|
Loading…
Reference in New Issue