Use canonical reaction and answer payloads in feedback tests
This commit is contained in:
1 parent
48d7f2b21b
commit
ef476bf4e2
1 file changed
+7
-6
@@ -70,7 +70,7 @@ int main(void) {
|
||||
puts("PASS: message identity is deterministic and binds channel, timestamp and signature");
|
||||
|
||||
uint64_t ver; struct chat_feedback_record first, second, cancelled, actual;
|
||||
uint8_t a[] = {1}, b[] = {1, 2};
|
||||
uint8_t a[] = {1, 0}, b[] = {2, 0, 1}, answer_data[] = {1, 0, 0, 0};
|
||||
assert(chat_feedback_set(&source, "1001", message, CHAT_FEEDBACK_REACTION, a, sizeof(a), &ver) == 1 && ver == 1);
|
||||
assert(chat_feedback_get(&source, "1001", message, source.node_id, CHAT_FEEDBACK_REACTION, &first) == 1);
|
||||
int saved_events = events;
|
||||
@@ -98,17 +98,18 @@ int main(void) {
|
||||
puts("PASS: signature binds version, channel and author; rejection preserves tree and events");
|
||||
|
||||
struct chat_feedback_record low = first, high = first;
|
||||
low.ver = high.ver = 4; low.data[0] = 3; high.data[0] = 4;
|
||||
low.ver = high.ver = 4; low.data[1] = 3; high.data[1] = 4;
|
||||
sign_record(&source, 1001, &low); sign_record(&source, 1001, &high);
|
||||
assert(chat_feedback_apply(&source, "1001", &low) == 1 && chat_feedback_apply(&source, "1001", &high) == 1);
|
||||
assert(chat_feedback_apply(&target, "1001", &high) == 1 && chat_feedback_apply(&target, "1001", &low) == 0);
|
||||
root(&source, expected); root(&target, received); assert(!memcmp(expected, received, 32));
|
||||
assert(chat_feedback_set(&source, "1001", message, CHAT_FEEDBACK_ANSWER, b, sizeof(b), &ver) == 1 && ver == 1);
|
||||
assert(chat_feedback_set(&source, "1001", message, CHAT_FEEDBACK_ANSWER, answer_data, sizeof(answer_data), &ver) == 1 && ver == 1);
|
||||
puts("PASS: equal-version conflicts converge in both orders; answer and reaction have independent versions");
|
||||
|
||||
struct chat_feedback_record newer = high, answer = first;
|
||||
newer.ver = 5; newer.data[0] = 5; sign_record(&source, 1001, &newer);
|
||||
answer.kind = CHAT_FEEDBACK_ANSWER; answer.ver = 2; sign_record(&source, 1001, &answer);
|
||||
newer.ver = 5; newer.data[1] = 5; sign_record(&source, 1001, &newer);
|
||||
answer.kind = CHAT_FEEDBACK_ANSWER; answer.ver = 2; answer.data_len = sizeof(answer_data);
|
||||
memcpy(answer.data, answer_data, sizeof(answer_data)); sign_record(&source, 1001, &answer);
|
||||
uint8_t page[2 + 2 * FB_WIRE_MAX]; page[0] = 0; page[1] = 2;
|
||||
int n = fb_encode(&newer, page + 2); assert(n > 0);
|
||||
int m = fb_encode(&answer, page + 2 + n); assert(m > 0);
|
||||
@@ -132,7 +133,7 @@ int main(void) {
|
||||
&cursor, page, &bytes, &next, &more) == 0 && !more);
|
||||
assert(bytes >= 2 + FB_FIXED_SIZE && page[1] >= 1);
|
||||
struct chat_feedback_record decoded; assert(fb_decode(page + 2, bytes - 2, &decoded) > 0);
|
||||
assert(decoded.ver == 5 && decoded.data[0] == 5);
|
||||
assert(decoded.ver == 5 && decoded.data[1] == 5);
|
||||
assert(chat_feedback_set(&target, "1001", message, CHAT_FEEDBACK_REACTION, NULL, 0, &ver) == 1 && ver == 1);
|
||||
assert(chat_feedback_set(&target, "1001", message, CHAT_FEEDBACK_REACTION, a, sizeof(a), &ver) == 1 && ver == 2);
|
||||
assert(chat_feedback_set(&target, "1001", message, CHAT_FEEDBACK_REACTION, NULL, 0, &ver) == 1 && ver == 3);
|
||||
|
||||
Reference in new issue
Block a user