@@ -25,6 +25,12 @@
2525#include "applicationpreview.h"
2626#include "moviepreview.h"
2727#include "musicpreview.h"
28+#include "socialpreview.h"
29+#include "socialpreviewcomment.h"
30+#include "previewaction.h"
31+
32+#include <glib.h>
33+#include <glib-object.h>
2834
2935void PreviewBindingsTest::initTestCase()
3036{
@@ -32,81 +38,130 @@ void PreviewBindingsTest::initTestCase()
3238
3339void PreviewBindingsTest::testGenericPreview()
3440{
35− auto raw_preview = (GObject *)unity_protocol_generic_preview_new();
36− unity_protocol_preview_set_title(UNITY_PROTOCOL_PREVIEW(raw_preview), "Metallica");
37− unity_protocol_preview_set_subtitle(UNITY_PROTOCOL_PREVIEW(raw_preview), "Ride The Lightning");
38− unity_protocol_preview_set_description(UNITY_PROTOCOL_PREVIEW(raw_preview), "Lorem ipsum dolor sit amet");
39− unity::glib::Object<GObject> gen_prv(raw_preview);
40−
41− auto core_prv = unity::dash::Preview::PreviewForProtocolObject(gen_prv);
42− auto prv = Preview::newFromUnityPreview(core_prv);
41+ auto rawPreview = (GObject *)unity_protocol_generic_preview_new();
42+ unity_protocol_preview_set_title(UNITY_PROTOCOL_PREVIEW(rawPreview), "Metallica");
43+ unity_protocol_preview_set_subtitle(UNITY_PROTOCOL_PREVIEW(rawPreview), "Ride The Lightning");
44+ unity_protocol_preview_set_description(UNITY_PROTOCOL_PREVIEW(rawPreview), "Lorem ipsum dolor sit amet");
45+ GFile *iconFile = g_file_new_for_path("/foo.png");
46+ GIcon *icon = g_file_icon_new(iconFile);
47+ unity_protocol_preview_add_action(UNITY_PROTOCOL_PREVIEW(rawPreview), "1", "Action1", icon,
48+ UNITY_PROTOCOL_LAYOUT_HINT_LEFT);
49+ unity::glib::Object<GObject> genPrv(rawPreview);
50+
51+ auto corePrv = unity::dash::Preview::PreviewForProtocolObject(genPrv);
52+ auto prv = Preview::newFromUnityPreview(corePrv);
4353
4454 QCOMPARE(prv != nullptr, true);
4555 QCOMPARE(prv->title(), QString("Metallica"));
4656 QCOMPARE(prv->subtitle(), QString("Ride The Lightning"));
4757 QCOMPARE(prv->description(), QString("Lorem ipsum dolor sit amet"));
58+
59+ auto actions = prv->actions().value<QList<QObject *>>();
60+ QCOMPARE(actions.size(), 1);
61+ auto act = dynamic_cast<PreviewAction *>(actions[0]);
62+ QVERIFY(act != nullptr);
63+ QCOMPARE(act->id(), QString("1"));
64+ QCOMPARE(act->displayName(), QString("Action1"));
65+ QCOMPARE(act->iconHint(), QString("/foo.png"));
66+
67+ g_object_unref(icon);
68+ g_object_unref(iconFile);
4869}
4970
5071void PreviewBindingsTest::testApplicationPreview()
5172{
52− auto raw_preview = (GObject *)unity_protocol_application_preview_new();
53− unity_protocol_preview_set_title(UNITY_PROTOCOL_PREVIEW(raw_preview), "Firefox");
54− unity_protocol_preview_set_subtitle(UNITY_PROTOCOL_PREVIEW(raw_preview), "Web Browser");
55− unity_protocol_preview_set_description(UNITY_PROTOCOL_PREVIEW(raw_preview), "Lorem ipsum dolor sit amet");
56− unity_protocol_application_preview_set_license(UNITY_PROTOCOL_APPLICATION_PREVIEW(raw_preview), "GPL");
57− unity_protocol_application_preview_set_rating(UNITY_PROTOCOL_APPLICATION_PREVIEW(raw_preview), 0.5f);
58− unity_protocol_application_preview_set_num_ratings(UNITY_PROTOCOL_APPLICATION_PREVIEW(raw_preview), 4);
59− unity::glib::Object<GObject> gen_prv(raw_preview);
60−
61− auto core_prv = unity::dash::Preview::PreviewForProtocolObject(gen_prv);
62− auto prv = Preview::newFromUnityPreview(core_prv);
63− auto app_prv = dynamic_cast<ApplicationPreview*>(prv);
64−
65− QCOMPARE(app_prv != nullptr, true);
66− QCOMPARE(app_prv->title(), QString("Firefox"));
67− QCOMPARE(app_prv->subtitle(), QString("Web Browser"));
68− QCOMPARE(app_prv->description(), QString("Lorem ipsum dolor sit amet"));
69− QCOMPARE(app_prv->license(), QString("GPL"));
70− QCOMPARE(app_prv->rating(), 0.5f);
71− QCOMPARE(app_prv->numRatings(), unsigned (4));
73+ auto rawPreview = (GObject *)unity_protocol_application_preview_new();
74+ unity_protocol_preview_set_title(UNITY_PROTOCOL_PREVIEW(rawPreview), "Firefox");
75+ unity_protocol_preview_set_subtitle(UNITY_PROTOCOL_PREVIEW(rawPreview), "Web Browser");
76+ unity_protocol_preview_set_description(UNITY_PROTOCOL_PREVIEW(rawPreview), "Lorem ipsum dolor sit amet");
77+ unity_protocol_application_preview_set_license(UNITY_PROTOCOL_APPLICATION_PREVIEW(rawPreview), "GPL");
78+ unity_protocol_application_preview_set_rating(UNITY_PROTOCOL_APPLICATION_PREVIEW(rawPreview), 0.5f);
79+ unity_protocol_application_preview_set_num_ratings(UNITY_PROTOCOL_APPLICATION_PREVIEW(rawPreview), 4);
80+ unity::glib::Object<GObject> genPrv(rawPreview);
81+
82+ auto corePrv = unity::dash::Preview::PreviewForProtocolObject(genPrv);
83+ auto prv = Preview::newFromUnityPreview(corePrv);
84+ auto appPrv = dynamic_cast<ApplicationPreview*>(prv);
85+
86+ QCOMPARE(appPrv != nullptr, true);
87+ QCOMPARE(appPrv->title(), QString("Firefox"));
88+ QCOMPARE(appPrv->subtitle(), QString("Web Browser"));
89+ QCOMPARE(appPrv->description(), QString("Lorem ipsum dolor sit amet"));
90+ QCOMPARE(appPrv->license(), QString("GPL"));
91+ QCOMPARE(appPrv->rating(), 0.5f);
92+ QCOMPARE(appPrv->numRatings(), unsigned (4));
7293}
7394
7495void PreviewBindingsTest::testMoviePreview()
7596{
76− auto raw_preview = (GObject *)unity_protocol_movie_preview_new();
77− unity_protocol_preview_set_title(UNITY_PROTOCOL_PREVIEW(raw_preview), "Blade Runner");
78− unity_protocol_preview_set_subtitle(UNITY_PROTOCOL_PREVIEW(raw_preview), "Ridley Scott");
79− unity_protocol_preview_set_description(UNITY_PROTOCOL_PREVIEW(raw_preview), "Lorem ipsum dolor sit amet");
80− unity_protocol_movie_preview_set_year(UNITY_PROTOCOL_MOVIE_PREVIEW(raw_preview), "1982");
81− unity::glib::Object<GObject> gen_prv(raw_preview);
82−
83− auto core_prv = unity::dash::Preview::PreviewForProtocolObject(gen_prv);
84− auto prv = Preview::newFromUnityPreview(core_prv);
85− auto movie_prv = dynamic_cast<MoviePreview*>(prv);
86−
87− QCOMPARE(movie_prv != nullptr, true);
88− QCOMPARE(movie_prv->title(), QString("Blade Runner"));
89− QCOMPARE(movie_prv->subtitle(), QString("Ridley Scott"));
90− QCOMPARE(movie_prv->description(), QString("Lorem ipsum dolor sit amet"));
91− QCOMPARE(movie_prv->year(), QString("1982"));
97+ auto rawPreview = (GObject *)unity_protocol_movie_preview_new();
98+ unity_protocol_preview_set_title(UNITY_PROTOCOL_PREVIEW(rawPreview), "Blade Runner");
99+ unity_protocol_preview_set_subtitle(UNITY_PROTOCOL_PREVIEW(rawPreview), "Ridley Scott");
100+ unity_protocol_preview_set_description(UNITY_PROTOCOL_PREVIEW(rawPreview), "Lorem ipsum dolor sit amet");
101+ unity_protocol_movie_preview_set_year(UNITY_PROTOCOL_MOVIE_PREVIEW(rawPreview), "1982");
102+ unity::glib::Object<GObject> genPrv(rawPreview);
103+
104+ auto corePrv = unity::dash::Preview::PreviewForProtocolObject(genPrv);
105+ auto prv = Preview::newFromUnityPreview(corePrv);
106+ auto moviePrv = dynamic_cast<MoviePreview*>(prv);
107+
108+ QCOMPARE(moviePrv != nullptr, true);
109+ QCOMPARE(moviePrv->title(), QString("Blade Runner"));
110+ QCOMPARE(moviePrv->subtitle(), QString("Ridley Scott"));
111+ QCOMPARE(moviePrv->description(), QString("Lorem ipsum dolor sit amet"));
112+ QCOMPARE(moviePrv->year(), QString("1982"));
92113}
93114
94115void PreviewBindingsTest::testMusicPreview()
95116{
96− auto raw_preview = (GObject *)unity_protocol_music_preview_new();
97− unity_protocol_preview_set_title(UNITY_PROTOCOL_PREVIEW(raw_preview), "Metallica");
98− unity_protocol_preview_set_subtitle(UNITY_PROTOCOL_PREVIEW(raw_preview), "Death Magnetic");
99− unity_protocol_preview_set_description(UNITY_PROTOCOL_PREVIEW(raw_preview), "Lorem ipsum dolor sit amet");
100− unity::glib::Object<GObject> gen_prv(raw_preview);
101−
102− auto core_prv = unity::dash::Preview::PreviewForProtocolObject(gen_prv);
103− auto prv = Preview::newFromUnityPreview(core_prv);
104− auto music_prv = dynamic_cast<MusicPreview*>(prv);
105−
106− QCOMPARE(music_prv != nullptr, true);
107− QCOMPARE(music_prv->title(), QString("Metallica"));
108− QCOMPARE(music_prv->subtitle(), QString("Death Magnetic"));
109− QCOMPARE(music_prv->description(), QString("Lorem ipsum dolor sit amet"));
117+ auto rawPreview = (GObject *)unity_protocol_music_preview_new();
118+ unity_protocol_preview_set_title(UNITY_PROTOCOL_PREVIEW(rawPreview), "Metallica");
119+ unity_protocol_preview_set_subtitle(UNITY_PROTOCOL_PREVIEW(rawPreview), "Death Magnetic");
120+ unity_protocol_preview_set_description(UNITY_PROTOCOL_PREVIEW(rawPreview), "Lorem ipsum dolor sit amet");
121+ unity::glib::Object<GObject> genPrv(rawPreview);
122+
123+ auto corePrv = unity::dash::Preview::PreviewForProtocolObject(genPrv);
124+ auto prv = Preview::newFromUnityPreview(corePrv);
125+ auto musicPrv = dynamic_cast<MusicPreview*>(prv);
126+
127+ QCOMPARE(musicPrv != nullptr, true);
128+ QCOMPARE(musicPrv->title(), QString("Metallica"));
129+ QCOMPARE(musicPrv->subtitle(), QString("Death Magnetic"));
130+ QCOMPARE(musicPrv->description(), QString("Lorem ipsum dolor sit amet"));
131+}
132+
133+void PreviewBindingsTest::testSocialPreview()
134+{
135+ GFile *iconFile = g_file_new_for_path("/foo.png");
136+ GIcon *icon = g_file_icon_new(iconFile);
137+
138+ auto rawPreview = (GObject *)unity_protocol_social_preview_new();
139+ unity_protocol_social_preview_set_sender(UNITY_PROTOCOL_SOCIAL_PREVIEW(rawPreview), "John");
140+ unity_protocol_social_preview_set_avatar(UNITY_PROTOCOL_SOCIAL_PREVIEW(rawPreview), icon);
141+ unity_protocol_social_preview_set_content(UNITY_PROTOCOL_SOCIAL_PREVIEW(rawPreview), "Lorem ipsum dolor sit amet");
142+ unity_protocol_social_preview_add_comment(UNITY_PROTOCOL_SOCIAL_PREVIEW(rawPreview), "1", "comment1", "Ubuntu", "2013-07-04 14:10");
143+ unity::glib::Object<GObject> genPrv(rawPreview);
144+
145+ auto corePrv = unity::dash::Preview::PreviewForProtocolObject(genPrv);
146+ auto prv = Preview::newFromUnityPreview(corePrv);
147+ auto socialPrv = dynamic_cast<SocialPreview*>(prv);
148+
149+ QCOMPARE(socialPrv != nullptr, true);
150+ QCOMPARE(socialPrv->sender(), QString("John"));
151+ QCOMPARE(socialPrv->content(), QString("Lorem ipsum dolor sit amet"));
152+ QCOMPARE(socialPrv->avatar(), QString("/foo.png"));
153+
154+ auto comments = socialPrv->comments().value<QList<QObject *>>();
155+ QCOMPARE(comments.size(), 1);
156+ auto cmt = dynamic_cast<SocialPreviewComment *>(comments[0]);
157+ QVERIFY(cmt != nullptr);
158+ QCOMPARE(cmt->id(), QString("1"));
159+ QCOMPARE(cmt->displayName(), QString("comment1"));
160+ QCOMPARE(cmt->content(), QString("Ubuntu"));
161+ QCOMPARE(cmt->time(), QString("2013-07-04 14:10"));
162+
163+ g_object_unref(icon);
164+ g_object_unref(iconFile);
110165}
111166
112167QTEST_MAIN(PreviewBindingsTest)