123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #ifndef __CMPTEST_H__
- #define __CMPTEST_H__
- #include <assert.h>
- #include <stdio.h>
- #include <stdint.h>
- #include <stdlib.h>
- #include <string.h>
- #include <errno.h>
- #include "sodium.h"
- #include "quirks.h"
- #ifdef __EMSCRIPTEN__
- # undef TEST_SRCDIR
- # define TEST_SRCDIR "/test-data"
- #endif
- #ifndef TEST_SRCDIR
- # define TEST_SRCDIR "."
- #endif
- #define TEST_NAME_RES TEST_NAME ".res"
- #define TEST_NAME_OUT TEST_SRCDIR "/" TEST_NAME ".exp"
- #ifdef HAVE_ARC4RANDOM
- # undef rand
- # define rand(X) arc4random(X)
- #endif
- int xmain(void);
- #ifdef BENCHMARKS
- # include <sys/time.h>
- # ifndef ITERATIONS
- # define ITERATIONS 128
- # endif
- static unsigned long long now(void)
- {
- struct timeval tp;
- unsigned long long now;
- if (gettimeofday(&tp, NULL) != 0) {
- abort();
- }
- now = ((unsigned long long) tp.tv_sec * 1000000ULL) +
- (unsigned long long) tp.tv_usec;
- return now;
- }
- int main(void)
- {
- unsigned long long ts_start;
- unsigned long long ts_end;
- unsigned int i;
- if (sodium_init() != 0) {
- return 99;
- }
- randombytes_set_implementation(&randombytes_salsa20_implementation);
- ts_start = now();
- for (i = 0; i < ITERATIONS; i++) {
- if (xmain() != 0) {
- abort();
- }
- }
- ts_end = now();
- printf("%llu\n", 1000000ULL * (ts_end - ts_start) / ITERATIONS);
- return 0;
- }
- #define printf(...) do { } while(0)
- #elif !defined(BROWSER_TESTS)
- FILE *fp_res;
- int main(void)
- {
- FILE *fp_out;
- int c;
- if ((fp_res = fopen(TEST_NAME_RES, "w+")) == NULL) {
- perror("fopen(" TEST_NAME_RES ")");
- return 99;
- }
- if (sodium_init() != 0) {
- return 99;
- }
- if (xmain() != 0) {
- return 99;
- }
- rewind(fp_res);
- if ((fp_out = fopen(TEST_NAME_OUT, "r")) == NULL) {
- perror("fopen(" TEST_NAME_OUT ")");
- return 99;
- }
- do {
- if ((c = fgetc(fp_res)) != fgetc(fp_out)) {
- return 99;
- }
- } while (c != EOF);
- return 0;
- }
- #undef printf
- #define printf(...) fprintf(fp_res, __VA_ARGS__)
- #else
- int main(void)
- {
- if (sodium_init() != 0) {
- return 99;
- }
- if (xmain() != 0) {
- return 99;
- }
- printf("--- SUCCESS ---\n");
- return 0;
- }
- #endif
- #define main xmain
- #endif
|