#include "reservation_manager.h" #include class ReservationManagerTest : public QObject { Q_OBJECT private slots: void testReserveFailure(); void testReserveSuccess(); void testReserveBound(); }; void ReservationManagerTest::testReserveFailure() { DayManager dayManager(QTime(8, 0), QTime(9, 0)); ReservationManager manager(3, 3, dayManager); QDateTime begin; QTime end; std::tie(begin, end) = manager.reserve(QTime(2, 0)); QVERIFY(!begin.isValid()); QVERIFY(!end.isValid()); } void ReservationManagerTest::testReserveSuccess() { DayManager dayManager(QTime(8, 0), QTime(9, 0)); ReservationManager manager(3, 4, dayManager); QDateTime begin; QTime end; for (int i = 0; i < 3; ++i) { std::tie(begin, end) = manager.reserve(QTime(1, 0)); QVERIFY(begin.isValid()); QVERIFY(end.isValid()); } QCOMPARE(manager.days_.size(), 1); const auto &keys = manager.days_.keys(); auto it = std::find_if(keys.cbegin(), keys.cend(), [](const auto &key) { for (auto expected : {1, 2, 3, 4}) { if (key == expected) { return true; } } return false; }); QVERIFY(it != keys.cend()); } void ReservationManagerTest::testReserveBound() { DayManager dayManager(QTime(8, 0), QTime(9, 0)); ReservationManager manager(3, 4, dayManager); QDateTime begin; QTime end; for (int i = 0; i < 4; ++i) { std::tie(begin, end) = manager.reserve(QTime(1, 0)); QVERIFY(begin.isValid()); QVERIFY(end.isValid()); } QVERIFY(manager.days_.isEmpty()); } QTEST_MAIN(ReservationManagerTest) #include "reservation_manager_test.moc"