// Copyright 2026 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #include #include #include "ProbeBudget.h" namespace StarletBootstrapProbe { namespace { // The parsed budget, or 0 when refused. u64 Parsed(std::string_view text) { return ParseCycles(text).value_or(0); } TEST(StarletProbeBudget, DefaultIsTheFormerFixedBudget) { EXPECT_EQ(DEFAULT_CYCLES, u64{2097152}); EXPECT_EQ(DEFAULT_CYCLES % SLICE_CYCLES, u64{0}); EXPECT_EQ(Parsed("2097152"), DEFAULT_CYCLES); } TEST(StarletProbeBudget, AcceptsWholeSlicesUpToTheMaximum) { EXPECT_EQ(Parsed("4096"), u64{4096}); EXPECT_EQ(Parsed("16777216"), u64{16777216}); EXPECT_EQ(Parsed("1073741824"), MAX_CYCLES); // Leading zeros are still a decimal number. EXPECT_EQ(Parsed("0008192"), u64{8192}); } TEST(StarletProbeBudget, RefusesEverythingElse) { for (const std::string_view text : {"", "0", "4095", "4097", "6144", "1073745920", "999999999999", "1234567890123", "99999999999999999999", "-4096", "+4096", "0x1000", "4096 ", " 4096", "4k", "4096.0"}) { EXPECT_FALSE(ParseCycles(text).has_value()) << '"' << text << '"'; } } } // namespace } // namespace StarletBootstrapProbe