From 8df9514dbde70d9a2aa976a0404dae900c15ac0c Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Fri, 5 Jan 2024 00:07:30 +0100 Subject: [PATCH] test: add lazy_value test --- CMakeLists.txt | 1 + test/lazy_value_test.cpp | 42 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 test/lazy_value_test.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 670ab992..53b9f496 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -608,6 +608,7 @@ if(WITH_TESTS) fragment_category_test incompressible_categorizer_test integral_value_parser_test + lazy_value_test metadata_requirements_test pcm_sample_transformer_test pcmaudio_categorizer_test diff --git a/test/lazy_value_test.cpp b/test/lazy_value_test.cpp new file mode 100644 index 00000000..277300a9 --- /dev/null +++ b/test/lazy_value_test.cpp @@ -0,0 +1,42 @@ +/* vim:set ts=2 sw=2 sts=2 et: */ +/** + * \author Marcus Holland-Moritz (github@mhxnet.de) + * \copyright Copyright (c) Marcus Holland-Moritz + * + * This file is part of dwarfs. + * + * dwarfs is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * dwarfs is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with dwarfs. If not, see . + */ + +#include +#include + +#include "dwarfs/lazy_value.h" + +using namespace dwarfs; + +TEST(lazy_value_test, basic) { + int num_calls = 0; + lazy_value v([&] { + ++num_calls; + return 42; + }); + EXPECT_EQ(0, num_calls); + EXPECT_EQ(42, v.get()); + EXPECT_EQ(1, num_calls); + EXPECT_EQ(42, v.get()); + EXPECT_EQ(1, num_calls); + EXPECT_EQ(42, v()); + EXPECT_EQ(1, num_calls); +}