Home | History | Annotate | Download | only in lib
      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 // A test for ZLib's checksum function.
      6 
      7 #include "rlz/lib/crc32.h"
      8 
      9 #include "base/logging.h"
     10 #include "testing/gmock/include/gmock/gmock.h"
     11 #include "testing/gtest/include/gtest/gtest.h"
     12 
     13 TEST(Crc32Unittest, ByteTest) {
     14   struct {
     15     const char* data;
     16     int len;
     17     // Externally calculated at http://crc32-checksum.waraxe.us/
     18     int crc;
     19   } kData[] = {
     20     {"Hello"           ,  5, 0xF7D18982},
     21     {"Google"          ,  6, 0x62B0F067},
     22     {""                ,  0, 0x0},
     23     {"One more string.", 16, 0x0CA14970},
     24     {NULL              ,  0, 0x0},
     25   };
     26 
     27   for (int i = 0; kData[i].data; i++)
     28     EXPECT_EQ(kData[i].crc,
     29         rlz_lib::Crc32(reinterpret_cast<const unsigned char*>(kData[i].data),
     30                        kData[i].len));
     31 }
     32 
     33 TEST(Crc32Unittest, CharTest) {
     34   struct {
     35     const char* data;
     36     // Externally calculated at http://crc32-checksum.waraxe.us/
     37     int crc;
     38   } kData[] = {
     39     {"Hello"           , 0xF7D18982},
     40     {"Google"          , 0x62B0F067},
     41     {""                , 0x0},
     42     {"One more string.", 0x0CA14970},
     43     {"Google\r\n"      , 0x83A3E860},
     44     {NULL              , 0x0},
     45   };
     46 
     47   int crc;
     48   for (int i = 0; kData[i].data; i++) {
     49     EXPECT_TRUE(rlz_lib::Crc32(kData[i].data, &crc));
     50     EXPECT_EQ(kData[i].crc, crc);
     51   }
     52 }
     53