Files
msime-windows/server/tests/src/test_async_request_origin.cpp
T

54 lines
1.9 KiB
C++

#include "ipc/async_request_origin.h"
#include "tests/includes/test_framework.h"
TEST_CASE(async_result_must_be_revalidated_after_waiting_in_the_queue)
{
FanyImeIpc::AsyncRequestOrigin active{1001, 7, 1, "ni"};
const auto queued = active;
REQUIRE(active.matches(queued.input, queued.generation));
active = {1001, 7, 2, "hao"};
active = {1001, 7, 3, "ni"};
// The pipe owner and text match again, but the queued response is obsolete.
REQUIRE(!active.matches(queued.input, queued.generation));
REQUIRE(active.matches("ni", 3));
REQUIRE(!active.matches("hao", 3));
}
TEST_CASE(async_result_is_rejected_after_request_invalidation)
{
FanyImeIpc::AsyncRequestOrigin active{1001, 7, 1, "ni"};
active = {};
REQUIRE(!active.matches("ni", 1));
REQUIRE(!active.matches("", 0));
active = {1001, 0, 1, "ni"};
REQUIRE(!active.matches("ni", 1));
active = {0, 7, 1, "ni"};
REQUIRE(!active.matches("ni", 1));
}
TEST_CASE(async_request_keeps_the_original_engine_identity_when_queued)
{
FanyImeIpc::AsyncRequestOrigin active{1001, 7, 1, "ni"};
metasequoia::OnlineQuery query;
query.session_id = 21;
query.generation = 8;
query.identity = "quanpin:ni";
query.query_text = "ni";
query.cache_key = "ni";
query.pinyin_segments = {"ni"};
query.cloud_eligible = true;
query.ai_eligible = true;
active.engine_query = query;
const auto queued = active;
active.engine_query->session_id = 22;
active.engine_query->generation = 9;
REQUIRE(queued.engine_query->session_id == 21);
REQUIRE(queued.engine_query->generation == 8);
REQUIRE(queued.engine_query->identity == query.identity);
REQUIRE(queued.engine_query->query_text == query.query_text);
REQUIRE(queued.engine_query->cache_key == query.cache_key);
REQUIRE(queued.engine_query->pinyin_segments == query.pinyin_segments);
REQUIRE(queued.engine_query->cloud_eligible && queued.engine_query->ai_eligible);
}