From 6f5d2ff7f59c4f6ecac18b469071312e3bf51fdf Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Fri, 24 Nov 2023 22:21:35 -0700 Subject: [PATCH] Add a test. --- tests/base/lazy_05.cc | 65 +++++++++++++++++++++++++++++++++++++++ tests/base/lazy_05.output | 8 +++++ 2 files changed, 73 insertions(+) create mode 100644 tests/base/lazy_05.cc create mode 100644 tests/base/lazy_05.output diff --git a/tests/base/lazy_05.cc b/tests/base/lazy_05.cc new file mode 100644 index 0000000000..dd03bee125 --- /dev/null +++ b/tests/base/lazy_05.cc @@ -0,0 +1,65 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2023 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE.md at +// the top level directory of deal.II. +// +// --------------------------------------------------------------------- + +// +// Test move semantics of Lazy. +// + +#include + +#include + +#include "../tests.h" + +using namespace dealii; + +int +main() +{ + initlog(); + + { + Lazy lazy_integer; + lazy_integer.ensure_initialized([&]() { + deallog << "... [ initialized ] ... " << std::endl; + return 42; + }); + deallog << "Object: " << lazy_integer.value() << std::endl; + + // Move constructor: + Lazy lazy_integer_2(std::move(lazy_integer)); + deallog << "Move result: " << lazy_integer_2.value() << std::endl; + Assert(lazy_integer.has_value() == false, ExcInternalError()); + } + + { + Lazy lazy_integer; + lazy_integer.ensure_initialized([&]() { + deallog << "... [ initialized ] ... " << std::endl; + return 42; + }); + deallog << "Object: " << lazy_integer.value() << std::endl; + + // Move assignment + Lazy lazy_integer_2; + lazy_integer_2 = std::move(lazy_integer); + deallog << "Move result: " << lazy_integer_2.value() << std::endl; + Assert(lazy_integer.has_value() == false, ExcInternalError()); + } + + + deallog << "OK!" << std::endl; + return 0; +} diff --git a/tests/base/lazy_05.output b/tests/base/lazy_05.output new file mode 100644 index 0000000000..01878b4537 --- /dev/null +++ b/tests/base/lazy_05.output @@ -0,0 +1,8 @@ + +DEAL::... [ initialized ] ... +DEAL::Object: 42 +DEAL::Move result: 42 +DEAL::... [ initialized ] ... +DEAL::Object: 42 +DEAL::Move result: 42 +DEAL::OK! -- 2.39.5