Skip to content

ui::testing::TestMessageBoxHost

Header: winui/testing/TestMessageBoxHost.hpp.

Derives from ui::MessageBoxHost.

MessageBoxHost test double: shows nothing, records every box it was asked for and answers with answer.

Install it with set_message_box_host(); ui::message_box() then reaches it. It uninstalls itself when destroyed.

Example:

ui::testing::TestMessageBoxHost boxes;
ui::testing::set_message_box_host(&boxes);
boxes.answer = ui::MessageBoxResult::No;

const ui::MessageBoxResult result =
    ui::message_box({.text = "Save changes?", .buttons = ui::MessageBoxButtons::YesNo});
REQUIRE(result == ui::MessageBoxResult::No);
REQUIRE(boxes.shown.size() == 1);
REQUIRE(boxes.shown[0].text == "Save changes?");

answer

MessageBoxResult answer = MessageBoxResult::Ok

What every box answers.

shown

std::vector<MessageBoxOptions> shown

Every box shown so far, oldest first.

owners

std::vector<const Window*> owners

The owner of each box in shown, nullptr for a box without one.

TestMessageBoxHost

TestMessageBoxHost() = default

~TestMessageBoxHost

~TestMessageBoxHost() override

Uninstalls it if it is still the installed host.

TestMessageBoxHost

TestMessageBoxHost(const TestMessageBoxHost&) = delete

operator=

TestMessageBoxHost& operator=(const TestMessageBoxHost&) = delete

show

MessageBoxResult show(const Window* owner, const MessageBoxOptions& options) override

Appends options to shown and owner to owners, and returns answer.