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