/* Copyright 2020 Equnor ASA. This file is part of the Open Porous Media project (OPM). OPM 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. OPM 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. You should have received a copy of the GNU General Public License along with OPM. If not, see . */ #define BOOST_TEST_MODULE RFTConfigTests #include #include #include #include #include #include #include #include #include #include namespace { struct Setup { Setup(const ::Opm::Deck& deck); ::Opm::EclipseState es; ::Opm::Schedule sched; }; Setup::Setup(const ::Opm::Deck& deck) : es (deck) , sched(deck, es) {} Setup parseDeckString(const std::string& input) { return { ::Opm::Parser{}.parseString(input) }; } std::string basesetup_5x5x5() { return R"(RUNSPEC DIMENS 5 5 5 / WELLDIMS 2 5 2 2 / TABDIMS / OIL WATER GAS DISGAS METRIC GRID INIT DXV 5*100.0 / DYV 5*100.0 / DZV 5*1.0 / DEPTHZ 36*2000.0 / PORO 125*0.3 / PERMX 125*100.0 / COPY 'PERMX' 'PERMY' / 'PERMX' 'PERMZ' / / MULTIPLY 'PERMZ' 0.1 / / PROPS DENSITY 812.3 1024.5 1.0 / SCHEDULE WELSPECS 'I' 'I' 1 1 2000.0 WATER / 'P' 'P' 5 5 2005.0 OIL / / COMPDAT 'I' 0 0 1 5 'OPEN' 2* 0.5 / 'P' 0 0 1 5 'OPEN' 2* 0.5 / / )"; } } // Anonymous BOOST_AUTO_TEST_SUITE(No_RFT_Keywords) namespace { std::string simple_tstep_all_open() { return R"( WCONINJE 'I' 'WATER' 'OPEN' 'RATE' 1000.0 1* 500.0 / / WCONPROD 'P' 'OPEN' 'ORAT' 750.0 750.0 10.0E+3 1250.0 1* 75.0 / / TSTEP -- 1 2 3 4 5 6 7 8 9 10..19 0.1 0.2 0.3 0.4 0.5 1.5 5 10 20 10*30 / )"; } std::string simple_tstep_deferred_open() { return R"( WCONINJE 'I' 'WATER' 'SHUT' 'RATE' 1000.0 1* 500.0 / / WCONPROD 'P' 'OPEN' 'ORAT' 750.0 750.0 10.0E+3 1250.0 1* 75.0 / / TSTEP -- 1 2 3 4 5 6 7 8 9 0.1 0.2 0.3 0.4 0.5 1.5 5 10 20 / WELOPEN 'I' 'OPEN' / / TSTEP -- 10..19 10*30 / )"; } } BOOST_AUTO_TEST_CASE(Simple) { const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_all_open()); const auto& rftcfg = cse.sched.rftConfig(); BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(20)); BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t(20)); for (auto nstep = std::size_t(20), step = 0*nstep; step < nstep; ++step) { BOOST_CHECK_MESSAGE(!rftcfg.active(step), "RFT Config must be Inactive"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", step), R"(Well "I" must not have a Well Open RFT request")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", step), R"(Well "P" must not have a Well Open RFT request")"); } } BOOST_AUTO_TEST_CASE(Simple_Deferred_Open) { const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_deferred_open()); const auto& rftcfg = cse.sched.rftConfig(); BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(20)); BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t(20)); for (auto nstep = std::size_t(20), step = 0*nstep; step < nstep; ++step) { BOOST_CHECK_MESSAGE(!rftcfg.active(step), "RFT Config must be Inactive"); // WELOPEN does not imply RFT output BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", step), R"(Well "I" must not have a Well Open RFT request")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", step), R"(Well "P" must not have a Well Open RFT request")"); } } BOOST_AUTO_TEST_SUITE_END() // No_RFT_Keywords // ===================================================================== BOOST_AUTO_TEST_SUITE(WRFT) namespace { std::string simple_tstep_all_open() { return R"( WCONINJE 'I' 'WATER' 'OPEN' 'RATE' 1000.0 1* 500.0 / / WCONPROD 'P' 'OPEN' 'ORAT' 750.0 750.0 10.0E+3 1250.0 1* 75.0 / / TSTEP -- 1 2 3 4 (sim step = 0..3) 0.1 0.2 0.3 0.4 / WRFT -- Request RFT output for all wells SUBSEQUENTLY opened. / TSTEP -- 5..7 (sim step = 4..6) 3*30 / WRFT -- Request RFT output for 'P' and all wells subsequently opened 'P' / / TSTEP -- 8..10 (sim step = 7..9) 3*30 / )"; } std::string simple_tstep_deferred_open() { return R"( WCONINJE 'I' 'WATER' 'SHUT' 'RATE' 1000.0 1* 500.0 / / WCONPROD 'P' 'OPEN' 'ORAT' 750.0 750.0 10.0E+3 1250.0 1* 75.0 / / TSTEP -- 1 2 3 4 (sim step = 0..3) 0.1 0.2 0.3 0.4 / WRFT -- Request RFT output for all wells SUBSEQUENTLY opened. / TSTEP -- 5..7 (sim step = 4..6) 3*30 / WELOPEN 'I' 'OPEN' / / TSTEP -- 8..10 (sim step = 7..9) 3*30 / WRFT -- Request RFT output for 'P' and all wells subsequently opened 'P' / / TSTEP -- 11..13 (sim step = 10..12) 3*30 / )"; } } BOOST_AUTO_TEST_CASE(Simple) { const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_all_open()); const auto& rftcfg = cse.sched.rftConfig(); BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(11)); BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t( 7)); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 0), R"(Should NOT Output RFT Data for "P" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 1), R"(Should NOT Output RFT Data for "P" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 2), R"(Should NOT Output RFT Data for "P" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 3), R"(Should NOT Output RFT Data for "P" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 4), R"(Should NOT Output RFT Data for "P" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 5), R"(Should NOT Output RFT Data for "P" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 6), R"(Should NOT Output RFT Data for "P" at Step 6)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 7), R"(Should Output RFT Data for "P" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 8), R"(Should NOT Output RFT Data for "P" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 9), R"(Should NOT Output RFT Data for "P" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 0), R"(Should NOT Output RFT Data for "I" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 1), R"(Should NOT Output RFT Data for "I" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 2), R"(Should NOT Output RFT Data for "I" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 3), R"(Should NOT Output RFT Data for "I" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 4), R"(Should NOT Output RFT Data for "I" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 5), R"(Should NOT Output RFT Data for "I" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 6), R"(Should NOT Output RFT Data for "I" at Step 6)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 7), R"(Should NOT Output RFT Data for "I" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 8), R"(Should NOT Output RFT Data for "I" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 9), R"(Should NOT Output RFT Data for "I" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.active(0), "RFT Config must be Inactive at Step 0"); BOOST_CHECK_MESSAGE(!rftcfg.active(1), "RFT Config must be Inactive at Step 1"); BOOST_CHECK_MESSAGE(!rftcfg.active(2), "RFT Config must be Inactive at Step 2"); BOOST_CHECK_MESSAGE(!rftcfg.active(3), "RFT Config must be Inactive at Step 3"); BOOST_CHECK_MESSAGE(!rftcfg.active(4), "RFT Config must be Inactive at Step 4"); BOOST_CHECK_MESSAGE(!rftcfg.active(5), "RFT Config must be Inactive at Step 5"); BOOST_CHECK_MESSAGE(!rftcfg.active(6), "RFT Config must be Inactive at Step 6"); BOOST_CHECK_MESSAGE( rftcfg.active(7), "RFT Config must be ACTIVE at Step 7"); BOOST_CHECK_MESSAGE(!rftcfg.active(8), "RFT Config must be Inactive at Step 8"); BOOST_CHECK_MESSAGE(!rftcfg.active(9), "RFT Config must be Inactive at Step 9"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 0), R"(Well "I" must not have a Well Open RFT request at step 0")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 1), R"(Well "I" must not have a Well Open RFT request at step 1")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 2), R"(Well "I" must not have a Well Open RFT request at step 2")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 3), R"(Well "I" must not have a Well Open RFT request at step 3")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 4), R"(Well "I" must have a Well Open RFT request at step 4")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 5), R"(Well "I" must have a Well Open RFT request at step 5")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 6), R"(Well "I" must have a Well Open RFT request at step 6")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 7), R"(Well "I" must have a Well Open RFT request at step 7")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 8), R"(Well "I" must have a Well Open RFT request at step 8")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 9), R"(Well "I" must have a Well Open RFT request at step 9")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 0), R"(Well "P" must not have a Well Open RFT request at step 0")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 1), R"(Well "P" must not have a Well Open RFT request at step 1")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 2), R"(Well "P" must not have a Well Open RFT request at step 2")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 3), R"(Well "P" must not have a Well Open RFT request at step 3")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 4), R"(Well "P" must have a Well Open RFT request at step 4")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 5), R"(Well "P" must have a Well Open RFT request at step 5")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 6), R"(Well "P" must have a Well Open RFT request at step 6")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 7), R"(Well "P" must have a Well Open RFT request at step 7")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 8), R"(Well "P" must have a Well Open RFT request at step 8")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 9), R"(Well "P" must have a Well Open RFT request at step 9")"); } BOOST_AUTO_TEST_CASE(Deferred_Open) { const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_deferred_open()); const auto& rftcfg = cse.sched.rftConfig(); BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(14)); BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t( 7)); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 0), R"(Should NOT Output RFT Data for "P" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 1), R"(Should NOT Output RFT Data for "P" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 2), R"(Should NOT Output RFT Data for "P" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 3), R"(Should NOT Output RFT Data for "P" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 4), R"(Should NOT Output RFT Data for "P" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 5), R"(Should NOT Output RFT Data for "P" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 6), R"(Should NOT Output RFT Data for "P" at Step 6)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 7), R"(Should NOT Output RFT Data for "P" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 8), R"(Should NOT Output RFT Data for "P" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 9), R"(Should NOT Output RFT Data for "P" at Step 9)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 10), R"(Should Output RFT Data for "P" at Step 10)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 11), R"(Should NOT Output RFT Data for "P" at Step 11)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 12), R"(Should NOT Output RFT Data for "P" at Step 12)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 0), R"(Should NOT Output RFT Data for "I" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 1), R"(Should NOT Output RFT Data for "I" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 2), R"(Should NOT Output RFT Data for "I" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 3), R"(Should NOT Output RFT Data for "I" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 4), R"(Should NOT Output RFT Data for "I" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 5), R"(Should NOT Output RFT Data for "I" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 6), R"(Should NOT Output RFT Data for "I" at Step 6)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 7), R"(Should Output RFT Data for "I" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 8), R"(Should NOT Output RFT Data for "I" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 9), R"(Should NOT Output RFT Data for "I" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 10), R"(Should NOT Output RFT Data for "I" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 11), R"(Should NOT Output RFT Data for "I" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 12), R"(Should NOT Output RFT Data for "I" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 0), "RFT Config must be Inactive at Step 0"); BOOST_CHECK_MESSAGE(!rftcfg.active( 1), "RFT Config must be Inactive at Step 1"); BOOST_CHECK_MESSAGE(!rftcfg.active( 2), "RFT Config must be Inactive at Step 2"); BOOST_CHECK_MESSAGE(!rftcfg.active( 3), "RFT Config must be Inactive at Step 3"); BOOST_CHECK_MESSAGE(!rftcfg.active( 4), "RFT Config must be Inactive at Step 4"); BOOST_CHECK_MESSAGE(!rftcfg.active( 5), "RFT Config must be Inactive at Step 5"); BOOST_CHECK_MESSAGE(!rftcfg.active( 6), "RFT Config must be Inactive at Step 6"); BOOST_CHECK_MESSAGE( rftcfg.active( 7), "RFT Config must be ACTIVE at Step 7"); BOOST_CHECK_MESSAGE(!rftcfg.active( 8), "RFT Config must be Inactive at Step 8"); BOOST_CHECK_MESSAGE(!rftcfg.active( 9), "RFT Config must be Inactive at Step 9"); BOOST_CHECK_MESSAGE( rftcfg.active(10), "RFT Config must be ACTIVE at Step 10"); BOOST_CHECK_MESSAGE(!rftcfg.active(11), "RFT Config must be Inactive at Step 11"); BOOST_CHECK_MESSAGE(!rftcfg.active(12), "RFT Config must be Inactive at Step 12"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 0), R"(Well "I" must not have a Well Open RFT request at step 0")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 1), R"(Well "I" must not have a Well Open RFT request at step 1")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 2), R"(Well "I" must not have a Well Open RFT request at step 2")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 3), R"(Well "I" must not have a Well Open RFT request at step 3")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 4), R"(Well "I" must have a Well Open RFT request at step 4")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 5), R"(Well "I" must have a Well Open RFT request at step 5")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 6), R"(Well "I" must have a Well Open RFT request at step 6")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 7), R"(Well "I" must have a Well Open RFT request at step 7")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 8), R"(Well "I" must have a Well Open RFT request at step 8")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 9), R"(Well "I" must have a Well Open RFT request at step 9")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 10), R"(Well "I" must have a Well Open RFT request at step 10")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 11), R"(Well "I" must have a Well Open RFT request at step 11")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 12), R"(Well "I" must have a Well Open RFT request at step 12")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 0), R"(Well "P" must not have a Well Open RFT request at step 0")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 1), R"(Well "P" must not have a Well Open RFT request at step 1")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 2), R"(Well "P" must not have a Well Open RFT request at step 2")"); BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 3), R"(Well "P" must not have a Well Open RFT request at step 3")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 4), R"(Well "P" must have a Well Open RFT request at step 4")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 5), R"(Well "P" must have a Well Open RFT request at step 5")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 6), R"(Well "P" must have a Well Open RFT request at step 6")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 7), R"(Well "P" must have a Well Open RFT request at step 7")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 8), R"(Well "P" must have a Well Open RFT request at step 8")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 9), R"(Well "P" must have a Well Open RFT request at step 9")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 10), R"(Well "P" must have a Well Open RFT request at step 10")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 11), R"(Well "P" must have a Well Open RFT request at step 11")"); BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 12), R"(Well "P" must have a Well Open RFT request at step 12")"); } BOOST_AUTO_TEST_SUITE_END() // WRFT // ===================================================================== BOOST_AUTO_TEST_SUITE(WRFTPLT) namespace { std::string simple_tstep_all_open() { return R"( WCONINJE 'I' 'WATER' 'OPEN' 'RATE' 1000.0 1* 500.0 / / WCONPROD 'P' 'OPEN' 'ORAT' 750.0 750.0 10.0E+3 1250.0 1* 75.0 / / TSTEP -- 1 2 3 4 (sim step = 0..3) 0.1 0.2 0.3 0.4 / WRFTPLT 'P' FOPN / / TSTEP -- 5..7 (sim step = 4..6) 3*30 / WRFTPLT 'P' 1* YES / 'I' REPT / / TSTEP -- 8..10 (sim step = 7..9) 3*30 / WRFTPLT 'P' YES / 'I' NO YES / / TSTEP -- 11..13 (sim step = 10..12) 3*30 / WRFTPLT '*' TIMESTEP / / TSTEP -- 14..15 (sim step = 13..14) 30 30 / )"; } std::string simple_tstep_deferred_open() { return R"( WCONINJE 'I' 'WATER' 'SHUT' 'RATE' 1000.0 1* 500.0 / / WCONPROD 'P' 'OPEN' 'ORAT' 500.0 500.0 10.0E+3 1250.0 1* 75.0 / / TSTEP -- 1 2 3 4 (sim step = 0..3) 0.1 0.2 0.3 0.4 / WRFTPLT '*' FOPN / / TSTEP -- 5..7 (sim step = 4..6) 3*30 / WELOPEN 'I' 'OPEN' / / TSTEP -- 8..10 (sim step = 7..9) 3*30 / WRFTPLT 'P' 1* YES / 'I' REPT / / WELSPECS 'P2' 'P' 1 5 2005.0 OIL / / COMPDAT 'P2' 0 0 1 5 'OPEN' 2* 0.5 / / TSTEP -- 11..13 (sim step = 10..12) 3*30 / WRFTPLT 'P' YES / 'I' NO YES / / TSTEP -- 14..16 (sim step = 13..15) 3*30 / WCONPROD 'P2' 'OPEN' 'ORAT' 250.0 250.0 10.0E+3 1250.0 1* 75.0 / / TSTEP -- 17..18 (sim step = 16..17) 30 30 / WRFTPLT '*' TIMESTEP / / TSTEP -- 19..20 (sim step = 18..19) 30 30 / )"; } } BOOST_AUTO_TEST_CASE(All_Open) { const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_all_open()); const auto& rftcfg = cse.sched.rftConfig(); BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(16)); BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t( 4)); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 0), R"(Should NOT Output RFT Data for "P" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 1), R"(Should NOT Output RFT Data for "P" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 2), R"(Should NOT Output RFT Data for "P" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 3), R"(Should NOT Output RFT Data for "P" at Step 3)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 4), R"(Should Output RFT Data for "P" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 5), R"(Should NOT Output RFT Data for "P" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 6), R"(Should NOT Output RFT Data for "P" at Step 6)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 7), R"(Should NOT Output RFT Data for "P" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 8), R"(Should NOT Output RFT Data for "P" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 9), R"(Should NOT Output RFT Data for "P" at Step 9)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 10), R"(Should Output RFT Data for "P" at Step 10)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 11), R"(Should NOT Output RFT Data for "P" at Step 11)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 12), R"(Should NOT Output RFT Data for "P" at Step 12)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 13), R"(Should Output RFT Data for "P" at Step 13)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 14), R"(Should Output RFT Data for "P" at Step 14)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 15), R"(Should Output RFT Data for "P" at Step 15)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 0), R"(Should NOT Output PLT Data for "P" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 1), R"(Should NOT Output PLT Data for "P" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 2), R"(Should NOT Output PLT Data for "P" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 3), R"(Should NOT Output PLT Data for "P" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 4), R"(Should NOT Output PLT Data for "P" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 5), R"(Should NOT Output PLT Data for "P" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 6), R"(Should NOT Output PLT Data for "P" at Step 6)"); BOOST_CHECK_MESSAGE( rftcfg.plt("P", 7), R"(Should Output PLT Data for "P" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 8), R"(Should NOT Output PLT Data for "P" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 9), R"(Should NOT Output PLT Data for "P" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 10), R"(Should NOT Output PLT Data for "P" at Step 10)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 11), R"(Should NOT Output PLT Data for "P" at Step 11)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 12), R"(Should NOT Output PLT Data for "P" at Step 12)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 13), R"(Should NOT Output PLT Data for "P" at Step 13)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 14), R"(Should NOT Output PLT Data for "P" at Step 14)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 15), R"(Should NOT Output PLT Data for "P" at Step 15)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 0), R"(Should NOT Output RFT Data for "I" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 1), R"(Should NOT Output RFT Data for "I" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 2), R"(Should NOT Output RFT Data for "I" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 3), R"(Should NOT Output RFT Data for "I" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 4), R"(Should NOT Output RFT Data for "I" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 5), R"(Should NOT Output RFT Data for "I" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 6), R"(Should NOT Output RFT Data for "I" at Step 6)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 7), R"(Should Output RFT Data for "I" at Step 7)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 8), R"(Should Output RFT Data for "I" at Step 8)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 9), R"(Should Output RFT Data for "I" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 10), R"(Should NOT Output RFT Data for "I" at Step 10)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 11), R"(Should NOT Output RFT Data for "I" at Step 11)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 12), R"(Should NOT Output RFT Data for "I" at Step 12)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 13), R"(Should Output RFT Data for "I" at Step 13)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 14), R"(Should Output RFT Data for "I" at Step 14)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 15), R"(Should Output RFT Data for "I" at Step 15)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 0), R"(Should NOT Output PLT Data for "I" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 1), R"(Should NOT Output PLT Data for "I" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 2), R"(Should NOT Output PLT Data for "I" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 3), R"(Should NOT Output PLT Data for "I" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 4), R"(Should NOT Output PLT Data for "I" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 5), R"(Should NOT Output PLT Data for "I" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 6), R"(Should NOT Output PLT Data for "I" at Step 6)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 7), R"(Should NOT Output PLT Data for "I" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 8), R"(Should NOT Output PLT Data for "I" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 9), R"(Should NOT Output PLT Data for "I" at Step 9)"); BOOST_CHECK_MESSAGE( rftcfg.plt("I", 10), R"(Should Output PLT Data for "I" at Step 10)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 11), R"(Should NOT Output PLT Data for "I" at Step 11)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 12), R"(Should NOT Output PLT Data for "I" at Step 12)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 13), R"(Should NOT Output PLT Data for "I" at Step 13)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 14), R"(Should NOT Output PLT Data for "I" at Step 14)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 15), R"(Should NOT Output PLT Data for "I" at Step 15)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 0), R"(RFT Config must be Inactive at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 1), R"(RFT Config must be Inactive at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 2), R"(RFT Config must be Inactive at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 3), R"(RFT Config must be Inactive at Step 3)"); BOOST_CHECK_MESSAGE( rftcfg.active( 4), R"(RFT Config must be Active at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 5), R"(RFT Config must be Inactive at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 6), R"(RFT Config must be Inactive at Step 6)"); BOOST_CHECK_MESSAGE( rftcfg.active( 7), R"(RFT Config must be Active at Step 7)"); BOOST_CHECK_MESSAGE( rftcfg.active( 8), R"(RFT Config must be Active at Step 8)"); BOOST_CHECK_MESSAGE( rftcfg.active( 9), R"(RFT Config must be Active at Step 9)"); BOOST_CHECK_MESSAGE( rftcfg.active(10), R"(RFT Config must be Active at Step 10)"); BOOST_CHECK_MESSAGE(!rftcfg.active(11), R"(RFT Config must be Inactive at Step 11)"); BOOST_CHECK_MESSAGE(!rftcfg.active(12), R"(RFT Config must be Inactive at Step 12)"); BOOST_CHECK_MESSAGE( rftcfg.active(13), R"(RFT Config must be Active at Step 13)"); BOOST_CHECK_MESSAGE( rftcfg.active(14), R"(RFT Config must be Active at Step 14)"); BOOST_CHECK_MESSAGE( rftcfg.active(15), R"(RFT Config must be Active at Step 15)"); } BOOST_AUTO_TEST_CASE(Deferred_Open) { const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_deferred_open()); const auto& rftcfg = cse.sched.rftConfig(); BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(21)); BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t( 4)); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 0), R"(Should NOT Output RFT Data for "P" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 1), R"(Should NOT Output RFT Data for "P" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 2), R"(Should NOT Output RFT Data for "P" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 3), R"(Should NOT Output RFT Data for "P" at Step 3)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 4), R"(Should Output RFT Data for "P" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 5), R"(Should NOT Output RFT Data for "P" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 6), R"(Should NOT Output RFT Data for "P" at Step 6)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 7), R"(Should NOT Output RFT Data for "P" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 8), R"(Should NOT Output RFT Data for "P" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 9), R"(Should NOT Output RFT Data for "P" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 10), R"(Should NOT Output RFT Data for "P" at Step 10)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 11), R"(Should NOT Output RFT Data for "P" at Step 11)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 12), R"(Should NOT Output RFT Data for "P" at Step 12)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 13), R"(Should Output RFT Data for "P" at Step 13)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 14), R"(Should NOT Output RFT Data for "P" at Step 14)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 15), R"(Should NOT Output RFT Data for "P" at Step 15)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 16), R"(Should NOT Output RFT Data for "P" at Step 16)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 17), R"(Should NOT Output RFT Data for "P" at Step 17)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 18), R"(Should Output RFT Data for "P" at Step 18)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 19), R"(Should Output RFT Data for "P" at Step 19)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P", 20), R"(Should Output RFT Data for "P" at Step 20)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 0), R"(Should NOT Output PLT Data for "P" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 1), R"(Should NOT Output PLT Data for "P" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 2), R"(Should NOT Output PLT Data for "P" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 3), R"(Should NOT Output PLT Data for "P" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 4), R"(Should NOT Output PLT Data for "P" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 5), R"(Should NOT Output PLT Data for "P" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 6), R"(Should NOT Output PLT Data for "P" at Step 6)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 7), R"(Should NOT Output PLT Data for "P" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 8), R"(Should NOT Output PLT Data for "P" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 9), R"(Should NOT Output PLT Data for "P" at Step 9)"); BOOST_CHECK_MESSAGE( rftcfg.plt("P", 10), R"(Should Output PLT Data for "P" at Step 10)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 11), R"(Should NOT Output PLT Data for "P" at Step 11)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 12), R"(Should NOT Output PLT Data for "P" at Step 12)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 13), R"(Should NOT Output PLT Data for "P" at Step 13)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 14), R"(Should NOT Output PLT Data for "P" at Step 14)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 15), R"(Should NOT Output PLT Data for "P" at Step 15)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 16), R"(Should NOT Output PLT Data for "P" at Step 16)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 17), R"(Should NOT Output PLT Data for "P" at Step 17)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 18), R"(Should NOT Output PLT Data for "P" at Step 18)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 19), R"(Should NOT Output PLT Data for "P" at Step 19)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 20), R"(Should NOT Output PLT Data for "P" at Step 20)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 0), R"(Should NOT Output RFT Data for "I" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 1), R"(Should NOT Output RFT Data for "I" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 2), R"(Should NOT Output RFT Data for "I" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 3), R"(Should NOT Output RFT Data for "I" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 4), R"(Should NOT Output RFT Data for "I" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 5), R"(Should NOT Output RFT Data for "I" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 6), R"(Should NOT Output RFT Data for "I" at Step 6)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 7), R"(Should Output RFT Data for "I" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 8), R"(Should NOT Output RFT Data for "I" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 9), R"(Should NOT Output RFT Data for "I" at Step 9)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 10), R"(Should Output RFT Data for "I" at Step 10)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 11), R"(Should Output RFT Data for "I" at Step 11)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 12), R"(Should Output RFT Data for "I" at Step 12)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 13), R"(Should Output RFT Data for "I" at Step 13)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 14), R"(Should NOT Output RFT Data for "I" at Step 14)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 15), R"(Should NOT Output RFT Data for "I" at Step 15)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 16), R"(Should NOT Output RFT Data for "I" at Step 16)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 17), R"(Should NOT Output RFT Data for "I" at Step 17)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 18), R"(Should Output RFT Data for "I" at Step 18)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 19), R"(Should Output RFT Data for "I" at Step 19)"); BOOST_CHECK_MESSAGE( rftcfg.rft("I", 20), R"(Should Output RFT Data for "I" at Step 20)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 0), R"(Should NOT Output PLT Data for "I" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 1), R"(Should NOT Output PLT Data for "I" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 2), R"(Should NOT Output PLT Data for "I" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 3), R"(Should NOT Output PLT Data for "I" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 4), R"(Should NOT Output PLT Data for "I" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 5), R"(Should NOT Output PLT Data for "I" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 6), R"(Should NOT Output PLT Data for "I" at Step 6)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 7), R"(Should NOT Output PLT Data for "I" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 8), R"(Should NOT Output PLT Data for "I" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 9), R"(Should NOT Output PLT Data for "I" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 10), R"(Should NOT Output PLT Data for "I" at Step 10)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 11), R"(Should NOT Output PLT Data for "I" at Step 11)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 12), R"(Should NOT Output PLT Data for "I" at Step 12)"); BOOST_CHECK_MESSAGE( rftcfg.plt("I", 13), R"(Should Output PLT Data for "I" at Step 13)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 14), R"(Should NOT Output PLT Data for "I" at Step 14)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 15), R"(Should NOT Output PLT Data for "I" at Step 15)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 16), R"(Should NOT Output PLT Data for "I" at Step 16)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 17), R"(Should NOT Output PLT Data for "I" at Step 17)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 18), R"(Should NOT Output PLT Data for "I" at Step 18)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 19), R"(Should NOT Output PLT Data for "I" at Step 19)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 20), R"(Should NOT Output PLT Data for "I" at Step 20)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 0), R"(Should NOT Output RFT Data for "P2" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 1), R"(Should NOT Output RFT Data for "P2" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 2), R"(Should NOT Output RFT Data for "P2" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 3), R"(Should NOT Output RFT Data for "P2" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 4), R"(Should NOT Output RFT Data for "P2" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 5), R"(Should NOT Output RFT Data for "P2" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 6), R"(Should NOT Output RFT Data for "P2" at Step 6)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 7), R"(Should NOT Output RFT Data for "P2" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 8), R"(Should NOT Output RFT Data for "P2" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 9), R"(Should NOT Output RFT Data for "P2" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 10), R"(Should NOT Output RFT Data for "P2" at Step 10)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 11), R"(Should NOT Output RFT Data for "P2" at Step 11)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 12), R"(Should NOT Output RFT Data for "P2" at Step 12)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 13), R"(Should NOT Output RFT Data for "P2" at Step 13)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 14), R"(Should NOT Output RFT Data for "P2" at Step 14)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 15), R"(Should NOT Output RFT Data for "P2" at Step 15)"); // NOTE: Not at FOPN because P2 was not declared at WRFTPLT:FOPN time. BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 16), R"(Should NOT Output RFT Data for "P2" at Step 16)"); BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 17), R"(Should NOT Output RFT Data for "P2" at Step 17)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P2", 18), R"(Should Output RFT Data for "P2" at Step 18)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P2", 19), R"(Should Output RFT Data for "P2" at Step 19)"); BOOST_CHECK_MESSAGE( rftcfg.rft("P2", 20), R"(Should Output RFT Data for "P2" at Step 20)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 0), R"(Should NOT Output PLT Data for "P2" at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 1), R"(Should NOT Output PLT Data for "P2" at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 2), R"(Should NOT Output PLT Data for "P2" at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 3), R"(Should NOT Output PLT Data for "P2" at Step 3)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 4), R"(Should NOT Output PLT Data for "P2" at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 5), R"(Should NOT Output PLT Data for "P2" at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 6), R"(Should NOT Output PLT Data for "P2" at Step 6)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 7), R"(Should NOT Output PLT Data for "P2" at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 8), R"(Should NOT Output PLT Data for "P2" at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 9), R"(Should NOT Output PLT Data for "P2" at Step 9)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 10), R"(Should NOT Output PLT Data for "P2" at Step 10)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 11), R"(Should NOT Output PLT Data for "P2" at Step 11)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 12), R"(Should NOT Output PLT Data for "P2" at Step 12)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 13), R"(Should NOT Output PLT Data for "P2" at Step 13)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 14), R"(Should NOT Output PLT Data for "P2" at Step 14)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 15), R"(Should NOT Output PLT Data for "P2" at Step 15)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 16), R"(Should NOT Output PLT Data for "P2" at Step 16)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 17), R"(Should NOT Output PLT Data for "P2" at Step 17)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 18), R"(Should NOT Output PLT Data for "P2" at Step 18)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 19), R"(Should NOT Output PLT Data for "P2" at Step 19)"); BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 20), R"(Should NOT Output PLT Data for "P2" at Step 20)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 0), R"(RFT Config must be Inactive at Step 0)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 1), R"(RFT Config must be Inactive at Step 1)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 2), R"(RFT Config must be Inactive at Step 2)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 3), R"(RFT Config must be Inactive at Step 3)"); BOOST_CHECK_MESSAGE( rftcfg.active( 4), R"(RFT Config must be Active at Step 4)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 5), R"(RFT Config must be Inactive at Step 5)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 6), R"(RFT Config must be Inactive at Step 6)"); BOOST_CHECK_MESSAGE( rftcfg.active( 7), R"(RFT Config must be Active at Step 7)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 8), R"(RFT Config must be Inactive at Step 8)"); BOOST_CHECK_MESSAGE(!rftcfg.active( 9), R"(RFT Config must be Inactive at Step 9)"); BOOST_CHECK_MESSAGE( rftcfg.active(10), R"(RFT Config must be Active at Step 10)"); BOOST_CHECK_MESSAGE( rftcfg.active(11), R"(RFT Config must be Active at Step 11)"); BOOST_CHECK_MESSAGE( rftcfg.active(12), R"(RFT Config must be Active at Step 12)"); BOOST_CHECK_MESSAGE( rftcfg.active(13), R"(RFT Config must be Active at Step 13)"); BOOST_CHECK_MESSAGE(!rftcfg.active(14), R"(RFT Config must be Inactive at Step 14)"); BOOST_CHECK_MESSAGE(!rftcfg.active(15), R"(RFT Config must be Inactive at Step 15)"); BOOST_CHECK_MESSAGE(!rftcfg.active(16), R"(RFT Config must be Inactive at Step 15)"); BOOST_CHECK_MESSAGE(!rftcfg.active(17), R"(RFT Config must be Inactive at Step 15)"); BOOST_CHECK_MESSAGE( rftcfg.active(18), R"(RFT Config must be Active at Step 15)"); BOOST_CHECK_MESSAGE( rftcfg.active(19), R"(RFT Config must be Active at Step 15)"); BOOST_CHECK_MESSAGE( rftcfg.active(20), R"(RFT Config must be Active at Step 15)"); } BOOST_AUTO_TEST_SUITE_END() // WRFTPLT