blob: c54a3d9df5c5f323ec937f9989c369dd2f609eaa [file] [log] [blame]
// Copyright 2023 The Fuchsia 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 <algorithm>
#include <list>
#include <efi/variable/variable_id.h>
#include <fbl/vector.h>
#include <gtest/gtest.h>
namespace {
using ::testing::Test;
using namespace efi;
TEST(VariableIdTest, DefaultInvalid) { EXPECT_FALSE(VariableId().IsValid()); }
TEST(VariableIdTest, InvalidateResult) {
VariableId id({String(u"test"), {}});
id.Invalidate();
EXPECT_FALSE(id.IsValid());
}
class VariableIdFixture : public ::testing::TestWithParam<std::list<VariableId>> {};
TEST_P(VariableIdFixture, Eq) {
std::list<VariableId> input = GetParam();
for (const auto& a : input) {
EXPECT_EQ(a, a);
}
}
TEST_P(VariableIdFixture, Ne) {
std::list<VariableId> input = GetParam();
for (auto a = input.begin(); a != input.end(); a++) {
for (auto b = std::next(a); b != input.end(); b++) {
EXPECT_NE(*a, *b);
}
}
}
TEST_P(VariableIdFixture, LtTrue) {
std::list<VariableId> input = GetParam();
for (auto a = input.begin(); a != input.end(); a++) {
for (auto b = std::next(a); b != input.end(); b++) {
EXPECT_LT(*a, *b);
}
}
}
TEST_P(VariableIdFixture, LtFalse) {
std::list<VariableId> input = GetParam();
for (auto a = input.begin(); a != input.end(); a++) {
EXPECT_FALSE(*a < *a);
}
}
constexpr efi_guid kEfiGuid0 = {0x0, 0x0, 0x0, {0x0}};
INSTANTIATE_TEST_SUITE_P(VariableIdTest, VariableIdFixture,
::testing::Values(std::list<VariableId>{
{String(u""), kEfiGuid0},
{String(u""), {0x1, 0x0, 0x0, {0x0}}},
{String(u"a\tb\nc\x0001\x0002"), kEfiGuid0},
{String(u"abcDEF123!@#"), kEfiGuid0},
{String(u"var0"), kEfiGuid0},
{String(u"var0"), {0x0, 0x0, 0x1, {0x0}}},
{String(u"var0"), {0x0, 0x0, 0x1, {0x1}}},
{String(u"var0"), {0x0, 0x1, 0x0, {0x0}}},
{String(u"var0"), {0x1, 0x0, 0x0, {0x0}}},
{String(u"var1"), kEfiGuid0},
}));
} // unnamed namespace