///* // * Copyright (c) 2019, Technische Universität Kaiserslautern // * All rights reserved. // * // * Redistribution and use in source and binary forms, with or without // * modification, are permitted provided that the following conditions are // * met: // * // * 1. Redistributions of source code must retain the above copyright notice, // * this list of conditions and the following disclaimer. // * // * 2. Redistributions in binary form must reproduce the above copyright // * notice, this list of conditions and the following disclaimer in the // * documentation and/or other materials provided with the distribution. // * // * 3. Neither the name of the copyright holder nor the names of its // * contributors may be used to endorse or promote products derived from // * this software without specific prior written permission. // * // * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED // * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR // * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER // * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, // * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING // * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // * // * Authors: // * Lukas Steiner // */ // //#include //#include //#include //#include // //#include //#include // //using namespace DRAMSys; // //class CommandMuxState //{ //public: // Command firstCommand; // Command secondCommand; // Command resultCommand; //}; // //class CommandMuxTestBase : public testing::Test //{ //public: // CommandMux *commandMux; // // tlm_generic_payload *firstPayload; // tlm_generic_payload *secondPayload; // // std::pair firstPair; // std::pair secondPair; // // std::vector> readyCommands; // // std::pair result; // // CommandMuxTestBase() // { // commandMux = new CommandMux(); // firstPayload = new tlm_generic_payload(); // secondPayload = new tlm_generic_payload(); // } // // ~CommandMuxTestBase() // { // delete commandMux; // delete firstPayload; // delete secondPayload; // } //}; // //class CommandMuxTestParam : public CommandMuxTestBase, public testing::WithParamInterface //{ //public: // CommandMuxTestParam() // { // commandMux->insertPayload(firstPayload); // commandMux->insertPayload(secondPayload); // // firstPair.first = GetParam().firstCommand; // firstPair.second = firstPayload; // secondPair.first = GetParam().secondCommand; // secondPair.second = secondPayload; // // readyCommands.push_back(secondPair); // readyCommands.push_back(firstPair); // result = commandMux->selectCommand(readyCommands); // } //}; // //TEST_P(CommandMuxTestParam, satisfiesCommandOrder) //{ // EXPECT_EQ(result.first, GetParam().resultCommand); //} // //INSTANTIATE_TEST_CASE_P(Default, CommandMuxTestParam, testing::Values( // CommandMuxState{Command::RD, Command::WR, Command::RD}, // CommandMuxState{Command::RD, Command::ACT, Command::ACT}));