Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
test_IO_GaugeConfig_BinaryParallel.cpp
Go to the documentation of this file.
1 
13 #include "parameterManager_YAML.h"
14 
15 #include "bridgeIO.h"
16 using Bridge::vout;
17 
18 #include "gaugeConfig.h"
19 
20 #include "test_IO_utils.h"
21 
22 #ifdef USE_TEST
23 #include "test.h"
24 #endif
25 
26 #ifdef USE_TESTMANAGER_AUTOREGISTER
27 #include "testManager.h"
28 #endif
29 
30 //====================================================================
32 
39 namespace Test_IO_GaugeConfig {
40  //- test-private parameters
41  namespace {
42  const std::string filename_input = "test_IO_GaugeConfig_BinaryParallel.yaml";
43  const std::string filename_output = "stdout";
44 
45  class Parameters_Test_IO_GaugeConfig : public Parameters {
46  public:
47  Parameters_Test_IO_GaugeConfig()
48  {
49  Register_string("gauge_config_type_input", "NULL");
50  Register_string("config_filename_input", "NULL");
51  Register_string("config_filename_output", "NULL");
52 
53  Register_string("verbose_level", "NULL");
54 
55  Register_double("expected_result", 0.0);
56  }
57  };
58  }
59 
60  //- prototype declaration
62 
63 #ifdef USE_TESTMANAGER_AUTOREGISTER
64 #ifdef USE_MPI
65  namespace {
66  static const bool is_registered = TestManager::RegisterTest(
67  "IO.GaugeConfig.BinaryParallel",
69  );
70  }
71 #endif
72 #endif
73 
74  //====================================================================
76  {
77  // #### parameter setup ####
78  int Ndim = CommonParameters::Ndim();
79  int Nvol = CommonParameters::Nvol();
80 
81  Parameters_Test_IO_GaugeConfig params_test;
82 
83  Parameters params_all;
84 
85  params_all.Register_Parameters("Test_IO_GaugeConfig", &params_test);
86 
87  ParameterManager_YAML params_manager;
88  params_manager.read_params(filename_input, &params_all);
89 
90  const string str_gconf_read = params_test.get_string("gauge_config_type_input");
91  const string readfile = params_test.get_string("config_filename_input");
92  const string testfile = params_test.get_string("config_filename_output");
93  const string str_vlevel = params_test.get_string("verbose_level");
94 #ifdef USE_TEST
95  const double expected_result = params_test.get_double("expected_result");
96 #endif
97 
99 
100  //- print input parameters
101  vout.general(vl, " gconf_read = %s\n", str_gconf_read.c_str());
102  vout.general(vl, " readfile = %s\n", readfile.c_str());
103  vout.general(vl, " testfile = %s\n", testfile.c_str());
104  vout.general(vl, " vlevel = %s\n", str_vlevel.c_str());
105 
106  //- input parameter check
107  int err = 0;
108  err += ParameterCheck::non_NULL(str_gconf_read);
109  err += ParameterCheck::non_NULL(readfile);
110  err += ParameterCheck::non_NULL(testfile);
111 
112  if (err) {
113  vout.crucial(vl, "Test_IO_GaugeConfig: Input parameters have not been set.\n");
114  abort();
115  }
116 
117 
118  // #### Set up a gauge configuration ####
119  Field_G *U = new Field_G(Nvol, Ndim);
120  GaugeConfig *gconf_read = new GaugeConfig(str_gconf_read);
121  gconf_read->read_file((Field *)U, readfile);
122 
123  Field_G *Utest = new Field_G(Nvol, Ndim);
124  GaugeConfig *gconf_test = new GaugeConfig("Binary_Parallel");
125 
126 
127  // #### Execution main part ####
128  err = 0;
129 
130  //- first write to file.
131  gconf_test->write_file(U, testfile);
132 
133  //- then read back from file.
134  gconf_test->read_file(Utest, testfile);
135 
136  //- check with reference config.
137  bool is_equal = (*Utest == *U);
138  if (!is_equal) ++err;
139 
140  vout.general(vl, "Test_IO_GaugeConfig_Binary_Parallel:\t%s\n", is_equal ? "ok" : "failed");
141 
142 
143  int result = err;
144 
145 
146  // #### tydy up ####
147  delete gconf_read;
148  delete U;
149 
150  delete gconf_test;
151  delete Utest;
152 
153 
154 #ifdef USE_TEST
155  return Test::verify(expected_result, result);
156 
157 #else
158  return EXIT_SUCCESS;
159 #endif
160  }
161 } // namespace Test_IO_GaugeConfig