mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-10-17 17:33:21 +08:00
[feat] add remote host version checks and update prompts
This commit is contained in:
@@ -134,6 +134,7 @@ int main() {
|
||||
crossdesk::RemoteAction host{};
|
||||
host.type = crossdesk::ControlType::host_infomation;
|
||||
std::strcpy(host.i.host_name, "Test Mac");
|
||||
std::strcpy(host.i.app_version, "1.5.3-2-20260928");
|
||||
host.i.host_name_size = std::strlen(host.i.host_name);
|
||||
host.i.display_list = display_names;
|
||||
host.i.display_num = 1;
|
||||
@@ -145,6 +146,7 @@ int main() {
|
||||
ok &= Expect(parsed_host.from_json(host.to_json()) &&
|
||||
parsed_host.i.display_num == 1 &&
|
||||
std::string(parsed_host.i.host_name) == "Test Mac" &&
|
||||
std::string(parsed_host.i.app_version) == "1.5.3-2-20260928" &&
|
||||
std::string(parsed_host.i.display_list[0]) ==
|
||||
"Built-in Display" &&
|
||||
parsed_host.i.right[0] == 2560 &&
|
||||
@@ -152,6 +154,34 @@ int main() {
|
||||
"host information JSON round trip failed");
|
||||
crossdesk::FreeRemoteAction(parsed_host);
|
||||
|
||||
auto advertised = crossdesk::MakeHostInformation("Host", {}, true,
|
||||
"1.5.3-20260928");
|
||||
ok &= Expect(parsed_host.from_json(advertised.to_json()) &&
|
||||
std::string(parsed_host.i.app_version) == "1.5.3-20260928",
|
||||
"host factory should advertise the app version");
|
||||
crossdesk::FreeRemoteAction(parsed_host);
|
||||
crossdesk::FreeRemoteAction(advertised);
|
||||
|
||||
// Missing and malformed optional versions must not break legacy host info.
|
||||
for (const auto& version_field : std::vector<std::string>{
|
||||
"", ",\"app_version\":null", ",\"app_version\":123",
|
||||
",\"app_version\":\"\"",
|
||||
",\"app_version\":\"1.5.3\\u0000unexpected\"",
|
||||
",\"app_version\":\"" + std::string(64, '1') + "\""}) {
|
||||
const auto message =
|
||||
"{\"type\":3,\"host_info\":{\"host_name\":\"Legacy\","
|
||||
"\"display_num\":0,\"displays\":[]" + version_field + "}}";
|
||||
ok &= Expect(parsed_host.from_json(message) &&
|
||||
parsed_host.i.app_version[0] == '\0',
|
||||
"unknown optional app version should remain empty");
|
||||
crossdesk::FreeRemoteAction(parsed_host);
|
||||
}
|
||||
advertised = crossdesk::MakeHostInformation("Host", {}, false,
|
||||
std::string(64, '1'));
|
||||
ok &= Expect(advertised.i.app_version[0] == '\0',
|
||||
"oversized app version must not be truncated");
|
||||
crossdesk::FreeRemoteAction(advertised);
|
||||
|
||||
const std::string name = "example.txt";
|
||||
const std::string payload = "CrossDesk wire";
|
||||
const auto encoded = crossdesk::EncodeFileChunk(
|
||||
|
||||
Reference in New Issue
Block a user