12#ifndef ARCANE_UTILS_VALUECHECKER_H
13#define ARCANE_UTILS_VALUECHECKER_H
18#include "arcane/utils/OStringStream.h"
19#include "arcane/utils/TraceInfo.h"
47 , m_throw_on_error(
true)
55 template <
typename T1,
typename T2,
typename X = std::is_convertible<T2, T1>>
56 void areEqual(
const T1& value,
const T2& expected_value,
const String& message)
58 if (value != expected_value) {
59 _addError(String::format(
"{0} value={1} expected={2}", message, value, expected_value));
67 template <
typename T1,
typename T2,
68 typename ValueType =
typename T1::value_type,
69 typename X1 = std::is_convertible<T1, Span<const ValueType>>,
70 typename X2 = std::is_convertible<T1, Span<const ValueType>>>
77 Int64 nb_value = values.size();
78 Int64 nb_expected = expected_values.
size();
79 if (nb_value != nb_expected) {
80 _addError(String::format(
"{0} bad array size n={1} expected={2}",
81 message, nb_value, nb_expected));
87 for (Int64 i = 0; i < nb_value; ++i) {
88 const ValueType& v = values[i];
89 const ValueType& e = expected_values[i];
91 _addError(String::format(
"{0} index={1} value={2} expected={3}", message, i, v, e));
100 template <
typename T>
105 Int64 nb_expected = expected_values.
dim1Size();
106 if (nb_value != nb_expected) {
107 _addError(String::format(
"{0} bad array size n={1} expected={2}",
108 message, nb_value, nb_expected));
114 for (Int64 i = 0; i < nb_value; ++i)
115 areEqualArray(values[i], expected_values[i], message);
122 template <
typename T>
137 m_throw_on_error = v;
144 Integer
nbError()
const {
return m_nb_error; }
152 bool m_throw_on_error;
156 void _addError(
const String& message);
Déclarations des types utilisés dans Arcane.
Flot de sortie lié à une String.
Vérification de la validité de certaines valeurs.
void areEqual(const T1 &value, const T2 &expected_value, const String &message)
void areEqualArray(const T1 &x_values, const T2 &x_expected_values, const String &message)
Vérifie que les deux tableaux values et expected_values ont les mêmes valeurs.
void areEqualArray(SmallSpan2< T > values, SmallSpan2< T > expected_values, const String &message)
Vérifie que les deux tableaux values et expected_values ont les mêmes valeurs.
bool throwOnError() const
Indique si on lève une exception en cas d'erreur.
void areEqualArray(Span2< const T > values, Span2< const T > expected_values, const String &message)
Vérifie que les deux tableaux 2D values et expected_values ont les mêmes valeurs.
Integer nbError() const
Nombre d'erreurs.
void setThrowOnError(bool v)
Indique si on lève une exception en cas d'erreur.
Vue pour un tableau 2D dont la taille est un 'Int32'.
constexpr __host__ __device__ SizeType dim1Size() const
Nombre d'éléments de la première dimension.
Vue pour un tableau 2D dont la taille est un 'Int64'.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
Vue d'un tableau d'éléments de type T.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-