| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 // | |
| 5 // Uniitest for data encryption functions. | |
| 6 | |
| 7 #include "base/logging.h" | |
| 8 #include "testing/gmock/include/gmock/gmock.h" | |
| 9 #include "testing/gtest/include/gtest/gtest.h" | |
| 10 | |
| 11 #include "rlz/lib/crc8.h" | |
| 12 | |
| 13 TEST(Crc8Unittest, TestCrc8) { | |
| 14 struct Data { | |
| 15 char string[10]; | |
| 16 // Externally calculated checksums use | |
| 17 // http://www.zorc.breitbandkatze.de/crc.html | |
| 18 // with the ATM HEC paramters: | |
| 19 // CRC-8, Polynomial 0x07, Initial value 0x00, Final XOR value 0x55 | |
| 20 // (direct, don't reverse data byes, don't reverse CRC before final XOR) | |
| 21 unsigned char external_crc; | |
| 22 int random_byte; | |
| 23 unsigned char corrupt_value; | |
| 24 } data[] = { | |
| 25 {"Google", 0x01, 2, 0x53}, | |
| 26 {"GOOGLE", 0xA6, 4, 0x11}, | |
| 27 {"My CRC 8!", 0xDC, 0, 0x50}, | |
| 28 }; | |
| 29 | |
| 30 unsigned char* bytes; | |
| 31 unsigned char crc; | |
| 32 bool matches; | |
| 33 int length; | |
| 34 for (size_t i = 0; i < sizeof(data) / sizeof(data[0]); ++i) { | |
| 35 bytes = reinterpret_cast<unsigned char*>(data[i].string); | |
| 36 crc = 0; | |
| 37 matches = false; | |
| 38 length = strlen(data[i].string); | |
| 39 | |
| 40 // Calculate CRC and compare against external value. | |
| 41 rlz_lib::Crc8::Generate(bytes, length, &crc); | |
| 42 EXPECT_TRUE(crc == data[i].external_crc); | |
| 43 rlz_lib::Crc8::Verify(bytes, length, crc, &matches); | |
| 44 EXPECT_TRUE(matches); | |
| 45 | |
| 46 // Corrupt string and see if CRC still matches. | |
| 47 data[i].string[data[i].random_byte] = data[i].corrupt_value; | |
| 48 rlz_lib::Crc8::Verify(bytes, length, crc, &matches); | |
| 49 EXPECT_FALSE(matches); | |
| 50 } | |
| 51 } | |
| OLD | NEW |