|
|
|
|
@ -48,9 +48,11 @@ static void codecs(void) {
|
|
|
|
|
assert(chat_answer_decode(NULL, 0, &parsed) == 0 && !parsed.count); |
|
|
|
|
uint8_t empty[] = {0, 0, 0}; assert(chat_answer_decode(empty, sizeof(empty), &parsed) < 0); |
|
|
|
|
uint8_t ids[] = {5, 0}, read[CHAT_REACTION_SELECTED_MAX]; size_t count; |
|
|
|
|
n = chat_reactions_encode(ids, 2, wire, sizeof(wire)); assert(n == 3); |
|
|
|
|
assert(chat_reactions_decode(wire, n, read, &count) == 0 && count == 2 && read[0] == 0 && read[1] == 5); |
|
|
|
|
wire[2] = 0; assert(chat_reactions_decode(wire, n, read, &count) < 0); |
|
|
|
|
assert(chat_reactions_encode(ids, 2, wire, sizeof(wire)) < 0); |
|
|
|
|
uint8_t multi[] = {2, 0, 5}; assert(chat_reactions_decode(multi, sizeof(multi), read, &count) < 0); |
|
|
|
|
n = chat_reactions_encode(ids, 1, wire, sizeof(wire)); assert(n == 2); |
|
|
|
|
assert(chat_reactions_decode(wire, n, read, &count) == 0 && count == 1 && read[0] == 5); |
|
|
|
|
wire[1] = CHAT_REACTION_COUNT; assert(chat_reactions_decode(wire, n, read, &count) < 0); |
|
|
|
|
assert(chat_reactions_encode(NULL, 0, wire, sizeof(wire)) == 0); |
|
|
|
|
puts("PASS: canonical codecs, truncation, duplicate choices and UTF-8 rejection"); |
|
|
|
|
} |
|
|
|
|
@ -97,6 +99,19 @@ int main(void) {
|
|
|
|
|
snprintf(request, sizeof(request), "{\"cmd\":\"react\",\"ch\":\"%s\",\"message_id\":\"%s\",\"emoji\":0}", channel, id); |
|
|
|
|
result = command(inst, request, 0); assert(json_number(db, result, "$.reactions[0].count") == 1); u_free(result); |
|
|
|
|
result = command(inst, request, 0); assert(json_number(db, result, "$.reaction_ver") == 2); u_free(result); |
|
|
|
|
snprintf(request, sizeof(request), "{\"cmd\":\"react\",\"ch\":\"%s\",\"message_id\":\"%s\",\"emoji\":0}", channel, id); |
|
|
|
|
result = command(inst, request, 0); assert(json_number(db, result, "$.reactions[0].id") == 0); u_free(result); |
|
|
|
|
snprintf(request, sizeof(request), "{\"cmd\":\"react\",\"ch\":\"%s\",\"message_id\":\"%s\",\"emoji\":4}", channel, id); |
|
|
|
|
result = command(inst, request, 0); |
|
|
|
|
assert(json_number(db, result, "$.reactions[0].id") == 4 && json_number(db, result, "$.reaction_ver") == 4); |
|
|
|
|
assert(json_number(db, result, "$.reactions[1].count") == 0); u_free(result); |
|
|
|
|
snprintf(request, sizeof(request), "{\"cmd\":\"react\",\"ch\":\"%s\",\"message_id\":\"%s\",\"emoji\":0,\"on\":false}", channel, id); |
|
|
|
|
result = command(inst, request, 0); |
|
|
|
|
assert(json_number(db, result, "$.reactions[0].id") == 4 && json_number(db, result, "$.reaction_ver") == 4); u_free(result); |
|
|
|
|
snprintf(request, sizeof(request), "{\"cmd\":\"react\",\"ch\":\"%s\",\"message_id\":\"%s\",\"emoji\":4}", channel, id); |
|
|
|
|
result = command(inst, request, 0); assert(json_number(db, result, "$.reactions[0].count") == 0); |
|
|
|
|
assert(json_number(db, result, "$.reaction_ver") == 5); u_free(result); |
|
|
|
|
puts("PASS: selecting another emoji replaces the previous one; unselected withdrawal is inert; repeat click cancels"); |
|
|
|
|
snprintf(request, sizeof(request), |
|
|
|
|
"{\"cmd\":\"poll_create\",\"ch\":\"%s\",\"question\":\"Выбор\",\"mode\":\"multiple\"," |
|
|
|
|
"\"options\":[\"Первый\",\"Второй\"],\"allow_custom_answer\":true}", channel); |
|
|
|
|
|