37 lines
1.3 KiB
C++
37 lines
1.3 KiB
C++
#include "web_server/src/Page_Session.hpp"
|
|
#include <gtest/gtest.h>
|
|
|
|
namespace aethera::web {
|
|
TEST(Page_Session, New_Page_Displaces_Previous_Page_Without_Waiting_For_Close) {
|
|
Page_Session session;
|
|
const auto first_token = session.begin_page();
|
|
std::size_t displaced{};
|
|
const auto first_connection = session.attach(
|
|
first_token, [&displaced] { ++displaced; });
|
|
ASSERT_TRUE(first_connection.has_value());
|
|
|
|
const auto second_token = session.begin_page();
|
|
EXPECT_NE(first_token, second_token);
|
|
EXPECT_EQ(displaced, 1U);
|
|
EXPECT_EQ(session.attach(first_token, [] {}).error(),
|
|
Page_Session::Attach_Result::stale_session);
|
|
|
|
const auto second_connection = session.attach(second_token, [] {});
|
|
EXPECT_TRUE(second_connection.has_value());
|
|
session.detach(*first_connection);
|
|
session.detach(*second_connection);
|
|
}
|
|
|
|
TEST(Page_Session, One_Page_Can_Attach_All_Of_Its_Connections) {
|
|
Page_Session session;
|
|
const auto token = session.begin_page();
|
|
const auto gallery = session.attach(token, [] {});
|
|
const auto plot = session.attach(token, [] {});
|
|
ASSERT_TRUE(gallery.has_value());
|
|
ASSERT_TRUE(plot.has_value());
|
|
EXPECT_NE(*gallery, *plot);
|
|
session.detach(*gallery);
|
|
session.detach(*plot);
|
|
}
|
|
}
|