aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/media-player-list-greeter.vala2
-rw-r--r--tests/CMakeLists.txt23
-rw-r--r--tests/greeter-list.cc68
3 files changed, 92 insertions, 1 deletions
diff --git a/src/media-player-list-greeter.vala b/src/media-player-list-greeter.vala
index 15e4c55..4af57af 100644
--- a/src/media-player-list-greeter.vala
+++ b/src/media-player-list-greeter.vala
@@ -108,7 +108,7 @@ public class MediaPlayerListGreeter : MediaPlayerList {
public override MediaPlayer? next_value () {
MediaPlayer? retval = null;
- if (i == 0) {
+ if (i == 0 && list.selected_user != null) {
retval = list.players.lookup(list.selected_user);
}
i++;
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 9b0586a..ae68c45 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -158,3 +158,26 @@ add_test(media-player-user-test-timeout
media-player-user-test --gtest_filter=MediaPlayerUserTest.TimeoutTest
)
+###########################
+# Greeter List
+###########################
+
+include_directories(${CMAKE_SOURCE_DIR}/src)
+add_executable (greeter-list-test greeter-list.cc)
+target_link_libraries (
+ greeter-list-test
+ indicator-sound-service-lib
+ vala-mocks-lib
+ gtest
+ ${SOUNDSERVICE_LIBRARIES}
+ ${TEST_LIBRARIES}
+)
+
+# Split tests to work around libaccountservice sucking
+add_test(greeter-list-test-basic
+ greeter-list-test --gtest_filter=GreeterListTest.BasicObject
+)
+add_test(greeter-list-test-iterator
+ greeter-list-test --gtest_filter=GreeterListTest.BasicIterator
+)
+
diff --git a/tests/greeter-list.cc b/tests/greeter-list.cc
new file mode 100644
index 0000000..2c4fd61
--- /dev/null
+++ b/tests/greeter-list.cc
@@ -0,0 +1,68 @@
+/*
+ * Copyright © 2014 Canonical Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ * Ted Gould <ted@canonical.com>
+ */
+
+#include <gtest/gtest.h>
+#include <gio/gio.h>
+
+extern "C" {
+#include "indicator-sound-service.h"
+#include "vala-mocks.h"
+}
+
+class GreeterListTest : public ::testing::Test
+{
+ protected:
+ GTestDBus * bus = nullptr;
+
+ virtual void SetUp() {
+ bus = g_test_dbus_new(G_TEST_DBUS_NONE);
+ g_test_dbus_up(bus);
+ }
+
+ virtual void TearDown() {
+ g_test_dbus_down(bus);
+ g_clear_object(&bus);
+ }
+
+};
+
+TEST_F(GreeterListTest, BasicObject) {
+ MediaPlayerListGreeter * list = media_player_list_greeter_new();
+
+ ASSERT_NE(nullptr, list);
+
+ g_clear_object(&list);
+ return;
+}
+
+TEST_F(GreeterListTest, BasicIterator) {
+ MediaPlayerListGreeter * list = media_player_list_greeter_new();
+ ASSERT_NE(nullptr, list);
+
+ MediaPlayerListGreeterIterator * iter = media_player_list_greeter_iterator_new(list);
+ ASSERT_NE(nullptr, iter);
+
+ MediaPlayer * player = media_player_list_iterator_next_value (MEDIA_PLAYER_LIST_ITERATOR(iter));
+ ASSERT_EQ(nullptr, player);
+
+ g_clear_object(&iter);
+ g_clear_object(&list);
+ return;
+}
+