c-ipfs/test/storage/test_blocks.h
jmjatlanta 033dd767b4 More work on persisting data to disk.
Blockstore now storing the data, whereas datastore is storing the key
and filename. The key should be the multihash (currently the sha256, not
the multihash), and the value is the filename (base32).
2016-12-14 12:07:43 -05:00

54 lines
1.2 KiB
C

#include "ipfs/blocks/block.h"
int test_blocks_new() {
const unsigned char* input = (const unsigned char*)"Hello, World!";
int retVal = 0;
struct Block* block;
retVal = ipfs_blocks_block_new(&block);
if (retVal == 0)
return 0;
retVal = ipfs_blocks_block_add_data(input, strlen((const char*)input) + 1, block);
if (retVal == 0) {
ipfs_blocks_block_free(block);
return 0;
}
// now examine the block
if (strcmp((const char*)block->data, (const char*)input) != 0) {
ipfs_blocks_block_free(block);
return 0;
}
if (block->data_length != strlen((const char*)input) + 1) {
ipfs_blocks_block_free(block);
return 0;
}
if (block->cid->codec != CID_PROTOBUF) {
ipfs_blocks_block_free(block);
return 0;
}
if (block->cid->version != 0) {
ipfs_blocks_block_free(block);
return 0;
}
if (block->cid->hash_length != 32) {
ipfs_blocks_block_free(block);
return 0;
}
unsigned char result_hash[32] = {33, 153, 66, 187, 124, 250, 87, 12, 12, 73, 43, 247, 175, 153, 10, 51, 192, 195, 218, 69, 220, 170, 105, 179, 195, 0, 203, 213, 172, 3, 244, 10 };
for(int i = 0; i < 32; i++) {
if (block->cid->hash[i] != result_hash[i]) {
ipfs_blocks_block_free(block);
return 0;
}
}
retVal = ipfs_blocks_block_free(block);
return 1;
}