/* Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "crc32_test.h"
#include "cgptlib_test.h"
#include "crc32.h"
#include "test_common.h"
#include "utility.h"

#define MAX_VECTOR_LEN 256

int TestCrc32TestVectors() {
  struct {
    uint8_t vector[MAX_VECTOR_LEN];
    int len;
    uint32_t crc32;
  } cases[] = {
    {{0x00}, 1, 0xD202EF8D},
    {{0x00, 0x00, 0x00, 0x00}, 4, 0x2144DF1C},
    {{0x01, 0x01, 0x01, 0x01}, 4, 0xF626D399},
    {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x28,0x86,0x4d,0x7f,0x99}, 48, 0x923D6EFD},
    {{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
      0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
      0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
      0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
      0x00,0x00,0x00,0x28,0xc5,0x5e,0x45,0x7a}, 48, 0x49A04D82},
    {{0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,
      0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,
      0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,
      0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
      0x00,0x00,0x00,0x28,0xbf,0x67,0x1e,0xd0}, 48, 0x688B3BFA},
  };
  int i;

  for (i = 0; i < ARRAY_SIZE(cases); ++i) {
    uint32_t crc32;

    crc32 = Crc32(cases[i].vector, cases[i].len);
    EXPECT(crc32 == cases[i].crc32);
  }
  return TEST_OK;
}
