libbrandt/test_brandt.c

124 lines
2.9 KiB
C
Raw Normal View History

/* This file is part of libbrandt.
* Copyright (C) 2016 GNUnet e.V.
*
* libbrandt is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* libbrandt is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* libbrandt. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @file test_brandt.c
* @brief testing API functions.
* @author Markus Teich
*/
#include "platform.h"
#include <gnunet/gnunet_util_lib.h>
#include "brandt.h"
#include "crypto.h"
#include "test.h"
#include "util.h"
static void
run_new_join (void *arg)
{
int *ret = arg;
const char description[] = "test description for test_new_join";
struct BRANDT_Auction *ad_seller;
struct BRANDT_Auction *ad_bidder;
void *desc;
size_t desc_len;
ad_seller = BRANDT_new (NULL,
NULL,
NULL,
NULL,
&desc,
&desc_len,
description,
sizeof (description),
GNUNET_TIME_absolute_get (),
GNUNET_TIME_UNIT_MINUTES,
8,
0,
1);
if (!ad_seller)
{
weprintf ("BRANDT_new() failed.");
*ret = 0;
return;
}
ad_bidder = BRANDT_join (NULL,
NULL,
NULL,
NULL,
desc,
desc_len,
description,
sizeof (description));
if (!ad_bidder)
{
weprintf ("BRANDT_join() failed.");
*ret = 0;
return;
}
if (ad_seller->k != ad_bidder->k ||
ad_seller->m != ad_bidder->m ||
ad_seller->outcome_public != ad_bidder->outcome_public ||
ad_seller->time_start.abs_value_us
!= ad_bidder->time_start.abs_value_us ||
ad_seller->time_round.rel_value_us
!= ad_bidder->time_round.rel_value_us ||
!ad_seller->seller_mode ||
ad_bidder->seller_mode)
{
weprintf ("error/mismatch in basic auction data");
*ret = 0;
return;
}
BRANDT_destroy (ad_seller);
BRANDT_destroy (ad_bidder);
*ret = 1;
}
static int
test_new_join ()
{
int ret = 0;
GNUNET_SCHEDULER_run (&run_new_join, &ret);
return ret;
}
int
main (int argc, char *argv[])
{
struct GNUNET_CRYPTO_EccDlogContext *edc;
edc = GNUNET_CRYPTO_ecc_dlog_prepare (1024, 16);
BRANDT_init (edc);
RUN (test_new_join);
GNUNET_CRYPTO_ecc_dlog_release (edc);
return ret;
}