Arcane  v4.1.1.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
TestException.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7#include <gtest/gtest.h>
8
9#include "arccore/base/IndexOutOfRangeException.h"
10#include "arccore/base/FatalErrorException.h"
11#include "arccore/base/NotImplementedException.h"
12
13#include <string>
14
15/*---------------------------------------------------------------------------*/
16/*---------------------------------------------------------------------------*/
17
18using namespace Arccore;
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22namespace
23{
24
25void _doCheckRange(Int64 i, Int64 min_inclusive, Int64 max_exclusive)
26{
27 arccoreCheckRange(i, min_inclusive, max_exclusive);
28}
29void _doCheckRange(Int64 i, Int64 max_exclusive)
30{
31 arccoreCheckAt(i, max_exclusive);
32}
33
34} // namespace
35
36TEST(Exception,Range)
37{
38 EXPECT_THROW(_doCheckRange(0,0,0),IndexOutOfRangeException);
39 EXPECT_THROW(_doCheckRange(-2,-2,-2),IndexOutOfRangeException);
40 EXPECT_THROW(_doCheckRange(-3,-1,5),IndexOutOfRangeException);
41 EXPECT_THROW(_doCheckRange(15,-2,10),IndexOutOfRangeException);
42 EXPECT_THROW(_doCheckRange(15,4,15),IndexOutOfRangeException);
43 EXPECT_NO_THROW(_doCheckRange(4,4,15));
44 EXPECT_NO_THROW(_doCheckRange(-4,-4,5));
45 EXPECT_NO_THROW(_doCheckRange(15,-3,20));
46
47 EXPECT_THROW(_doCheckRange(15,15),IndexOutOfRangeException);
48 EXPECT_THROW(_doCheckRange(-3,15),IndexOutOfRangeException);
49 EXPECT_THROW(_doCheckRange(-3,0),IndexOutOfRangeException);
50 EXPECT_THROW(_doCheckRange(0,0),IndexOutOfRangeException);
51 EXPECT_NO_THROW(_doCheckRange(15,17));
52
53 ARCCORE_CHECK_RANGE(3,-2,19);
54}
55
56TEST(Exception, ArccoreThrow)
57{
58 EXPECT_THROW(ARCCORE_FATAL("Test"), FatalErrorException);
59 EXPECT_THROW(ARCCORE_FATAL_IF(true, "Test"), FatalErrorException);
60 EXPECT_NO_THROW(ARCCORE_FATAL_IF(false, "Test"));
61
64 EXPECT_NO_THROW(ARCCORE_THROW_IF(false, NotImplementedException, "Test"));
65}
66
67/*---------------------------------------------------------------------------*/
68/*---------------------------------------------------------------------------*/
#define ARCCORE_FATAL(...)
Macro envoyant une exception FatalErrorException.
#define ARCCORE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
#define ARCCORE_THROW_IF(cond, exception_class,...)
Macro pour envoyer une exception avec formattage si cond est vrai.
#define ARCCORE_FATAL_IF(cond,...)
Macro envoyant une exception FatalErrorException si cond est vrai.
Classe de base d'une exception.
Exception lorsqu'une erreur fatale est survenue.
Exception lorsqu'une valeur n'est pas dans un intervalle donné.
Exception lorsqu'une fonction n'est pas implémentée.
Espace de nom de Arccore.
__host__ __device__ void arccoreCheckRange(Int64 i, Int64 min_value_inclusive, Int64 max_value_exclusive)
Vérifie que min_value_inclusive <= i < max_value_exclusive.
__host__ __device__ void arccoreCheckAt(Int64 i, Int64 max_size)
Vérifie un éventuel débordement de tableau.