1 // This is mul/mbl/tests/test_test.cxx
2 #include <iostream>
3 #include <fstream>
4 #include <cstdlib>
5 #include <cstring>
6 #include <algorithm>
7 #ifdef _MSC_VER
8 # include "vcl_msvc_warnings.h"
9 #endif
10 #include "vul/vul_file.h"
11 #include "vpl/vpl.h"
12 #include "vsl/vsl_binary_io.h"
13 #include <mbl/mbl_test.h>
14 #include "testlib/testlib_test.h"
15
test_test()16 void test_test()
17 {
18 std::cout << "***********************************\n"
19 << " Testing mbl_test_save_measurement\n"
20 << "***********************************\n";
21
22 vpl_unlink((vul_file::get_cwd()+"/mul/mbl/mbl_test_save_measurement.txt").c_str());
23 vpl_rmdir((vul_file::get_cwd()+"/mul/mbl").c_str());
24 vpl_rmdir((vul_file::get_cwd()+"/mul").c_str());
25 vpl_rmdir((vul_file::get_cwd()+"/mul").c_str());
26
27 std::string cwd = vul_file::get_cwd();
28 std::replace(cwd.begin(), cwd.end(), '\\', '/' ); // avoid backslash control char interpretation.
29
30 // Avoid problems with borland's putenv.
31 char buf[1024];
32 std::strncpy(buf, (std::string("MBL_TEST_SAVE_MEASUREMENT_ROOT=")+cwd).c_str(), 1023);
33 vpl_putenv(buf);
34
35 char * envar = std::getenv("MBL_TEST_SAVE_MEASUREMENT_ROOT");
36 std::string envar2(envar?envar:"");
37 TEST ("putenv works", envar2, cwd);
38 std::cout << "Environment variable should be \"" << cwd << "\".\n"
39 << "Is \"" << envar << "\".\n\n" << std::endl;
40
41 mbl_test_save_measurement("mul/mbl/mbl_test_save_measurement", 5.0);
42 mbl_test_save_measurement("mul/mbl/mbl_test_save_measurement", 10.0);
43
44 std::string fn = vul_file::get_cwd()+ "/mul/mbl/mbl_test_save_measurement.txt";
45 std::cout << fn.c_str() << " contents:\n";
46
47 {
48 std::ifstream data(fn.c_str());
49 char c;
50 while (data.get(c))
51 std::cout.put(c);
52 std::cout << "EOF *****" << std::endl;
53 }
54
55 std::string ds, ts, bs;
56 double v;
57
58 std::ifstream data(fn.c_str());
59 data >> ds >> ts >> bs >> v;
60 TEST("Saved value 1 correctly", v, 5.0);
61 data >> ds >> ts >> bs >> v;
62 TEST("Saved value 2 correctly", v, 10.0);
63
64 std::cout << "**************************************\n"
65 << " Testing mbl_test_summaries_are_equal\n"
66 << "**************************************\n";
67
68 std::string A(
69 "Some random data\n"
70 "A 4\n"
71 "B 3\n"
72 "C 2\n"
73 "AB 3\n");
74 std::string B(
75 "Some random data\n"
76 "A 4\n"
77 "B 3\n"
78 "C 2\n"
79 "AB 3\n");
80
81 TEST("Simple case +ve", mbl_test_summaries_are_equal(A, B), true);
82 TEST("Simple case +ve", mbl_test_summaries_are_equal(A + "D 1", B + "D 2"), false);
83
84 TEST("Simple case +ve", mbl_test_summaries_are_equal(A, B), true);
85 const char * ignore1[]={"D", nullptr };
86 TEST("Exclusions case +ve", mbl_test_summaries_are_equal(A + "D 1", B + "D 2", ignore1), true);
87 const char * ignore2[]={"^ *D", nullptr };
88 TEST("RE Exclusions case +ve", mbl_test_summaries_are_equal(A + "D 1", B + "D 2", ignore2), true);
89 TEST("RE Exclusions case -ne", mbl_test_summaries_are_equal(A + "AD 1", B + "AD 2", ignore2), false);
90
91
92 }
93
94 TESTMAIN(test_test);
95