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:
Corentin Wallez 2019-04-01 21:16:08 +00:00 committed by Commit Bot service account
parent cb2c64f7d9
commit c3155205fa
2 changed files with 0 additions and 92 deletions

View File

@ -54,22 +54,6 @@ ValidationTest::~ValidationTest() {
void ValidationTest::TearDown() { void ValidationTest::TearDown() {
ASSERT_FALSE(mExpectError); 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() { 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)); auto self = reinterpret_cast<ValidationTest*>(static_cast<uintptr_t>(userdata));
self->mDeviceErrorMessage = message; 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_TRUE(self->mExpectError) << "Got unexpected device error: " << message;
ASSERT_FALSE(self->mError) << "Got two errors in expect block"; ASSERT_FALSE(self->mError) << "Got two errors in expect block";
self->mError = true; 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) ValidationTest::DummyRenderPass::DummyRenderPass(const dawn::Device& device)
: attachmentFormat(dawn::TextureFormat::R8G8B8A8Unorm), width(400), height(400) { : attachmentFormat(dawn::TextureFormat::R8G8B8A8Unorm), width(400), height(400) {

View File

@ -35,20 +35,6 @@ class ValidationTest : public testing::Test {
void TearDown() override; 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(); void StartExpectDeviceError();
bool EndExpectDeviceError(); bool EndExpectDeviceError();
std::string GetLastDeviceErrorMessage() const; std::string GetLastDeviceErrorMessage() const;
@ -78,47 +64,6 @@ class ValidationTest : public testing::Test {
std::string mDeviceErrorMessage; std::string mDeviceErrorMessage;
bool mExpectError = false; bool mExpectError = false;
bool mError = 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_ #endif // TESTS_UNITTESTS_VALIDATIONTEST_H_