diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-21 14:10:52 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-21 14:10:52 +0000 |
commit | 0a5e34a5386fa254a3b133f0a5f7667f1f790f67 (patch) | |
tree | d1dd0e80264f900004c56ad5ce6b56efea0bec49 /rlz/lib/crc8_unittest.cc | |
parent | b049c382ff842f546e2bcc261ce23438bc8764bf (diff) | |
download | chromium_src-0a5e34a5386fa254a3b133f0a5f7667f1f790f67.zip chromium_src-0a5e34a5386fa254a3b133f0a5f7667f1f790f67.tar.gz chromium_src-0a5e34a5386fa254a3b133f0a5f7667f1f790f67.tar.bz2 |
Check-in rlz code to src\rlz from http://code.google.com/p/rlz/.
Review URL: https://chromiumcodereview.appspot.com/10597002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@143381 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'rlz/lib/crc8_unittest.cc')
-rw-r--r-- | rlz/lib/crc8_unittest.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/rlz/lib/crc8_unittest.cc b/rlz/lib/crc8_unittest.cc new file mode 100644 index 0000000..4889242 --- /dev/null +++ b/rlz/lib/crc8_unittest.cc @@ -0,0 +1,51 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// Uniitest for data encryption functions. + +#include "base/logging.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +#include "rlz/lib/crc8.h" + +TEST(Crc8Unittest, TestCrc8) { + struct Data { + char string[10]; + // Externally calculated checksums use + // http://www.zorc.breitbandkatze.de/crc.html + // with the ATM HEC paramters: + // CRC-8, Polynomial 0x07, Initial value 0x00, Final XOR value 0x55 + // (direct, don't reverse data byes, don't reverse CRC before final XOR) + unsigned char external_crc; + int random_byte; + unsigned char corrupt_value; + } data[] = { + {"Google", 0x01, 2, 0x53}, + {"GOOGLE", 0xA6, 4, 0x11}, + {"My CRC 8!", 0xDC, 0, 0x50}, + }; + + unsigned char* bytes; + unsigned char crc; + bool matches; + int length; + for (size_t i = 0; i < sizeof(data) / sizeof(data[0]); ++i) { + bytes = reinterpret_cast<unsigned char*>(data[i].string); + crc = 0; + matches = false; + length = strlen(data[i].string); + + // Calculate CRC and compare against external value. + rlz_lib::Crc8::Generate(bytes, length, &crc); + EXPECT_TRUE(crc == data[i].external_crc); + rlz_lib::Crc8::Verify(bytes, length, crc, &matches); + EXPECT_TRUE(matches); + + // Corrupt string and see if CRC still matches. + data[i].string[data[i].random_byte] = data[i].corrupt_value; + rlz_lib::Crc8::Verify(bytes, length, crc, &matches); + EXPECT_FALSE(matches); + } +} |