54 lines
1.9 KiB
C++
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);
|
|
}
|