Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ISimpleTableComparator.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/*---------------------------------------------------------------------------*/
8/* ISimpleTableComparator.h (C) 2000-2022 */
9/* */
10/* Interface pour les services permettant de comparer un ISimpleTableOutput */
11/* et un fichier de référence. */
12/*---------------------------------------------------------------------------*/
13/*---------------------------------------------------------------------------*/
14
15#ifndef ARCANE_ISIMPLETABLECOMPARATOR_H
16#define ARCANE_ISIMPLETABLECOMPARATOR_H
17
18/*---------------------------------------------------------------------------*/
19/*---------------------------------------------------------------------------*/
20
21#include "arcane/ISimpleTableOutput.h"
22
23#include "arcane/ItemTypes.h"
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane
29{
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33
34/**
35 * @ingroup StandardService
36 * @brief Interface de classe représentant un comparateur
37 * de tableaux. À utiliser avec un service implémentant
38 * ISimpleTableOutput.
39 *
40 * La différence avec ISimpleTableInternalComparator est
41 * que l'on compare un SimpleTableInternal contenu dans
42 * un ISimpleTableOutput avec un SimpleTableInternal
43 * généré à partir d'un fichier de référence.
44 *
45 * Cette interface permet aussi de générer les fichiers
46 * de référence en utilisant le nom de répertoire et
47 * le nom de tableau du ISimpleTableOutput, permettant
48 * de faciliter le processus.
49 */
50class ARCANE_CORE_EXPORT ISimpleTableComparator
51{
52 public:
53 virtual ~ISimpleTableComparator() = default;
54
55 public:
56 /**
57 * @brief Méthode permettant d'initialiser le service.
58 *
59 * Le pointeur vers une implémentation de ISimpleTableOutput
60 * doit contenir les valeurs à comparer ou à écrire en tant que
61 * valeurs de référence et l'emplacement de destination des
62 * fichiers de sorties, pour que soit automatiquement déterminé
63 * l'emplacement des fichiers de réferences.
64 *
65 * @param simple_table_output_ptr Une implémentation de ISimpleTableOutput.
66 */
67 virtual void init(ISimpleTableOutput* simple_table_output_ptr) = 0;
68
69 /**
70 * @brief Méthode permettant d'effacer les données lues par readReferenceFile().
71 * @note Efface le SimpleTableInternal du comparateur sans toucher à celui du
72 * SimpleTableOutput.
73 */
74 virtual void clear() = 0;
75
76 /**
77 * @brief Méthode permettant d'afficher le tableau lu.
78 *
79 * @param rank Le processus qui doit afficher son tableau (-1 pour tous les processus).
80 */
81 virtual void print(Integer rank = 0) = 0;
82
83 /**
84 * @brief Méthode permettant de modifier le répertoire racine.
85 * Cela permet d'écrire ou de rechercher des fichiers de réferences
86 * autre part que dans le répertoire déterminé par l'implémentation.
87 *
88 * Par défaut, pour l'implémentation csv, le répertoire racine est :
89 * ./output/csv_ref/
90 *
91 * @param root_directory Le nouveau répertoire racine.
92 */
93 virtual void editRootDirectory(const Directory& root_directory) = 0;
94
95 /**
96 * @brief Méthode permettant d'écrire les fichiers de référence.
97 *
98 * @warning (Pour l'instant), cette méthode utilise l'objet pointé par
99 * le pointeur donné lors de l'init(), donc l'écriture s'effectura
100 * dans le format voulu par l'implémentation de ISimpleTableOutput.
101 * Si les formats de lecture et d'écriture ne correspondent
102 * pas, un appel à "compareWithReference()" retournera forcement
103 * false.
104 *
105 * @param rank Le processus qui doit écrire son fichier (-1 pour tous les processus).
106 * @return true Si l'écriture a bien eu lieu (et si processus appelant != rank).
107 * @return false Si l'écriture n'a pas eu lieu.
108 */
109 virtual bool writeReferenceFile(Integer rank = -1) = 0;
110 /**
111 * @brief Méthode permettant de lire les fichiers de références.
112 *
113 * Le type des fichiers de référence doit correspondre à l'implémentation
114 * de cette interface choisi (exemple : fichier .csv -> SimpleCsvComparatorService).
115 *
116 * @param rank Le processus qui doit lire son fichier (-1 pour tous les processus).
117 * @return true Si le fichier a été lu (et si processus appelant != rank).
118 * @return false Si le fichier n'a pas été lu.
119 */
120 virtual bool readReferenceFile(Integer rank = -1) = 0;
121
122 /**
123 * @brief Méthode permettant de savoir si les fichiers de réferences existent.
124 *
125 * @param rank Le processus qui doit chercher son fichier (-1 pour tous les processus).
126 * @return true Si le fichier a été trouvé (et si processus appelant != rank).
127 * @return false Si le fichier n'a pas été trouvé.
128 */
129 virtual bool isReferenceExist(Integer rank = -1) = 0;
130
131 /**
132 * @brief Méthode permettant de comparer l'objet de type ISimpleTableOutput
133 * aux fichiers de réferences.
134 *
135 * @param rank Le processus qui doit comparer ses résultats (-1 pour tous les processus).
136 * @param compare_dimension_too Si l'on doit aussi comparer les dimensions des tableaux de valeurs.
137 * @return true S'il n'y a pas de différences (et si processus appelant != rank).
138 * @return false S'il y a au moins une différence.
139 */
140 virtual bool compareWithReference(Integer rank = -1, bool compare_dimension_too = false) = 0;
141
142 /**
143 * @brief Méthode permettant de comparer uniquement un élement.
144 * Les deux SimpleTableInternal sont représentés par des Ref,
145 * donc toujours à jour.
146 * Cette méthode peut être utilisé pendant le calcul, permettant
147 * de comparer les valeurs au fur et à mesure de l'avancement du
148 * calcul, au lieu de faire une comparaison final à la fin (il est
149 * tout de même possible de faire les deux).
150 *
151 * @param column_name Le nom de la colonne où se trouve l'élément.
152 * @param row_name Le nom de la ligne où se trouve l'élément.
153 * @param rank Le processus qui doit comparer ses résultats (-1 pour tous les processus).
154 * @return true Si les deux valeurs sont égales.
155 * @return false Si les deux valeurs sont différentes.
156 */
157 virtual bool compareElemWithReference(const String& column_name, const String& row_name, Integer rank = -1) = 0;
158
159 /**
160 * @brief Méthode permettant de comparer une valeur avec
161 * une valeur du tableau de référence.
162 * Cette méthode n'a pas besoin d'un internal 'toCompare'
163 * (setInternalToCompare() non nécessaire).
164 *
165 * @param elem La valeur à comparer.
166 * @param column_name Le nom de la colonne où se trouve l'élément de référence.
167 * @param row_name Le nom de la ligne où se trouve l'élément de référence.
168 * @param rank Le processus qui doit comparer ses résultats (-1 pour tous les processus).
169 * @return true Si les deux valeurs sont égales.
170 * @return false Si les deux valeurs sont différentes.
171 */
172 virtual bool compareElemWithReference(Real elem, const String& column_name, const String& row_name, Integer rank = -1) = 0;
173
174 /**
175 * @brief Méthode permettant d'ajouter une colonne dans la liste des colonnes
176 * à comparer.
177 *
178 * @param column_name Le nom de la colonne à comparer.
179 * @return true Si le nom a bien été ajouté.
180 * @return false Sinon.
181 */
182 virtual bool addColumnForComparing(const String& column_name) = 0;
183 /**
184 * @brief Méthode permettant d'ajouter une ligne dans la liste des lignes
185 * à comparer.
186 *
187 * @param row_name Le nom de la ligne à comparer.
188 * @return true Si le nom a bien été ajouté.
189 * @return false Sinon.
190 */
191 virtual bool addRowForComparing(const String& row_name) = 0;
192
193 /**
194 * @brief Méthode permettant de définir si le tableau de
195 * colonnes représente les colonnes à inclure dans la
196 * comparaison (false/par défaut) ou représente les colonnes
197 * à exclure de la comparaison (true).
198 *
199 * @param is_exclusive true si les colonnes doivent être
200 * exclus.
201 */
202 virtual void isAnArrayExclusiveColumns(bool is_exclusive) = 0;
203
204 /**
205 * @brief Méthode permettant de définir si le tableau de
206 * lignes représente les lignes à inclure dans la
207 * comparaison (false/par défaut) ou représente les lignes
208 * à exclure de la comparaison (true).
209 *
210 * @param is_exclusive true si les lignes doivent être
211 * exclus.
212 */
213 virtual void isAnArrayExclusiveRows(bool is_exclusive) = 0;
214
215 /**
216 * @brief Méthode permettant d'ajouter une expression régulière
217 * permettant de déterminer les colonnes à comparer.
218 *
219 * @param regex_column L'expression régulière (format ECMAScript).
220 */
221 virtual void editRegexColumns(const String& regex_column) = 0;
222 /**
223 * @brief Méthode permettant d'ajouter une expression régulière
224 * permettant de déterminer les lignes à comparer.
225 *
226 * @param regex_row L'expression régulière (format ECMAScript).
227 */
228 virtual void editRegexRows(const String& regex_row) = 0;
229
230 /**
231 * @brief Méthode permettant de demander à ce que l'expression régulière
232 * exclut des colonnes au lieu d'en inclure.
233 *
234 * @param is_exclusive Si l'expression régulière est excluante.
235 */
236 virtual void isARegexExclusiveColumns(bool is_exclusive) = 0;
237 /**
238 * @brief Méthode permettant de demander à ce que l'expression régulière
239 * exclut des lignes au lieu d'en inclure.
240 *
241 * @param is_exclusive Si l'expression régulière est excluante.
242 */
243 virtual void isARegexExclusiveRows(bool is_exclusive) = 0;
244
245 /**
246 * @brief Méthode permettant de définir un epsilon pour une colonne donnée.
247 * Cet epsilon doit être positif pour être pris en compte.
248 * S'il y a confit avec un epsilon de ligne (défini avec addEpsilonRow()),
249 * c'est l'epsilon le plus grand qui est pris en compte.
250 * @note Si un epsilon a déjà été défini sur cette colonne, alors l'ancien
251 * epsilon sera remplacé.
252 *
253 * @param column_name Le nom de la colonne où l'epsilon sera pris en compte.
254 * @param epsilon La marge d'erreur epsilon.
255 * @return true Si l'epsilon a bien pu être défini.
256 * @return false Si l'epsilon n'a pas pu être défini.
257 */
258 virtual bool addEpsilonColumn(const String& column_name, Real epsilon) = 0;
259
260 /**
261 * @brief Méthode permettant de définir un epsilon pour une ligne donnée.
262 * Cet epsilon doit être positif pour être pris en compte.
263 * S'il y a confit avec un epsilon de colonne (défini avec addEpsilonColumn()),
264 * c'est l'epsilon le plus grand qui est pris en compte.
265 * @note Si un epsilon a déjà été défini sur cette ligne, alors l'ancien
266 * epsilon sera remplacé.
267 *
268 * @param column_name Le nom de la ligne où l'epsilon sera pris en compte.
269 * @param epsilon La marge d'erreur epsilon.
270 * @return true Si l'epsilon a bien pu être défini.
271 * @return false Si l'epsilon n'a pas pu être défini.
272 */
273 virtual bool addEpsilonRow(const String& row_name, Real epsilon) = 0;
274};
275
276/*---------------------------------------------------------------------------*/
277/*---------------------------------------------------------------------------*/
278
279} // End namespace Arcane
280
281/*---------------------------------------------------------------------------*/
282/*---------------------------------------------------------------------------*/
283
284#endif
285
286/*---------------------------------------------------------------------------*/
287/*---------------------------------------------------------------------------*/
Classe gérant un répertoire.
Definition Directory.h:33
Interface de classe représentant un comparateur de tableaux. À utiliser avec un service implémentant ...
virtual bool readReferenceFile(Integer rank=-1)=0
Méthode permettant de lire les fichiers de références.
virtual void editRegexRows(const String &regex_row)=0
Méthode permettant d'ajouter une expression régulière permettant de déterminer les lignes à comparer.
virtual void isAnArrayExclusiveRows(bool is_exclusive)=0
Méthode permettant de définir si le tableau de lignes représente les lignes à inclure dans la compara...
virtual void editRootDirectory(const Directory &root_directory)=0
Méthode permettant de modifier le répertoire racine. Cela permet d'écrire ou de rechercher des fichie...
virtual bool compareWithReference(Integer rank=-1, bool compare_dimension_too=false)=0
Méthode permettant de comparer l'objet de type ISimpleTableOutput aux fichiers de réferences.
virtual bool addEpsilonColumn(const String &column_name, Real epsilon)=0
Méthode permettant de définir un epsilon pour une colonne donnée. Cet epsilon doit être positif pour ...
virtual void isARegexExclusiveColumns(bool is_exclusive)=0
Méthode permettant de demander à ce que l'expression régulière exclut des colonnes au lieu d'en inclu...
virtual void clear()=0
Méthode permettant d'effacer les données lues par readReferenceFile().
virtual bool addColumnForComparing(const String &column_name)=0
Méthode permettant d'ajouter une colonne dans la liste des colonnes à comparer.
virtual void editRegexColumns(const String &regex_column)=0
Méthode permettant d'ajouter une expression régulière permettant de déterminer les colonnes à compare...
virtual bool isReferenceExist(Integer rank=-1)=0
Méthode permettant de savoir si les fichiers de réferences existent.
virtual bool writeReferenceFile(Integer rank=-1)=0
Méthode permettant d'écrire les fichiers de référence.
virtual void isAnArrayExclusiveColumns(bool is_exclusive)=0
Méthode permettant de définir si le tableau de colonnes représente les colonnes à inclure dans la com...
virtual bool compareElemWithReference(Real elem, const String &column_name, const String &row_name, Integer rank=-1)=0
Méthode permettant de comparer une valeur avec une valeur du tableau de référence....
virtual bool addRowForComparing(const String &row_name)=0
Méthode permettant d'ajouter une ligne dans la liste des lignes à comparer.
virtual void isARegexExclusiveRows(bool is_exclusive)=0
Méthode permettant de demander à ce que l'expression régulière exclut des lignes au lieu d'en inclure...
virtual void print(Integer rank=0)=0
Méthode permettant d'afficher le tableau lu.
virtual void init(ISimpleTableOutput *simple_table_output_ptr)=0
Méthode permettant d'initialiser le service.
virtual bool compareElemWithReference(const String &column_name, const String &row_name, Integer rank=-1)=0
Méthode permettant de comparer uniquement un élement. Les deux SimpleTableInternal sont représentés p...
virtual bool addEpsilonRow(const String &row_name, Real epsilon)=0
Méthode permettant de définir un epsilon pour une ligne donnée. Cet epsilon doit être positif pour êt...
Interface représentant une sortie de tableau simple.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-