Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
N
NP_TMcode
Manage
Activity
Members
Plan
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container registry
Analyze
Contributor analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Giacomo Mulas
NP_TMcode
Commits
8ccbdb28
Commit
8ccbdb28
authored
8 months ago
by
Giovanni La Mura
Browse files
Options
Downloads
Patches
Plain Diff
Create a test suite for file IO
parent
49d263fb
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/testing/test_file_io.cpp
+108
-0
108 additions, 0 deletions
src/testing/test_file_io.cpp
with
108 additions
and
0 deletions
src/testing/test_file_io.cpp
0 → 100644
+
108
−
0
View file @
8ccbdb28
/* Copyright (C) 2024 INAF - Osservatorio Astronomico di Cagliari
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
A copy of the GNU General Public License is distributed along with
this program in the COPYING file. If not, see: <https://www.gnu.org/licenses/>.
*/
//! \file test_TEDF.cpp
#include
<cstdio>
#include
<exception>
#include
<hdf5.h>
#include
<string>
#ifndef INCLUDE_TYPES_H_
#include
"../include/types.h"
#endif
#ifndef INCLUDE_ERRORS_H_
#include
"../include/errors.h"
#endif
#ifndef INCLUDE_LIST_H_
#include
"../include/List.h"
#endif
#ifndef INCLUDE_FILE_IO_H_
#include
"../include/file_io.h"
#endif
#ifndef INCLUDE_CONFIGURATION_H_
#include
"../include/Configuration.h"
#endif
using
namespace
std
;
/*! \brief Main program execution body.
*
* This program executes a test to compare whether three configuration
* instances, loaded respectively from an EDFB configuration file, a
* legacy binary, or a HDF5 binary are actually equivalent. The test
* writes a result message to `stdout` then it returns 0 (OS flag for
* a successful process) or some kind of error code, depending on
* whether the test files were found all equal or not. The test accepts
* three command line arguments: the name of the EDFB configuration
* file, the name of the legacy binary file and the name of the HDF5
* binary configuration file.
*
* \param argc: `int` Number of command line arguments
* \param argv: `char **` Array of command argument character strings.
* \return result: `int` Can be: 0 (all files equal); 1 (EDFB and
* legacy binary are different); 10 (EDFB and HDF5 are different);
* 100 (legacy and HDF5 are different). In case more differences are
* found, the error codes sum up together (e.g. 111 means all files
* are different).
*/
int
main
(
int
argc
,
char
**
argv
)
{
int
result
=
0
;
string
dedfb_file
=
"DEDFB"
;
string
legacy_file
=
"c_TEDF"
;
string
hdf5_file
=
"c_TEDF.hd5"
;
if
(
argc
==
4
)
{
dedfb_file
=
string
(
argv
[
1
]);
legacy_file
=
string
(
argv
[
2
]);
hdf5_file
=
string
(
argv
[
3
]);
}
ScattererConfiguration
*
a
,
*
b
,
*
c
;
try
{
a
=
ScattererConfiguration
::
from_dedfb
(
dedfb_file
);
}
catch
(...)
{
printf
(
"Failed to open legacy configuration file.
\n
"
);
return
2
;
}
try
{
b
=
ScattererConfiguration
::
from_binary
(
legacy_file
);
}
catch
(...)
{
printf
(
"Failed to open legacy binary file.
\n
"
);
return
20
;
}
try
{
c
=
ScattererConfiguration
::
from_binary
(
hdf5_file
,
"HDF5"
);
}
catch
(...)
{
printf
(
"Failed to open HDF5 configuration file.
\n
"
);
return
200
;
}
if
(
*
a
==
*
b
)
printf
(
"Configuration objects a and b are equal.
\n
"
);
else
{
printf
(
"Configuration objects a and b are different.
\n
"
);
result
+=
1
;
}
if
(
*
a
==
*
c
)
printf
(
"Configuration objects a and c are equal.
\n
"
);
else
{
printf
(
"Configuration objects a and c are different.
\n
"
);
result
+=
10
;
}
if
(
*
c
==
*
b
)
printf
(
"Configuration objects c and b are equal.
\n
"
);
else
{
printf
(
"Configuration objects c and b are different.
\n
"
);
result
+=
100
;
}
return
result
;
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment