From eff5bd03624c23a942e4ba2637602013bc620416 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Sat, 30 May 2020 09:54:02 +0200 Subject: [PATCH] Added tests and silence a warning --- src/sfizz/Opcode.h | 4 ++-- tests/OpcodeT.cpp | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/sfizz/Opcode.h b/src/sfizz/Opcode.h index 52f67af7..65436b2c 100644 --- a/src/sfizz/Opcode.h +++ b/src/sfizz/Opcode.h @@ -122,7 +122,7 @@ inline absl::optional readOpcode(absl::string_view value, const Range if (!absl::SimpleAtoi(value, &returnedValue)) { float floatValue; if (!absl::SimpleAtof(value, &floatValue)) - return {}; + return absl::nullopt; returnedValue = static_cast(floatValue); } @@ -151,7 +151,7 @@ inline absl::optional readOpcode(absl::string_view value, const Range value = value.substr(0, numberEnd); float returnedValue; - if (!absl::SimpleAtof(value.substr(0, numberEnd), &returnedValue)) + if (!absl::SimpleAtof(value, &returnedValue)) return absl::nullopt; return validRange.clamp(returnedValue); diff --git a/tests/OpcodeT.cpp b/tests/OpcodeT.cpp index 78ce2d87..53581dd6 100644 --- a/tests/OpcodeT.cpp +++ b/tests/OpcodeT.cpp @@ -246,3 +246,20 @@ TEST_CASE("[Opcode] Normalization") REQUIRE(sfz::Opcode("SaMpLe", "").cleanUp(sfz::kOpcodeScopeRegion).opcode == "sample"); } + +TEST_CASE("[Opcode] readOpcode") +{ + REQUIRE( sfz::readOpcode("16", sfz::Range(0, 100)).value() == 16 ); + REQUIRE( sfz::readOpcode("110", sfz::Range(0, 100)).value() == 100 ); + REQUIRE( sfz::readOpcode("-1", sfz::Range(0, 100)).value() == 0 ); + REQUIRE( sfz::readOpcode("12.5", sfz::Range(-100, 100)).value() == 12 ); + REQUIRE( sfz::readOpcode("-40", sfz::Range(-100, 100)).value() == -40 ); + REQUIRE( sfz::readOpcode("-140", sfz::Range(-100, 100)).value() == -100 ); + REQUIRE( sfz::readOpcode("12.5", sfz::Range(0.0f, 100.0f)).value() == 12.5_a ); + REQUIRE( sfz::readOpcode("-22.5", sfz::Range(-20.0f, 100.0f)).value() == -20.0_a ); + REQUIRE( sfz::readOpcode("150.5", sfz::Range(-20.0f, 100.0f)).value() == 100.0_a ); + REQUIRE( sfz::readOpcode("50.25garbage", sfz::Range(-20.0f, 100.0f)).value() == 50.25_a ); + REQUIRE( sfz::readOpcode("50.25garbage", sfz::Range(-20, 100)).value() == 50 ); + REQUIRE( !sfz::readOpcode("garbage50.25", sfz::Range(-20, 100)) ); + REQUIRE( !sfz::readOpcode("garbage", sfz::Range(-20, 100)) ); +}