From d0eb77379754f31babf84061955034d4482bdd48 Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Thu, 25 Apr 2019 08:57:09 +0200 Subject: [PATCH] Add test for addition of scalar types to SD substitution maps --- .../symengine/substitution_maps_scalar_01.cc | 86 +++++++++++++++++++ .../substitution_maps_scalar_01.output | 17 ++++ 2 files changed, 103 insertions(+) create mode 100644 tests/symengine/substitution_maps_scalar_01.cc create mode 100644 tests/symengine/substitution_maps_scalar_01.output diff --git a/tests/symengine/substitution_maps_scalar_01.cc b/tests/symengine/substitution_maps_scalar_01.cc new file mode 100644 index 0000000000..b298fcafaf --- /dev/null +++ b/tests/symengine/substitution_maps_scalar_01.cc @@ -0,0 +1,86 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2019 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 at +// the top level of the deal.II distribution. +// +// --------------------------------------------------------------------- + + +// Check that functions to add scalar variables to substitution maps work +// correctly. + +#include + +#include +#include + +#include +#include +#include + +#include "../tests.h" + +using namespace dealii; +namespace SD = Differentiation::SD; +namespace SE = ::SymEngine; + +int +main() +{ + initlog(); + + + SD::types::substitution_map substitution_map; + SD::add_to_substitution_map(substitution_map, + SD::Expression("x1"), + SD::Expression(1)); + SD::add_to_substitution_map(substitution_map, SD::Expression("x3"), 3.0); + SD::add_to_substitution_map(substitution_map, + SD::types::symbol_vector{SD::Expression("x6"), + SD::Expression("x7")}, + std::vector{6, 7}); + SD::add_to_substitution_map( + substitution_map, + SD::types::substitution_map{{SD::Expression("x8"), SD::Expression(8.0)}, + {SD::Expression("x9"), SD::Expression(9.0f)}, + {SD::Expression("x10"), SD::Expression(10u)}}); + SD::add_to_substitution_map(substitution_map, + std::make_pair(SD::Expression("x11"), 11)); + SD::add_to_substitution_map(substitution_map, + std::vector>{ + std::make_pair(SD::Expression("x12"), 12), + std::make_pair(SD::Expression("x13"), 13)}); + SD::add_to_substitution_map( + substitution_map, + std::make_pair(SD::Expression("x14"), 14.0f), + std::make_pair(SD::Expression("x15"), 15), + std::make_pair(SD::Expression("x16"), 16.0), + SD::types::substitution_map{{SD::Expression("x17"), SD::Expression(17.0)}, + {SD::Expression("x18"), + SD::Expression(std::complex(18.0))}}); + + SD::Utilities::print_substitution_map(deallog, substitution_map); + + // Check that exceptions are raised when duplicate symbols + // are found in a substitution map + deal_II_exceptions::disable_abort_on_exception(); + try + { + SD::add_to_substitution_map(substitution_map, + std::make_pair(SD::Expression("x14"), 14)); + + deallog << "Duplicate symbol in map did not raise an error." << std::endl; + } + catch (...) + {} + + deallog << "OK" << std::endl; +} diff --git a/tests/symengine/substitution_maps_scalar_01.output b/tests/symengine/substitution_maps_scalar_01.output new file mode 100644 index 0000000000..061cd9eb35 --- /dev/null +++ b/tests/symengine/substitution_maps_scalar_01.output @@ -0,0 +1,17 @@ + +DEAL::x1 = 1 +x3 = 3.0 +x6 = 6 +x8 = 8.0 +x7 = 7 +x9 = 9.0 +x15 = 15 +x14 = 14.0 +x13 = 13 +x12 = 12 +x11 = 11 +x10 = 10 +x18 = 18.0 + 0.0*I +x17 = 17.0 +x16 = 16.0 +OK -- 2.39.5