| // 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 |