aboutsummaryrefslogtreecommitdiff
path: root/test_brandt.c
blob: fa49007b9c8dbf1adb4dce9c743fc23c9fc26bcc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/* 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;
}