2
* This test tests the ability of DHTModules.c to serialize the contexts
3
* of the modules. For (de)serialization of the messages go in and out,
4
* see SerializationModule_test.c
8
#include "libbenc/bencode.h"
9
#include "dht/DHTModules.h"
11
int testSerialization()
13
benc_bstr_t* serialize(void* vcontext)
15
char* context = (char*) vcontext;
16
benc_bstr_t* out = calloc(sizeof(benc_bstr_t), 1);
20
out->len = strlen(context);
25
char* context = "Hello World";
27
struct DHTModule module = {
30
.serialize = serialize
33
struct DHTModuleRegistry* reg = DHTModules_new();
34
DHTModules_register(&module, reg);
36
benc_bstr_t* serialized = DHTModules_serialize(reg);
39
/* This is ok because the output is null padded at the end. */
41
printf("The content is: %s\nand the length is: %d\n",
43
(int) serialized->len);
46
return memcmp(serialized->bytes,
47
"d10:TestModule11:Hello Worlde",
51
int testDeserialization()
53
void deserialize(const benc_bstr_t serialData, void* vcontext)
55
char* context = (char*) vcontext;
56
memcpy(context, serialData.bytes, serialData.len);
61
struct DHTModule module = {
64
.deserialize = deserialize
67
benc_bstr_t serialized = {29, "d10:TestModule11:Hello Worlde"};
69
struct DHTModuleRegistry* reg = DHTModules_deserialize(serialized);
70
DHTModules_register(&module, reg);
74
/*printf("Deserialization output is: %s\n", context);*/
76
return memcmp(context, "Hello World", 11);
83
| testDeserialization();