Page MenuHomePhorge

No OneTemporary

Authored By
Unknown
Size
3 KB
Referenced Files
None
Subscribers
None
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index b680b3c..8dd0301 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -1,46 +1,47 @@
include(CTest)
set(KAZVTEST_RESPATH ${CMAKE_CURRENT_SOURCE_DIR}/resources)
configure_file(kazvtest-respath.hpp.in kazvtest-respath.hpp)
add_executable(kazvtest
testmain.cpp
basejobtest.cpp
event-test.cpp
cursorutiltest.cpp
base/serialization-test.cpp
base/types-test.cpp
client/client-test-util.cpp
client/sync-test.cpp
client/content-test.cpp
client/paginate-test.cpp
client/util-test.cpp
client/serialization-test.cpp
client/encrypted-file-test.cpp
client/sdk-test.cpp
client/thread-safety-test.cpp
+ client/room-test.cpp
kazvjobtest.cpp
event-emitter-test.cpp
crypto-test.cpp
promise-test.cpp
store-test.cpp
file-desc-test.cpp
)
target_include_directories(
kazvtest
PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(kazvtest
PRIVATE Catch2::Catch2
PRIVATE kazv
PRIVATE kazveventemitter
PRIVATE kazvjob
PRIVATE nlohmann_json::nlohmann_json
PRIVATE immer
PRIVATE lager
PRIVATE zug)
diff --git a/src/tests/client/room-test.cpp b/src/tests/client/room-test.cpp
new file mode 100644
index 0000000..352df99
--- /dev/null
+++ b/src/tests/client/room-test.cpp
@@ -0,0 +1,65 @@
+/*
+ * This file is part of libkazv.
+ * SPDX-FileCopyrightText: 2021 Tusooa Zhu <tusooa@kazv.moe>
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+#include <libkazv-config.hpp>
+
+#include <catch2/catch.hpp>
+
+#include <lager/event_loop/boost_asio.hpp>
+#include <boost/asio.hpp>
+
+#include <sdk.hpp>
+#include <cprjobhandler.hpp>
+#include <lagerstoreeventemitter.hpp>
+#include <asio-promise-handler.hpp>
+
+using namespace Kazv;
+
+TEST_CASE("Result of Room::toEventLoop() should not vary with the original cursor", "[client][room]")
+{
+ auto io = boost::asio::io_context{};
+ auto jh = Kazv::CprJobHandler{io.get_executor()};
+ auto ee = Kazv::LagerStoreEventEmitter(lager::with_boost_asio_event_loop{io.get_executor()});
+
+ auto roomWithId = [](std::string roomId) {
+ auto r = RoomModel{};
+ r.roomId = roomId;
+ return r;
+ };
+
+ auto initModel = Kazv::SdkModel{};
+ initModel.client.roomList.rooms = std::move(initModel.client.roomList.rooms)
+ .set("!foo:example.org", roomWithId("!foo:example.org"))
+ .set("!bar:example.org", roomWithId("!bar:example.org"));
+ auto sdk = Kazv::makeSdk(
+ initModel,
+ jh,
+ ee,
+ Kazv::AsioPromiseHandler{io.get_executor()},
+ zug::identity
+ );
+
+ auto ctx = sdk.context();
+
+ auto client = sdk.client();
+
+ auto roomId = lager::make_state(std::string("!foo:example.org"), lager::automatic_tag{});
+
+ auto room = client.roomByCursor(roomId);
+
+ using namespace Kazv::CursorOp;
+
+ REQUIRE(+room.roomId() == "!foo:example.org");
+
+ auto roomInEventLoop = room.toEventLoop();
+
+ REQUIRE(+roomInEventLoop.roomId() == "!foo:example.org");
+
+ roomId.set("!bar:example.org");
+
+ REQUIRE(+room.roomId() == "!bar:example.org");
+ REQUIRE(+roomInEventLoop.roomId() == "!foo:example.org");
+}

File Metadata

Mime Type
text/x-diff
Expires
Fri, Oct 30, 12:15 AM (1 d, 12 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1798959
Default Alt Text
(3 KB)

Event Timeline