// // Listing 2: Grundlegende Mock-Objekte // #include "interface.h" #include "consumer.h" #include #include #include #include #include #include class BasicMock : public Interface , public mockpp::MockObject { public: BasicMock() : mockpp::MockObject(MOCKPP_PCHAR("BasicMock"), 0) , open_name(MOCKPP_PCHAR("BasicMock/open_name"), this) , close_counter(MOCKPP_PCHAR("BasicMock/close_counter"), this) , write_data(MOCKPP_PCHAR("BasicMock/write_data"), this) , read_data(MOCKPP_PCHAR("BasicMock/read_data"), this) { } virtual void open(const std::string &name) { open_name.addActual(name); } virtual std::string read() { return read_data.nextReturnObject(); } virtual void write(const std::string &s) { write_data.addActual(s); } virtual void close() { close_counter.inc(); } mockpp::ExpectationList open_name; mockpp::ExpectationCounter close_counter; mockpp::ExpectationList write_data; mockpp::ReturnObjectList read_data; }; int main(int argc, char **argv) { try { BasicMock mock; // Jeweils öffnen beim Lesen und Schreiben mock.open_name.addExpected("datei1.lst"); mock.open_name.addExpected("datei1.lst"); // Jeweils schliessen beim Lesen und Schreiben mock.close_counter.setExpected(2); // Die Datei enthält genau 3 Zeilen Daten mock.read_data.addObjectToReturn("Datenpaket-1"); mock.read_data.addObjectToReturn("Datenpaket-2"); mock.read_data.addObjectToReturn("Datenpaket-3"); // Es werden wieder genau 3 Zeilen Daten zurückgeschrieben mock.write_data.addExpected("Datenpaket-1/fertig"); mock.write_data.addExpected("Datenpaket-2/fertig"); mock.write_data.addExpected("Datenpaket-3/fertig"); // Consumer-Klasse ablaufen lassen std::cout << "Start der Tests" << std::endl; Consumer consumer(&mock); consumer.load(); consumer.process(); consumer.save(); std::cout << "Ende der Tests" << std::endl; // alle restlichen Bedingungen prüfen mock.verify(); std::cout << "Alle Tests wurden fehlerfrei durchlaufen" << std::endl; } catch(std::exception &ex) { std::cout << std::endl << "Fehler aufgetreten.\n" << ex.what() << std::endl << std::endl; } }