diff options
Diffstat (limited to 'src/test/test_sendme.c')
-rw-r--r-- | src/test/test_sendme.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/test/test_sendme.c b/src/test/test_sendme.c index eef65a394e..ea7ccd0b3c 100644 --- a/src/test/test_sendme.c +++ b/src/test/test_sendme.c @@ -348,6 +348,50 @@ test_package_payload_len(void *arg) tor_free(c); } +/* Check that circuit_sendme_is_next works with a window of 1000, + * and a sendme_inc of 100 (old school tor compat) */ +static void +test_sendme_is_next1000(void *arg) +{ + (void)arg; + tt_int_op(circuit_sendme_cell_is_next(1000, 100), OP_EQ, 0); + tt_int_op(circuit_sendme_cell_is_next(999, 100), OP_EQ, 0); + tt_int_op(circuit_sendme_cell_is_next(901, 100), OP_EQ, 1); + + tt_int_op(circuit_sendme_cell_is_next(900, 100), OP_EQ, 0); + tt_int_op(circuit_sendme_cell_is_next(899, 100), OP_EQ, 0); + tt_int_op(circuit_sendme_cell_is_next(801, 100), OP_EQ, 1); + + tt_int_op(circuit_sendme_cell_is_next(101, 100), OP_EQ, 1); + tt_int_op(circuit_sendme_cell_is_next(100, 100), OP_EQ, 0); + tt_int_op(circuit_sendme_cell_is_next(99, 100), OP_EQ, 0); + tt_int_op(circuit_sendme_cell_is_next(1, 100), OP_EQ, 1); + tt_int_op(circuit_sendme_cell_is_next(0, 100), OP_EQ, 0); + +done: + ; +} + +/* Check that circuit_sendme_is_next works with a window of 31 */ +static void +test_sendme_is_next(void *arg) +{ + (void)arg; + tt_int_op(circuit_sendme_cell_is_next(1000, 31), OP_EQ, 0); + tt_int_op(circuit_sendme_cell_is_next(970, 31), OP_EQ, 1); + tt_int_op(circuit_sendme_cell_is_next(969, 31), OP_EQ, 0); + + /* deliver_window should never get this low, but test anyway */ + tt_int_op(circuit_sendme_cell_is_next(9, 31), OP_EQ, 1); + tt_int_op(circuit_sendme_cell_is_next(8, 31), OP_EQ, 0); + tt_int_op(circuit_sendme_cell_is_next(7, 31), OP_EQ, 0); + tt_int_op(circuit_sendme_cell_is_next(1, 31), OP_EQ, 0); + tt_int_op(circuit_sendme_cell_is_next(0, 31), OP_EQ, 0); + + done: + ; +} + struct testcase_t sendme_tests[] = { { "v1_record_digest", test_v1_record_digest, TT_FORK, NULL, NULL }, @@ -360,6 +404,8 @@ struct testcase_t sendme_tests[] = { { "cell_version_validation", test_cell_version_validation, TT_FORK, NULL, NULL }, { "package_payload_len", test_package_payload_len, 0, NULL, NULL }, + { "sendme_is_next1000", test_sendme_is_next1000, 0, NULL, NULL }, + { "sendme_is_next", test_sendme_is_next, 0, NULL, NULL }, END_OF_TESTCASES }; |