summary refs log tree commit diff
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-05-08 00:51:03 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-05-08 00:51:03 +0300
commite44cc374e184396d32ec196186f2a6578fa0860e (patch)
treefd67af7442372c76682e48def6dd6edd6f7107bb
parentUse timeline to retrieve state events (diff)
downloadnheko-e44cc374e184396d32ec196186f2a6578fa0860e.tar.xz
Use strongly typed enums
-rw-r--r--Makefile2
-rw-r--r--include/MatrixClient.h2
-rw-r--r--include/SlidingStackWidget.h2
-rw-r--r--include/events/Event.h2
-rw-r--r--include/events/HistoryVisibilityEventContent.h2
-rw-r--r--include/events/JoinRulesEventContent.h2
-rw-r--r--include/events/MemberEventContent.h2
-rw-r--r--include/events/MessageEventContent.h2
-rw-r--r--include/events/PowerLevelsEventContent.h18
-rw-r--r--include/ui/FlatButton.h10
-rw-r--r--include/ui/Theme.h18
-rw-r--r--src/MatrixClient.cc24
-rw-r--r--src/TimelineView.cc2
-rw-r--r--src/ui/CircularProgress.cc2
-rw-r--r--src/ui/FlatButton.cc38
-rw-r--r--src/ui/Theme.cc4
-rw-r--r--tests/events.cc24
17 files changed, 77 insertions, 79 deletions
diff --git a/Makefile b/Makefile
index 477ec858..5802f833 100644
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@ lint:
 	@clang-format -i $(SRC)
 
 test:
-	@cmake -DBUILD_TESTS=ON -H. -GNinja -Bbuild -DCMAKE_BUILD_TYPE=Release
+	@cmake -DBUILD_TESTS=ON -H. -GNinja -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo
 	@cmake --build build
 	@cd build && GTEST_COLOR=1 ctest --verbose
 
diff --git a/include/MatrixClient.h b/include/MatrixClient.h
index ad768eeb..2520c6bc 100644
--- a/include/MatrixClient.h
+++ b/include/MatrixClient.h
@@ -82,7 +82,7 @@ private slots:
 	void onResponse(QNetworkReply *reply);
 
 private:
-	enum Endpoint {
+	enum class Endpoint {
 		GetOwnProfile,
 		GetOwnAvatar,
 		GetProfile,
diff --git a/include/SlidingStackWidget.h b/include/SlidingStackWidget.h
index 7686c6eb..56d523b0 100644
--- a/include/SlidingStackWidget.h
+++ b/include/SlidingStackWidget.h
@@ -37,7 +37,7 @@ class SlidingStackWidget : public QStackedWidget
 
 public:
 	// Defines the animation direction.
-	enum AnimationDirection {
+	enum class AnimationDirection {
 		LEFT_TO_RIGHT,
 		RIGHT_TO_LEFT,
 		AUTOMATIC
diff --git a/include/events/Event.h b/include/events/Event.h
index a7e4fb2d..e5a71c39 100644
--- a/include/events/Event.h
+++ b/include/events/Event.h
@@ -26,7 +26,7 @@ namespace matrix
 {
 namespace events
 {
-enum EventType {
+enum class EventType {
 	/// m.room.aliases
 	RoomAliases,
 	/// m.room.avatar
diff --git a/include/events/HistoryVisibilityEventContent.h b/include/events/HistoryVisibilityEventContent.h
index 84738480..7b00d85e 100644
--- a/include/events/HistoryVisibilityEventContent.h
+++ b/include/events/HistoryVisibilityEventContent.h
@@ -26,7 +26,7 @@ namespace matrix
 {
 namespace events
 {
-enum HistoryVisibility {
+enum class HistoryVisibility {
 	Invited,
 	Joined,
 	Shared,
diff --git a/include/events/JoinRulesEventContent.h b/include/events/JoinRulesEventContent.h
index ff03a26e..9b3d27c3 100644
--- a/include/events/JoinRulesEventContent.h
+++ b/include/events/JoinRulesEventContent.h
@@ -26,7 +26,7 @@ namespace matrix
 {
 namespace events
 {
-enum JoinRule {
+enum class JoinRule {
 	// A user who wishes to join the room must first receive
 	// an invite to the room from someone already inside of the room.
 	Invite,
diff --git a/include/events/MemberEventContent.h b/include/events/MemberEventContent.h
index 39ff0db1..9fd1d7d9 100644
--- a/include/events/MemberEventContent.h
+++ b/include/events/MemberEventContent.h
@@ -27,7 +27,7 @@ namespace matrix
 {
 namespace events
 {
-enum Membership {
+enum class Membership {
 	// The user is banned.
 	BanState,
 
diff --git a/include/events/MessageEventContent.h b/include/events/MessageEventContent.h
index adc0f3ff..1ef730ed 100644
--- a/include/events/MessageEventContent.h
+++ b/include/events/MessageEventContent.h
@@ -26,7 +26,7 @@ namespace matrix
 {
 namespace events
 {
-enum MessageEventType {
+enum class MessageEventType {
 	// m.audio
 	Audio,
 
diff --git a/include/events/PowerLevelsEventContent.h b/include/events/PowerLevelsEventContent.h
index c51755d8..bac4a42b 100644
--- a/include/events/PowerLevelsEventContent.h
+++ b/include/events/PowerLevelsEventContent.h
@@ -27,7 +27,7 @@ namespace matrix
 {
 namespace events
 {
-enum PowerLevels {
+enum class PowerLevels {
 	User = 0,
 	Moderator = 50,
 	Admin = 100,
@@ -55,14 +55,14 @@ public:
 	int userLevel(QString user_id) const;
 
 private:
-	int ban_ = PowerLevels::Moderator;
-	int invite_ = PowerLevels::Moderator;
-	int kick_ = PowerLevels::Moderator;
-	int redact_ = PowerLevels::Moderator;
-
-	int events_default_ = PowerLevels::User;
-	int state_default_ = PowerLevels::Moderator;
-	int users_default_ = PowerLevels::User;
+	int ban_ = static_cast<int>(PowerLevels::Moderator);
+	int invite_ = static_cast<int>(PowerLevels::Moderator);
+	int kick_ = static_cast<int>(PowerLevels::Moderator);
+	int redact_ = static_cast<int>(PowerLevels::Moderator);
+
+	int events_default_ = static_cast<int>(PowerLevels::User);
+	int state_default_ = static_cast<int>(PowerLevels::Moderator);
+	int users_default_ = static_cast<int>(PowerLevels::User);
 
 	QMap<QString, int> events_;
 	QMap<QString, int> users_;
diff --git a/include/ui/FlatButton.h b/include/ui/FlatButton.h
index 8053f430..6e2eb149 100644
--- a/include/ui/FlatButton.h
+++ b/include/ui/FlatButton.h
@@ -86,9 +86,9 @@ class FlatButton : public QPushButton
 	Q_PROPERTY(qreal fontSize WRITE setFontSize READ fontSize)
 
 public:
-	explicit FlatButton(QWidget *parent = 0, ui::ButtonPreset preset = ui::FlatPreset);
-	explicit FlatButton(const QString &text, QWidget *parent = 0, ui::ButtonPreset preset = ui::FlatPreset);
-	FlatButton(const QString &text, ui::Role role, QWidget *parent = 0, ui::ButtonPreset preset = ui::FlatPreset);
+	explicit FlatButton(QWidget *parent = 0, ui::ButtonPreset preset = ui::ButtonPreset::FlatPreset);
+	explicit FlatButton(const QString &text, QWidget *parent = 0, ui::ButtonPreset preset = ui::ButtonPreset::FlatPreset);
+	FlatButton(const QString &text, ui::Role role, QWidget *parent = 0, ui::ButtonPreset preset = ui::ButtonPreset::FlatPreset);
 	~FlatButton();
 
 	void applyPreset(ui::ButtonPreset preset);
@@ -132,9 +132,7 @@ public:
 	QSize sizeHint() const override;
 
 protected:
-	enum {
-		IconPadding = 0
-	};
+	int IconPadding = 0;
 
 	void checkStateSet() override;
 	void mousePressEvent(QMouseEvent *event) override;
diff --git a/include/ui/Theme.h b/include/ui/Theme.h
index 41739a98..795425e4 100644
--- a/include/ui/Theme.h
+++ b/include/ui/Theme.h
@@ -7,7 +7,7 @@
 
 namespace ui
 {
-enum AvatarType {
+enum class AvatarType {
 	Icon,
 	Image,
 	Letter
@@ -19,40 +19,40 @@ const int FontSize = 16;
 // Default avatar size. Width and height.
 const int AvatarSize = 40;
 
-enum ButtonPreset {
+enum class ButtonPreset {
 	FlatPreset,
 	CheckablePreset
 };
 
-enum RippleStyle {
+enum class RippleStyle {
 	CenteredRipple,
 	PositionedRipple,
 	NoRipple
 };
 
-enum OverlayStyle {
+enum class OverlayStyle {
 	NoOverlay,
 	TintedOverlay,
 	GrayOverlay
 };
 
-enum Role {
+enum class Role {
 	Default,
 	Primary,
 	Secondary
 };
 
-enum ButtonIconPlacement {
+enum class ButtonIconPlacement {
 	LeftIcon,
 	RightIcon
 };
 
-enum ProgressType {
+enum class ProgressType {
 	DeterminateProgress,
 	IndeterminateProgress
 };
 
-enum Color {
+enum class Color {
 	Black,
 	BrightWhite,
 	FadedWhite,
@@ -78,7 +78,7 @@ public:
 	QColor getColor(const QString &key) const;
 
 	void setColor(const QString &key, const QColor &color);
-	void setColor(const QString &key, ui::Color &color);
+	void setColor(const QString &key, ui::Color color);
 
 private:
 	QColor rgba(int r, int g, int b, qreal a) const;
diff --git a/src/MatrixClient.cc b/src/MatrixClient.cc
index f9d81f27..f3b5a8ac 100644
--- a/src/MatrixClient.cc
+++ b/src/MatrixClient.cc
@@ -337,7 +337,7 @@ void MatrixClient::onImageResponse(QNetworkReply *reply)
 
 void MatrixClient::onResponse(QNetworkReply *reply)
 {
-	switch (reply->property("endpoint").toInt()) {
+	switch (static_cast<Endpoint>(reply->property("endpoint").toInt())) {
 	case Endpoint::Versions:
 		onVersionsResponse(reply);
 		break;
@@ -387,7 +387,7 @@ void MatrixClient::login(const QString &username, const QString &password) noexc
 	LoginRequest body(username, password);
 
 	QNetworkReply *reply = post(request, body.serialize());
-	reply->setProperty("endpoint", Endpoint::Login);
+	reply->setProperty("endpoint", static_cast<int>(Endpoint::Login));
 }
 
 void MatrixClient::logout() noexcept
@@ -404,7 +404,7 @@ void MatrixClient::logout() noexcept
 
 	QJsonObject body{};
 	QNetworkReply *reply = post(request, QJsonDocument(body).toJson(QJsonDocument::Compact));
-	reply->setProperty("endpoint", Endpoint::Logout);
+	reply->setProperty("endpoint", static_cast<int>(Endpoint::Logout));
 }
 
 void MatrixClient::registerUser(const QString &user, const QString &pass, const QString &server) noexcept
@@ -424,7 +424,7 @@ void MatrixClient::registerUser(const QString &user, const QString &pass, const
 	RegisterRequest body(user, pass);
 
 	QNetworkReply *reply = post(request, body.serialize());
-	reply->setProperty("endpoint", Endpoint::Register);
+	reply->setProperty("endpoint", static_cast<int>(Endpoint::Register));
 }
 
 void MatrixClient::sync() noexcept
@@ -452,7 +452,7 @@ void MatrixClient::sync() noexcept
 	QNetworkRequest request(QString(endpoint.toEncoded()));
 
 	QNetworkReply *reply = get(request);
-	reply->setProperty("endpoint", Endpoint::Sync);
+	reply->setProperty("endpoint", static_cast<int>(Endpoint::Sync));
 }
 
 void MatrixClient::sendTextMessage(const QString &roomid, const QString &msg) noexcept
@@ -473,7 +473,7 @@ void MatrixClient::sendTextMessage(const QString &roomid, const QString &msg) no
 
 	QNetworkReply *reply = put(request, QJsonDocument(body).toJson(QJsonDocument::Compact));
 
-	reply->setProperty("endpoint", Endpoint::SendTextMessage);
+	reply->setProperty("endpoint", static_cast<int>(Endpoint::SendTextMessage));
 	reply->setProperty("txn_id", txn_id_);
 	reply->setProperty("roomid", roomid);
 
@@ -505,7 +505,7 @@ void MatrixClient::initialSync() noexcept
 	QNetworkRequest request(QString(endpoint.toEncoded()));
 
 	QNetworkReply *reply = get(request);
-	reply->setProperty("endpoint", Endpoint::InitialSync);
+	reply->setProperty("endpoint", static_cast<int>(Endpoint::InitialSync));
 }
 
 void MatrixClient::versions() noexcept
@@ -516,7 +516,7 @@ void MatrixClient::versions() noexcept
 	QNetworkRequest request(endpoint);
 
 	QNetworkReply *reply = get(request);
-	reply->setProperty("endpoint", Endpoint::Versions);
+	reply->setProperty("endpoint", static_cast<int>(Endpoint::Versions));
 }
 
 void MatrixClient::getOwnProfile() noexcept
@@ -535,7 +535,7 @@ void MatrixClient::getOwnProfile() noexcept
 	QNetworkRequest request(QString(endpoint.toEncoded()));
 
 	QNetworkReply *reply = get(request);
-	reply->setProperty("endpoint", Endpoint::GetOwnProfile);
+	reply->setProperty("endpoint", static_cast<int>(Endpoint::GetOwnProfile));
 }
 
 void MatrixClient::fetchRoomAvatar(const QString &roomid, const QUrl &avatar_url)
@@ -554,7 +554,7 @@ void MatrixClient::fetchRoomAvatar(const QString &roomid, const QUrl &avatar_url
 
 	QNetworkReply *reply = get(avatar_request);
 	reply->setProperty("roomid", roomid);
-	reply->setProperty("endpoint", Endpoint::RoomAvatar);
+	reply->setProperty("endpoint", static_cast<int>(Endpoint::RoomAvatar));
 }
 
 void MatrixClient::downloadImage(const QString &event_id, const QUrl &url)
@@ -563,7 +563,7 @@ void MatrixClient::downloadImage(const QString &event_id, const QUrl &url)
 
 	QNetworkReply *reply = get(image_request);
 	reply->setProperty("event_id", event_id);
-	reply->setProperty("endpoint", Endpoint::Image);
+	reply->setProperty("endpoint", static_cast<int>(Endpoint::Image));
 }
 
 void MatrixClient::fetchOwnAvatar(const QUrl &avatar_url)
@@ -581,5 +581,5 @@ void MatrixClient::fetchOwnAvatar(const QUrl &avatar_url)
 	QNetworkRequest avatar_request(media_url);
 
 	QNetworkReply *reply = get(avatar_request);
-	reply->setProperty("endpoint", Endpoint::GetOwnAvatar);
+	reply->setProperty("endpoint", static_cast<int>(Endpoint::GetOwnAvatar));
 }
diff --git a/src/TimelineView.cc b/src/TimelineView.cc
index 686fd602..c57d8f7b 100644
--- a/src/TimelineView.cc
+++ b/src/TimelineView.cc
@@ -72,7 +72,7 @@ int TimelineView::addEvents(const QJsonArray &events)
 	for (const auto &event : events) {
 		ty = events::extractEventType(event.toObject());
 
-		if (ty == events::RoomMessage) {
+		if (ty == events::EventType::RoomMessage) {
 			events::MessageEventType msg_type = events::extractMessageEventType(event.toObject());
 
 			if (msg_type == events::MessageEventType::Text) {
diff --git a/src/ui/CircularProgress.cc b/src/ui/CircularProgress.cc
index fa74b64c..edf06d4b 100644
--- a/src/ui/CircularProgress.cc
+++ b/src/ui/CircularProgress.cc
@@ -145,7 +145,7 @@ void CircularProgress::paintEvent(QPaintEvent *event)
 	pen.setWidthF(width_);
 	pen.setColor(color());
 
-	if (ui::IndeterminateProgress == progress_type_) {
+	if (ui::ProgressType::IndeterminateProgress == progress_type_) {
 		QVector<qreal> pattern;
 		pattern << delegate_->dashLength() * size_ / 50 << 30 * size_ / 50;
 
diff --git a/src/ui/FlatButton.cc b/src/ui/FlatButton.cc
index e860e7d7..a4f42a5d 100644
--- a/src/ui/FlatButton.cc
+++ b/src/ui/FlatButton.cc
@@ -15,10 +15,10 @@ void FlatButton::init()
 {
 	ripple_overlay_ = new RippleOverlay(this);
 	state_machine_ = new FlatButtonStateMachine(this);
-	role_ = ui::Default;
-	ripple_style_ = ui::PositionedRipple;
-	icon_placement_ = ui::LeftIcon;
-	overlay_style_ = ui::GrayOverlay;
+	role_ = ui::Role::Default;
+	ripple_style_ = ui::RippleStyle::PositionedRipple;
+	icon_placement_ = ui::ButtonIconPlacement::LeftIcon;
+	overlay_style_ = ui::OverlayStyle::GrayOverlay;
 	bg_mode_ = Qt::TransparentMode;
 	fixed_ripple_radius_ = 64;
 	corner_radius_ = 3;
@@ -69,11 +69,11 @@ FlatButton::~FlatButton()
 void FlatButton::applyPreset(ui::ButtonPreset preset)
 {
 	switch (preset) {
-	case ui::FlatPreset:
-		setOverlayStyle(ui::NoOverlay);
+	case ui::ButtonPreset::FlatPreset:
+		setOverlayStyle(ui::OverlayStyle::NoOverlay);
 		break;
-	case ui::CheckablePreset:
-		setOverlayStyle(ui::NoOverlay);
+	case ui::ButtonPreset::CheckablePreset:
+		setOverlayStyle(ui::OverlayStyle::NoOverlay);
 		setCheckable(true);
 		break;
 	default:
@@ -105,11 +105,11 @@ QColor FlatButton::foregroundColor() const
 		}
 
 		switch (role_) {
-		case ui::Primary:
+		case ui::Role::Primary:
 			return ThemeManager::instance().themeColor("Blue");
-		case ui::Secondary:
+		case ui::Role::Secondary:
 			return ThemeManager::instance().themeColor("Gray");
-		case ui::Default:
+		case ui::Role::Default:
 		default:
 			return ThemeManager::instance().themeColor("Black");
 		}
@@ -127,11 +127,11 @@ QColor FlatButton::backgroundColor() const
 {
 	if (!background_color_.isValid()) {
 		switch (role_) {
-		case ui::Primary:
+		case ui::Role::Primary:
 			return ThemeManager::instance().themeColor("Blue");
-		case ui::Secondary:
+		case ui::Role::Secondary:
 			return ThemeManager::instance().themeColor("Gray");
-		case ui::Default:
+		case ui::Role::Default:
 		default:
 			return ThemeManager::instance().themeColor("Black");
 		}
@@ -143,7 +143,7 @@ QColor FlatButton::backgroundColor() const
 void FlatButton::setOverlayColor(const QColor &color)
 {
 	overlay_color_ = color;
-	setOverlayStyle(ui::TintedOverlay);
+	setOverlayStyle(ui::OverlayStyle::TintedOverlay);
 }
 
 QColor FlatButton::overlayColor() const
@@ -314,11 +314,11 @@ void FlatButton::checkStateSet()
 
 void FlatButton::mousePressEvent(QMouseEvent *event)
 {
-	if (ui::NoRipple != ripple_style_) {
+	if (ui::RippleStyle::NoRipple != ripple_style_) {
 		QPoint pos;
 		qreal radiusEndValue;
 
-		if (ui::CenteredRipple == ripple_style_) {
+		if (ui::RippleStyle::CenteredRipple == ripple_style_) {
 			pos = rect().center();
 		} else {
 			pos = event->pos();
@@ -410,8 +410,8 @@ void FlatButton::paintBackground(QPainter *painter)
 		return;
 	}
 
-	if ((ui::NoOverlay != overlay_style_) && (overlayOpacity > 0)) {
-		if (ui::TintedOverlay == overlay_style_) {
+	if ((ui::OverlayStyle::NoOverlay != overlay_style_) && (overlayOpacity > 0)) {
+		if (ui::OverlayStyle::TintedOverlay == overlay_style_) {
 			brush.setColor(overlayColor());
 		} else {
 			brush.setColor(Qt::gray);
diff --git a/src/ui/Theme.cc b/src/ui/Theme.cc
index 4c5c19de..ff32c92d 100644
--- a/src/ui/Theme.cc
+++ b/src/ui/Theme.cc
@@ -49,7 +49,7 @@ void Theme::setColor(const QString &key, const QColor &color)
 	colors_.insert(key, color);
 }
 
-void Theme::setColor(const QString &key, ui::Color &color)
+void Theme::setColor(const QString &key, ui::Color color)
 {
 	static const QColor palette[] = {
 		QColor("#171919"),
@@ -69,5 +69,5 @@ void Theme::setColor(const QString &key, ui::Color &color)
 		rgba(0, 0, 0, 0),
 	};
 
-	colors_.insert(key, palette[color]);
+	colors_.insert(key, palette[static_cast<int>(color)]);
 }
diff --git a/tests/events.cc b/tests/events.cc
index cb8b8089..4917f009 100644
--- a/tests/events.cc
+++ b/tests/events.cc
@@ -550,18 +550,18 @@ TEST(PowerLevelsEventContent, DefaultValues)
 {
 	PowerLevelsEventContent power_levels;
 
-	EXPECT_EQ(power_levels.banLevel(), PowerLevels::Moderator);
-	EXPECT_EQ(power_levels.inviteLevel(), PowerLevels::Moderator);
-	EXPECT_EQ(power_levels.kickLevel(), PowerLevels::Moderator);
-	EXPECT_EQ(power_levels.redactLevel(), PowerLevels::Moderator);
+	EXPECT_EQ(power_levels.banLevel(), static_cast<int>(PowerLevels::Moderator));
+	EXPECT_EQ(power_levels.inviteLevel(), static_cast<int>(PowerLevels::Moderator));
+	EXPECT_EQ(power_levels.kickLevel(), static_cast<int>(PowerLevels::Moderator));
+	EXPECT_EQ(power_levels.redactLevel(), static_cast<int>(PowerLevels::Moderator));
 
-	EXPECT_EQ(power_levels.eventsDefaultLevel(), PowerLevels::User);
-	EXPECT_EQ(power_levels.usersDefaultLevel(), PowerLevels::User);
-	EXPECT_EQ(power_levels.stateDefaultLevel(), PowerLevels::Moderator);
+	EXPECT_EQ(power_levels.eventsDefaultLevel(), static_cast<int>(PowerLevels::User));
+	EXPECT_EQ(power_levels.usersDefaultLevel(), static_cast<int>(PowerLevels::User));
+	EXPECT_EQ(power_levels.stateDefaultLevel(), static_cast<int>(PowerLevels::Moderator));
 
 	// Default levels.
-	EXPECT_EQ(power_levels.userLevel("@joe:matrix.org"), PowerLevels::User);
-	EXPECT_EQ(power_levels.eventLevel("m.room.message"), PowerLevels::User);
+	EXPECT_EQ(power_levels.userLevel("@joe:matrix.org"), static_cast<int>(PowerLevels::User));
+	EXPECT_EQ(power_levels.eventLevel("m.room.message"), static_cast<int>(PowerLevels::User));
 }
 
 TEST(PowerLevelsEventContent, FullDeserialization)
@@ -618,11 +618,11 @@ TEST(PowerLevelsEventContent, PartialDeserialization)
 
 	EXPECT_EQ(power_levels.banLevel(), 1);
 	EXPECT_EQ(power_levels.inviteLevel(), 2);
-	EXPECT_EQ(power_levels.kickLevel(), PowerLevels::Moderator);
-	EXPECT_EQ(power_levels.redactLevel(), PowerLevels::Moderator);
+	EXPECT_EQ(power_levels.kickLevel(), static_cast<int>(PowerLevels::Moderator));
+	EXPECT_EQ(power_levels.redactLevel(), static_cast<int>(PowerLevels::Moderator));
 
 	EXPECT_EQ(power_levels.eventsDefaultLevel(), 5);
-	EXPECT_EQ(power_levels.stateDefaultLevel(), PowerLevels::Moderator);
+	EXPECT_EQ(power_levels.stateDefaultLevel(), static_cast<int>(PowerLevels::Moderator));
 	EXPECT_EQ(power_levels.usersDefaultLevel(), 7);
 
 	EXPECT_EQ(power_levels.userLevel("@alice:matrix.org"), 10);