File: TestAutoAddExterns.cpp

package info (click to toggle)
ecflow 5.15.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 51,868 kB
  • sloc: cpp: 269,341; python: 22,756; sh: 3,609; perl: 770; xml: 333; f90: 204; ansic: 141; makefile: 70
file content (63 lines) | stat: -rw-r--r-- 2,792 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
 * Copyright 2009- ECMWF.
 *
 * This software is licensed under the terms of the Apache Licence version 2.0
 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 * In applying this licence, ECMWF does not waive the privileges and immunities
 * granted to it by virtue of its status as an intergovernmental organisation
 * nor does it submit to any jurisdiction.
 */

#include <iostream>
#include <string>

#include <boost/test/unit_test.hpp>

#include "ecflow/core/File.hpp"
#include "ecflow/node/Defs.hpp"
#include "ecflow/node/formatter/DefsWriter.hpp"
#include "ecflow/test/scaffold/Naming.hpp"

using namespace std;
using namespace ecf;

BOOST_AUTO_TEST_SUITE(U_Parser)

BOOST_AUTO_TEST_SUITE(T_AutoAddExterns)

// Test that automatic add of externs
BOOST_AUTO_TEST_CASE(test_auto_add_externs) {
    std::string path = File::test_data("libs/node/test/parser/data/single_defs/test_auto_add_extern.def", "parser");
    size_t mega_file_size = fs::file_size(path);
    ECF_NAME_THIS_TEST(<< ", using file: " << path << " of size(" << mega_file_size << " MB)");

    Defs defs;
    std::string errorMsg, warningMsg;
    BOOST_REQUIRE_MESSAGE(defs.restore(path, errorMsg, warningMsg), "Expected no errors, but found " << errorMsg);
    BOOST_REQUIRE_MESSAGE(warningMsg.empty(), "Expected no warnings but found:\n" << warningMsg);

    // Check number of extrens read in: Duplicate should be ignore
    BOOST_REQUIRE_MESSAGE(defs.externs().size() == 11,
                          "Expected 11 externs as starting point but found "
                              << defs.externs().size() << "\n"
                              << ecf::as_string(defs, PrintStyle::MIGRATE) << "\n");

    // Test auto extern generation. Don't remove existing extern's
    defs.auto_add_externs(false /* remove_existing_externs_first*/);
    BOOST_REQUIRE_MESSAGE(defs.externs().size() == 11,
                          "Expected 11, auto_add_extern(false) gave: " << defs.externs().size() << "\n"
                                                                       << ecf::as_string(defs, PrintStyle::MIGRATE)
                                                                       << "\n");

    // By removing the externs read, in we can determine the real number of extern;s from
    // parsing all the trigger expressions, and inlimit references
    defs.auto_add_externs(true /* remove_existing_externs_first*/);
    BOOST_REQUIRE_MESSAGE(defs.externs().size() == 10,
                          "Expected 10 externs, since redundant externs removed, auto_add_extern(true) gave: "
                              << defs.externs().size() << "\n"
                              << ecf::as_string(defs, PrintStyle::MIGRATE) << "\n");
}

BOOST_AUTO_TEST_SUITE_END()

BOOST_AUTO_TEST_SUITE_END()