Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
0
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);
}
Beispiel #8
0
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;
}
Beispiel #9
0
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;
}