1///////////////////////////////////////////////////////////////////////////////
2//
3/// \file       test_check.c
4/// \brief      Tests integrity checks
5///
6/// \todo       Add SHA256
7//
8//  Author:     Lasse Collin
9//
10//  This file has been put into the public domain.
11//  You can do whatever you want with this file.
12//
13///////////////////////////////////////////////////////////////////////////////
14
15#include "tests.h"
16
17
18static const uint8_t test_string[9] = "123456789";
19static const uint8_t test_unaligned[12] = "xxx123456789";
20
21
22static bool
23test_crc32(void)
24{
25	static const uint32_t test_vector = 0xCBF43926;
26
27	// Test 1
28	uint32_t crc = lzma_crc32(test_string, sizeof(test_string), 0);
29	if (crc != test_vector)
30		return true;
31
32	// Test 2
33	crc = lzma_crc32(test_unaligned + 3, sizeof(test_string), 0);
34	if (crc != test_vector)
35		return true;
36
37	// Test 3
38	crc = 0;
39	for (size_t i = 0; i < sizeof(test_string); ++i)
40		crc = lzma_crc32(test_string + i, 1, crc);
41	if (crc != test_vector)
42		return true;
43
44	return false;
45}
46
47
48static bool
49test_crc64(void)
50{
51	static const uint64_t test_vector = 0x995DC9BBDF1939FA;
52
53	// Test 1
54	uint64_t crc = lzma_crc64(test_string, sizeof(test_string), 0);
55	if (crc != test_vector)
56		return true;
57
58	// Test 2
59	crc = lzma_crc64(test_unaligned + 3, sizeof(test_string), 0);
60	if (crc != test_vector)
61		return true;
62
63	// Test 3
64	crc = 0;
65	for (size_t i = 0; i < sizeof(test_string); ++i)
66		crc = lzma_crc64(test_string + i, 1, crc);
67	if (crc != test_vector)
68		return true;
69
70	return false;
71}
72
73
74int
75main(void)
76{
77	bool error = false;
78
79	error |= test_crc32();
80	error |= test_crc64();
81
82	return error ? 1 : 0;
83}
84