blob: 389156f84d2671eb60d3923dfdbf626955974cf0 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
#include "sw/device/sca/lib/prng.h"
#include <algorithm>
#include <array>
#include "gmock/gmock.h"
#include "gtest/gtest.h"
namespace sca_prng_unittest {
namespace {
/**
* First 100 return values of `random.randint(0, 255)` with a seed value of `0`.
*/
constexpr std::array<uint8_t, 100> kExpected = {
197, 215, 20, 132, 248, 207, 155, 244, 183, 111, 71, 144, 71, 48, 128,
75, 158, 50, 37, 169, 241, 51, 181, 222, 161, 104, 244, 226, 133, 31,
7, 47, 204, 0, 252, 170, 124, 166, 32, 97, 113, 122, 72, 229, 46,
41, 163, 250, 55, 154, 149, 63, 170, 104, 147, 227, 46, 197, 162, 123,
148, 94, 96, 95, 16, 133, 243, 35, 45, 66, 76, 19, 41, 200, 141,
120, 110, 214, 140, 230, 252, 182, 42, 166, 59, 249, 171, 97, 124, 8,
138, 59, 112, 190, 87, 170, 218, 31, 51, 74};
TEST(RandByte, Seed_0) {
std::vector<uint8_t> actual(kExpected.size());
prng_seed(0);
std::generate(actual.begin(), actual.end(), prng_rand_byte);
EXPECT_THAT(actual, testing::ElementsAreArray(kExpected));
}
TEST(RandBytes, Seed_0) {
std::vector<uint8_t> actual(kExpected.size());
prng_seed(0);
prng_rand_bytes(actual.data(), actual.size());
EXPECT_THAT(actual, testing::ElementsAreArray(kExpected));
}
} // namespace
} // namespace sca_prng_unittest