Commit 30b13fd8 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Add test for expected output from encode{,d}_length functions

parent 489ef6b3
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -370,6 +370,34 @@ test_util_format_base32_decode(void *arg)
  tor_free(dst);
}

static void
test_util_format_encoded_size(void *arg)
{
  (void)arg;
  uint8_t inbuf[256];
  char outbuf[1024];
  unsigned i;

  crypto_rand((char *)inbuf, sizeof(inbuf));
  for (i = 0; i <= sizeof(inbuf); ++i) {
    /* XXXX (Once the return values are consistent, check them too.) */

    base32_encode(outbuf, sizeof(outbuf), (char *)inbuf, i);
    /* The "+ 1" below is an API inconsistency. */
    tt_int_op(strlen(outbuf) + 1, OP_EQ, base32_encoded_size(i));

    base64_encode(outbuf, sizeof(outbuf), (char *)inbuf, i, 0);
    tt_int_op(strlen(outbuf), OP_EQ, base64_encode_size(i, 0));
    base64_encode(outbuf, sizeof(outbuf), (char *)inbuf, i,
                  BASE64_ENCODE_MULTILINE);
    tt_int_op(strlen(outbuf), OP_EQ,
              base64_encode_size(i, BASE64_ENCODE_MULTILINE));
  }

 done:
  ;
}

struct testcase_t util_format_tests[] = {
  { "unaligned_accessors", test_util_format_unaligned_accessors, 0,
    NULL, NULL },
@@ -382,6 +410,7 @@ struct testcase_t util_format_tests[] = {
    NULL, NULL },
  { "base32_decode", test_util_format_base32_decode, 0,
    NULL, NULL },
  { "encoded_size", test_util_format_encoded_size, 0, NULL, NULL },
  END_OF_TESTCASES
};