static bool server_receive_fires_event_when_parent_cannot_be_found(char** msg) { ot_op* initial_op = ot_new_op(); ot_insert(initial_op, "abc"); ot_doc* doc = ot_new_doc(); ot_doc_append(doc, &initial_op); ot_server* server = ot_new_server(send, event); ot_server_open(server, doc); const int NONEMPTY_HASH = 0xFF; ot_op* invalid_op = ot_new_op(); ot_insert(invalid_op, "abc"); memset(invalid_op->parent, NONEMPTY_HASH, 20); char* invalid_op_enc = ot_encode(invalid_op); ot_server_receive(server, invalid_op_enc); ot_op* dec = ot_new_op(); ot_err err = ot_decode(dec, sent_msg); ASSERT_INT_EQUAL(OT_ERR_XFORM_FAILED, err, "Sent error was incorrect.", msg); ot_free_op(dec); ot_free_op(invalid_op); ot_free_server(server); free(invalid_op_enc); return true; }
static bool server_receive_fires_event_when_xform_error_occurs(char** msg) { ot_op* initial_op = ot_new_op(); ot_insert(initial_op, "abc"); ot_doc* doc = ot_new_doc(); ot_doc_append(doc, &initial_op); ot_server* server = ot_new_server(send, event); ot_server_open(server, doc); ot_op* invalid_op = ot_new_op(); ot_skip(invalid_op, 1); char* invalid_op_enc = ot_encode(invalid_op); ot_server_receive(server, invalid_op_enc); ot_op* dec = ot_new_op(); ot_err err = ot_decode(dec, sent_msg); ASSERT_INT_EQUAL(OT_ERR_XFORM_FAILED, err, "Sent error was incorrect.", msg); ot_free_op(dec); ot_free_op(invalid_op); ot_free_server(server); free(invalid_op_enc); return true; }
static bool compose_returns_op_with_client_and_parent_of_first_op(char** msg) { const int NONZERO_INT = 1; const int NONEMPTY_PARENT = 0xFF; ot_op* op1 = ot_new_op(); op1->client_id = NONZERO_INT; memset(op1->parent, NONEMPTY_PARENT, 20); ot_op* op2 = ot_new_op(); ot_op* composed = ot_compose(op1, op2); if (composed == NULL) { FAIL("Operations couldn't be composed.", msg); } ASSERT_INT_EQUAL(op1->client_id, composed->client_id, "The client ID of the composed operation wasn't equal to " "the client ID of the first operation.", msg); bool parents_equal = (memcmp(op1->parent, composed->parent, 20) == 0); if (!parents_equal) { FAIL("The parent of the composed operation wasn't equal to the parent " "of the first operation.", msg); } ot_free_op(op1); ot_free_op(op2); ot_free_op(composed); return true; }
void TESTEXPORT GetsMultipleNotifications(TestContext *context) { ChangeHandlerAdd(&listeners, changeData); ChangeHandlerAdd(&listeners, changeData); ChangeHandlerNotifyListeners(listeners); ASSERT_INT_EQUAL(2, wasNotified, "Not notified twice!"); }
void test_longest_prefix_found_amongst_many_smaller () { PRINT_TEST_NAME("longest prefix found amongst many smaller"); char *window_data = "0123ABCD4567"; char *buffer_data = "ABCDEF"; memcpy(window, window_data, 12); memcpy(buffer, buffer_data, 6); window_length = 12; buffer_length = 6; int longest = longest_prefix(); ASSERT_INT_EQUAL(longest, 4); ASSERT_INT_EQUAL(last_offset, 4); }
void TESTEXPORT RemovedOnceGetsOneNotification(TestContext *context) { ChangeHandlerAdd(&listeners, changeData); ChangeHandlerAdd(&listeners, changeData); ChangeHandlerRemove(&listeners, changeData); ChangeHandlerNotifyListeners(listeners); ASSERT_INT_EQUAL(1, wasNotified, "Was not notified once!"); }
void test_longest_prefix_in_empty_window () { PRINT_TEST_NAME("longest prefix in empty window"); char *buffer_data = "ABC"; memcpy(buffer, buffer_data, 3); window_length = 0; buffer_length = 3; int longest = longest_prefix(); ASSERT_INT_EQUAL(longest, -1); }
static bool server_receive_fires_event_when_a_decode_error_occurs(char** msg) { ot_server* server = ot_new_server(send, event); char* invalid_msg = "not json"; ot_server_receive(server, invalid_msg); ot_op* dec = ot_new_op(); ot_err err = ot_decode(dec, sent_msg); ASSERT_INT_EQUAL(OT_ERR_INVALID_JSON, err, "Sent error was incorrect.", msg); ot_free_op(dec); ot_free_server(server); return true; }
static bool server_receive_when_empty_doc_is_opened(char** msg) { ot_server* server = ot_new_server(send, event); ot_doc* doc = ot_new_doc(); ot_server_open(server, doc); ot_op* op = ot_new_op(); ot_insert(op, "abc"); char* op_enc = ot_encode(op); ot_server_receive(server, op_enc); ot_op* dec = ot_new_op(); ot_err err = ot_decode(dec, sent_msg); ASSERT_INT_EQUAL(OT_ERR_NONE, err, "Unexpected sent error.", msg); ASSERT_OP_EQUAL(op, server->doc->composed, "Document state was incorrect.", msg); ot_free_op(dec); ot_free_op(op); ot_free_server(server); free(op_enc); return true; }