diff options
author | Scott K Logan <logans@cottsay.net> | 2020-11-26 03:12:45 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-26 11:12:45 +0000 |
commit | 17a6b21ee15c71c5570d6724920cf3289b5d88ab (patch) | |
tree | 867a44f053119be3240c06fd1886613d5197be77 | |
parent | 7fa6f1f91a96d8763de754810710d457f7fea575 (diff) | |
download | google-benchmark-17a6b21ee15c71c5570d6724920cf3289b5d88ab.tar.gz |
Fix Range when starting at zero (#1073)
The existing behavior results in the `0` value being added twice. Since
`lo` is always added to `dst`, we never want to explicitly add `0` if
`lo` is equal to `0`.
-rw-r--r-- | src/benchmark_register.h | 2 | ||||
-rw-r--r-- | test/benchmark_gtest.cc | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/benchmark_register.h b/src/benchmark_register.h index 204bf1d..c774e6f 100644 --- a/src/benchmark_register.h +++ b/src/benchmark_register.h @@ -87,7 +87,7 @@ void AddRange(std::vector<T>* dst, T lo, T hi, int mult) { } // Treat 0 as a special case (see discussion on #762). - if (lo <= 0 && hi >= 0) { + if (lo < 0 && hi >= 0) { dst->push_back(0); } diff --git a/test/benchmark_gtest.cc b/test/benchmark_gtest.cc index 9557b20..6dbf7a5 100644 --- a/test/benchmark_gtest.cc +++ b/test/benchmark_gtest.cc @@ -90,6 +90,12 @@ TEST(AddRangeTest, ZeroOnlyRange) { EXPECT_THAT(dst, testing::ElementsAre(0)); } +TEST(AddRangeTest, ZeroStartingRange) { + std::vector<int> dst; + AddRange(&dst, 0, 2, 2); + EXPECT_THAT(dst, testing::ElementsAre(0, 1, 2)); +} + TEST(AddRangeTest, NegativeRange64) { std::vector<int64_t> dst; AddRange<int64_t>(&dst, -4, 4, 2); |