Merge lp:~3v1n0/unity/memory-fixes into lp:unity

Proposed by Marco Trevisan (Treviño)
Status: Merged
Approved by: Marco Trevisan (Treviño)
Approved revision: no longer in the source branch.
Merged at revision: 3432
Proposed branch: lp:~3v1n0/unity/memory-fixes
Merge into: lp:unity
Diff against target: 1149 lines (+323/-284)
22 files modified
UnityCore/Model-inl.h (+3/-3)
dash/previews/TabIterator.cpp (+6/-9)
dash/previews/TabIterator.h (+3/-2)
debian/changelog (+4/-2)
debian/control (+1/-1)
launcher/Launcher.cpp (+1/-0)
launcher/TrashLauncherIcon.cpp (+1/-0)
tests/test_filter_multirange.h (+8/-12)
tests/test_glib_signals.cpp (+3/-4)
tests/test_grabhandle.cpp (+6/-9)
tests/test_icon_loader.cpp (+54/-44)
tests/test_launcher_entry_remote.cpp (+1/-0)
tests/test_preview_player.cpp (+1/-1)
tests/test_previews.cpp (+6/-1)
tests/test_quicklist_menu_item.cpp (+2/-0)
tests/test_scope.cpp (+8/-2)
tests/test_session_controller.cpp (+1/-1)
tests/test_tabiterator.cpp (+209/-190)
tests/test_time_util.cpp (+1/-1)
tests/test_xdnd_manager_imp.cpp (+1/-0)
unity-shared/PlacesOverlayVScrollBar.cpp (+1/-1)
unity-shared/PlacesOverlayVScrollBar.h (+2/-1)
To merge this branch: bzr merge lp:~3v1n0/unity/memory-fixes
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Approve
Brandon Schaefer (community) Approve
Review via email: mp+175703@code.launchpad.net

Commit message

Unity: improve the correctness of the memory usage of various components

Thanks to valgrind...

Description of the change

Fix various read/write errors or leaks found through valgrind that should prevent crashes during tests or runtime.

Bumping ABI as requested by lp:~3v1n0/nux/memory-fixes

To post a comment you must log in.
Revision history for this message
Brandon Schaefer (brandontschaefer) wrote :

LGTM

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'UnityCore/Model-inl.h'
--- UnityCore/Model-inl.h 2013-05-17 22:53:57 +0000
+++ UnityCore/Model-inl.h 2013-07-18 23:02:25 +0000
@@ -44,9 +44,9 @@
44void Model<RowAdaptor>::Init ()44void Model<RowAdaptor>::Init ()
45{45{
46 swarm_name.changed.connect(sigc::mem_fun(this, &Model<RowAdaptor>::OnSwarmNameChanged));46 swarm_name.changed.connect(sigc::mem_fun(this, &Model<RowAdaptor>::OnSwarmNameChanged));
47 count.SetGetterFunction(sigc::mem_fun(this, &Model<RowAdaptor>::get_count));47 count.SetGetterFunction(std::bind(&Model<RowAdaptor>::get_count, this));
48 seqnum.SetGetterFunction(sigc::mem_fun(this, &Model<RowAdaptor>::get_seqnum));48 seqnum.SetGetterFunction(std::bind(&Model<RowAdaptor>::get_seqnum, this));
49 model.SetGetterFunction(sigc::mem_fun(this, &Model<RowAdaptor>::get_model));49 model.SetGetterFunction(std::bind(&Model<RowAdaptor>::get_model, this));
50}50}
5151
52template<class RowAdaptor>52template<class RowAdaptor>
5353
=== modified file 'dash/previews/TabIterator.cpp'
--- dash/previews/TabIterator.cpp 2013-01-22 11:25:38 +0000
+++ dash/previews/TabIterator.cpp 2013-07-18 23:02:25 +0000
@@ -32,10 +32,7 @@
3232
33void TabIterator::Remove(nux::InputArea* area)33void TabIterator::Remove(nux::InputArea* area)
34{34{
35 std::list<nux::InputArea*>::iterator it = std::find(areas_.begin(), areas_.end(),35 areas_.remove(area);
36 area);
37 if (it != areas_.end())
38 areas_.erase(it);
39}36}
4037
41void TabIterator::Prepend(nux::InputArea* area)38void TabIterator::Prepend(nux::InputArea* area)
@@ -50,11 +47,11 @@
50 areas_.push_back(area);47 areas_.push_back(area);
51}48}
5249
53void TabIterator::Insert(nux::InputArea* area, int index)50void TabIterator::Insert(nux::InputArea* area, unsigned index)
54{51{
55 Remove(area);52 Remove(area);
56 std::list<nux::InputArea*>::iterator it = areas_.begin();53 std::list<nux::InputArea*>::iterator it = areas_.begin();
57 if ((uint)index < areas_.size())54 if (index < areas_.size())
58 {55 {
59 std::advance(it, index);56 std::advance(it, index);
60 areas_.insert(it, area);57 areas_.insert(it, area);
@@ -126,12 +123,12 @@
126 if (direction == nux::KEY_NAV_TAB_PREVIOUS)123 if (direction == nux::KEY_NAV_TAB_PREVIOUS)
127 {124 {
128 if (it == areas_.begin())125 if (it == areas_.begin())
129 return *areas_.end();126 return *areas_.rbegin();
130 else127 else
131 {128 {
132 it--;129 it--;
133 if (it == areas_.begin())130 if (it == areas_.begin())
134 return *areas_.end();131 return *areas_.rbegin();
135 return *it;132 return *it;
136 }133 }
137 }134 }
@@ -156,7 +153,7 @@
156 {153 {
157 if (direction == nux::KEY_NAV_TAB_PREVIOUS)154 if (direction == nux::KEY_NAV_TAB_PREVIOUS)
158 {155 {
159 return *areas_.end();156 return *areas_.rbegin();
160 }157 }
161 else if (direction == nux::KEY_NAV_TAB_NEXT)158 else if (direction == nux::KEY_NAV_TAB_NEXT)
162 {159 {
163160
=== modified file 'dash/previews/TabIterator.h'
--- dash/previews/TabIterator.h 2013-01-22 11:54:25 +0000
+++ dash/previews/TabIterator.h 2013-07-18 23:02:25 +0000
@@ -41,7 +41,7 @@
4141
42 void Prepend(nux::InputArea* area);42 void Prepend(nux::InputArea* area);
43 void Append(nux::InputArea* area);43 void Append(nux::InputArea* area);
44 void Insert(nux::InputArea* area, int index);44 void Insert(nux::InputArea* area, unsigned index);
45 void InsertBefore(nux::InputArea* area, nux::InputArea* after);45 void InsertBefore(nux::InputArea* area, nux::InputArea* after);
46 void InsertAfter(nux::InputArea* area, nux::InputArea* before);46 void InsertAfter(nux::InputArea* area, nux::InputArea* before);
47 void Remove(nux::InputArea* area);47 void Remove(nux::InputArea* area);
@@ -53,7 +53,8 @@
53 unsigned long special_keys_state);53 unsigned long special_keys_state);
54 nux::Area* KeyNavIteration(nux::KeyNavDirection direction);54 nux::Area* KeyNavIteration(nux::KeyNavDirection direction);
5555
56protected:56private:
57 friend class TestTabIterator;
57 std::list<nux::InputArea*> areas_;58 std::list<nux::InputArea*> areas_;
58};59};
5960
6061
=== modified file 'debian/changelog'
--- debian/changelog 2013-07-15 10:00:58 +0000
+++ debian/changelog 2013-07-18 23:02:25 +0000
@@ -1,7 +1,9 @@
1unity (7.0.2+13.10.20130705.1-0ubuntu4) UNRELEASED; urgency=low1unity (7.0.2+13.10.20130705.1-0ubuntu4) UNRELEASED; urgency=low
22
3 * debian/control: build-depends on xserver-xorg-video-dummy and libgl1-mesa-dri3 * debian/control:
44 - build-depend on xserver-xorg-video-dummy and libgl1-mesa-dri
5 - build-depend on libnux-4.0-dev (>= 4.0.2+13.10.20130718.1)
6
5 -- Marco Trevisan (Treviño) <marco@ubuntu.com> Tue, 09 Jul 2013 03:55:14 +02007 -- Marco Trevisan (Treviño) <marco@ubuntu.com> Tue, 09 Jul 2013 03:55:14 +0200
68
7unity (7.0.2+13.10.20130705.1-0ubuntu3) saucy; urgency=low9unity (7.0.2+13.10.20130705.1-0ubuntu3) saucy; urgency=low
810
=== modified file 'debian/control'
--- debian/control 2013-07-15 10:00:58 +0000
+++ debian/control 2013-07-18 23:02:25 +0000
@@ -32,7 +32,7 @@
32 libjson-glib-dev,32 libjson-glib-dev,
33 libjson-perl,33 libjson-perl,
34 libnotify-dev,34 libnotify-dev,
35 libnux-4.0-dev (>= 4.0.2),35 libnux-4.0-dev (>= 4.0.2+13.10.20130718.1),
36 libpango1.0-dev,36 libpango1.0-dev,
37 libsigc++-2.0-dev,37 libsigc++-2.0-dev,
38 libstartup-notification0-dev,38 libstartup-notification0-dev,
3939
=== modified file 'launcher/Launcher.cpp'
--- launcher/Launcher.cpp 2013-07-01 21:20:51 +0000
+++ launcher/Launcher.cpp 2013-07-18 23:02:25 +0000
@@ -157,6 +157,7 @@
157 , _drag_out_delta_x(0.0f)157 , _drag_out_delta_x(0.0f)
158 , _drag_gesture_ongoing(false)158 , _drag_gesture_ongoing(false)
159 , _last_reveal_progress(0.0f)159 , _last_reveal_progress(0.0f)
160 , _drag_action(nux::DNDACTION_NONE)
160 , _selection_atom(0)161 , _selection_atom(0)
161 , icon_renderer(std::make_shared<ui::IconRenderer>())162 , icon_renderer(std::make_shared<ui::IconRenderer>())
162{163{
163164
=== modified file 'launcher/TrashLauncherIcon.cpp'
--- launcher/TrashLauncherIcon.cpp 2013-07-01 10:43:39 +0000
+++ launcher/TrashLauncherIcon.cpp 2013-07-18 23:02:25 +0000
@@ -42,6 +42,7 @@
4242
43TrashLauncherIcon::TrashLauncherIcon(FileManager::Ptr const& fmo)43TrashLauncherIcon::TrashLauncherIcon(FileManager::Ptr const& fmo)
44 : SimpleLauncherIcon(IconType::TRASH)44 : SimpleLauncherIcon(IconType::TRASH)
45 , empty_(true)
45 , file_manager_(fmo ? fmo : GnomeFileManager::Get())46 , file_manager_(fmo ? fmo : GnomeFileManager::Get())
46{47{
47 tooltip_text = _("Trash");48 tooltip_text = _("Trash");
4849
=== modified file 'tests/test_filter_multirange.h'
--- tests/test_filter_multirange.h 2012-12-20 10:42:49 +0000
+++ tests/test_filter_multirange.h 2013-07-18 23:02:25 +0000
@@ -42,26 +42,22 @@
4242
43GVariant* AddFilterOptions(std::vector<bool> option_active)43GVariant* AddFilterOptions(std::vector<bool> option_active)
44{44{
45 GVariantBuilder* builder;45 GVariantBuilder builder;
46 builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);46 g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);
4747
48 int i = 0;48 for (unsigned i = 1; i <= option_active.size(); ++i)
49 for (auto iter = option_active.begin(), end = option_active.end(); iter != end; ++iter)
50 {49 {
51 std::stringstream name;50 auto pstr_name = std::to_string(i);
52 name << i++;51
5352 g_variant_builder_add(&builder, "(sssb)", pstr_name.c_str(), pstr_name.c_str(), "", FALSE);
54 const char* pstr_name = name.str().c_str();
55
56 g_variant_builder_add (builder, "(sssb)", pstr_name, pstr_name, "", FALSE);
57 }53 }
58 return g_variant_builder_end (builder);54 return g_variant_builder_end(&builder);
59}55}
6056
61void ExpectFilterRange(unity::dash::MultiRangeFilter::Ptr const& filter, int first, int last)57void ExpectFilterRange(unity::dash::MultiRangeFilter::Ptr const& filter, int first, int last)
62{58{
63 int i = 0;59 int i = 0;
64 for (auto option : filter->options())60 for (auto const& option : filter->options())
65 {61 {
66 bool should_be_active = i >= first && i <= last;62 bool should_be_active = i >= first && i <= last;
67 EXPECT_EQ(option->active, should_be_active);63 EXPECT_EQ(option->active, should_be_active);
6864
=== modified file 'tests/test_glib_signals.cpp'
--- tests/test_glib_signals.cpp 2012-08-15 16:58:14 +0000
+++ tests/test_glib_signals.cpp 2013-07-18 23:02:25 +0000
@@ -34,8 +34,7 @@
3434
35 virtual ~TestGLibSignals()35 virtual ~TestGLibSignals()
36 {36 {
37 if (G_IS_OBJECT(test_signals_))37 g_object_unref(test_signals_);
38 g_object_unref(test_signals_);
39 }38 }
4039
41 void Signal0Callback(TestSignals* signals)40 void Signal0Callback(TestSignals* signals)
@@ -274,7 +273,7 @@
274 Signal<void, TestSignals*> signal;273 Signal<void, TestSignals*> signal;
275 signal.Connect(test_signals_, "signal0",274 signal.Connect(test_signals_, "signal0",
276 sigc::mem_fun(this, &TestGLibSignals::Signal0Callback));275 sigc::mem_fun(this, &TestGLibSignals::Signal0Callback));
277 g_object_unref(test_signals_);276 g_clear_object(&test_signals_);
278 EXPECT_EQ(signal.object(), nullptr);277 EXPECT_EQ(signal.object(), nullptr);
279}278}
280279
@@ -438,7 +437,7 @@
438 sigc::mem_fun(this, &TestGLibSignals::Signal5Callback));437 sigc::mem_fun(this, &TestGLibSignals::Signal5Callback));
439 manager.Add<gboolean, TestSignals*, const char*, int, float, double, gboolean, char>(test_signals_, "signal6", sigc::mem_fun(this, &TestGLibSignals::Signal6Callback));438 manager.Add<gboolean, TestSignals*, const char*, int, float, double, gboolean, char>(test_signals_, "signal6", sigc::mem_fun(this, &TestGLibSignals::Signal6Callback));
440439
441 g_object_unref(test_signals_);440 g_clear_object(&test_signals_);
442 EXPECT_TRUE(manager.GetConnections().empty());441 EXPECT_TRUE(manager.GetConnections().empty());
443}442}
444443
445444
=== modified file 'tests/test_grabhandle.cpp'
--- tests/test_grabhandle.cpp 2012-11-15 17:56:23 +0000
+++ tests/test_grabhandle.cpp 2013-07-18 23:02:25 +0000
@@ -147,14 +147,11 @@
147protected:147protected:
148148
149 UnityMTGrabHandleTest() :149 UnityMTGrabHandleTest() :
150 handlesMask (0),150 handlesMask(0)
151 window (new MockGrabHandleWindow)151 {}
152 {
153
154 }
155152
156 unsigned int handlesMask;153 unsigned int handlesMask;
157 MockGrabHandleWindow *window;154 MockGrabHandleWindow window;
158};155};
159156
160TEST_F(UnityMTGrabHandleTest, TestLayoutMasks) {157TEST_F(UnityMTGrabHandleTest, TestLayoutMasks) {
@@ -209,7 +206,7 @@
209 for (unsigned int i = 0; i < unity::MT::NUM_HANDLES; i++)206 for (unsigned int i = 0; i < unity::MT::NUM_HANDLES; i++)
210 textures.push_back (TextureSize (MockGrabHandleTextureFactory::Default ()->create (), nux::Geometry (0, 0, 100, 100)));207 textures.push_back (TextureSize (MockGrabHandleTextureFactory::Default ()->create (), nux::Geometry (0, 0, 100, 100)));
211208
212 GrabHandleGroup::Ptr group = GrabHandleGroup::create (window, textures);209 GrabHandleGroup::Ptr group = GrabHandleGroup::create (&window, textures);
213210
214 group->relayout (nux::Geometry (250, 250, 1000, 1000), true);211 group->relayout (nux::Geometry (250, 250, 1000, 1000), true);
215212
@@ -253,7 +250,7 @@
253 for (unsigned int i = 0; i < unity::MT::NUM_HANDLES; i++)250 for (unsigned int i = 0; i < unity::MT::NUM_HANDLES; i++)
254 textures.push_back (TextureSize (MockGrabHandleTextureFactory::Default ()->create (), nux::Geometry (0, 0, 100, 100)));251 textures.push_back (TextureSize (MockGrabHandleTextureFactory::Default ()->create (), nux::Geometry (0, 0, 100, 100)));
255252
256 GrabHandleGroup::Ptr group = GrabHandleGroup::create (window, textures);253 GrabHandleGroup::Ptr group = GrabHandleGroup::create (&window, textures);
257254
258 group->show (0);255 group->show (0);
259 group->show (TopLeftHandle | TopHandle | TopRightHandle);256 group->show (TopLeftHandle | TopHandle | TopRightHandle);
@@ -280,7 +277,7 @@
280 for (unsigned int i = 0; i < unity::MT::NUM_HANDLES; i++)277 for (unsigned int i = 0; i < unity::MT::NUM_HANDLES; i++)
281 textures.push_back (TextureSize (MockGrabHandleTextureFactory::Default ()->create (), nux::Geometry (0, 0, 100, 100)));278 textures.push_back (TextureSize (MockGrabHandleTextureFactory::Default ()->create (), nux::Geometry (0, 0, 100, 100)));
282279
283 GrabHandleGroup::Ptr group = GrabHandleGroup::create (window, textures);280 GrabHandleGroup::Ptr group = GrabHandleGroup::create (&window, textures);
284281
285 group->show ();282 group->show ();
286 for (unsigned int i = 0; i < unity::MT::FADE_MSEC; i++)283 for (unsigned int i = 0; i < unity::MT::FADE_MSEC; i++)
287284
=== modified file 'tests/test_icon_loader.cpp'
--- tests/test_icon_loader.cpp 2013-07-09 03:46:49 +0000
+++ tests/test_icon_loader.cpp 2013-07-18 23:02:25 +0000
@@ -87,47 +87,57 @@
87 }87 }
88}88}
8989
9090struct TestIconLoader : testing::Test
91TEST(TestIconLoader, TestGetDefault)91{
92{92 TestIconLoader()
93 // we need to initialize gtk93 : icon_loader(IconLoader::GetDefault())
94 int args_cnt = 0;94 {}
95 gtk_init (&args_cnt, NULL);95
9696 void TearDown() override
97 IconLoader::GetDefault();97 {
98}98 for (int handle : handles_)
9999 icon_loader.DisconnectHandle(handle);
100TEST(TestIconLoader, TestGetOneIcon)100 }
101{101
102 LoadResult load_result;102 IconLoader& icon_loader;
103 IconLoader& icon_loader = IconLoader::GetDefault();103 std::vector<int> handles_;
104104};
105 icon_loader.LoadFromIconName("python", -1, 48, sigc::mem_fun(load_result,105
106 &LoadResult::IconLoaded));106TEST_F(TestIconLoader, TestGetDefault)
107107{
108 Utils::WaitUntilMSec(load_result.got_callback);108 EXPECT_EQ(&icon_loader, &IconLoader::GetDefault());
109 EXPECT_TRUE(load_result.got_callback);109}
110 EXPECT_TRUE(IsValidPixbuf(load_result.pixbuf));110
111}111TEST_F(TestIconLoader, TestGetOneIcon)
112112{
113TEST(TestIconLoader, TestGetAnnotatedIcon)113 LoadResult load_result;
114{114
115 LoadResult load_result;115 int handle = icon_loader.LoadFromIconName("python", -1, 48, sigc::mem_fun(load_result,
116 IconLoader& icon_loader = IconLoader::GetDefault();116 &LoadResult::IconLoaded));
117117 handles_.push_back(handle);
118 icon_loader.LoadFromGIconString(". UnityProtocolAnnotatedIcon %7B'base-icon':%20%3C'cmake'%3E,%20'ribbon':%20%3C'foo'%3E%7D", -1, 48, sigc::mem_fun(load_result,118
119 &LoadResult::IconLoaded));119 Utils::WaitUntilMSec(load_result.got_callback);
120120 EXPECT_TRUE(load_result.got_callback);
121 Utils::WaitUntilMSec(load_result.got_callback);121 EXPECT_TRUE(IsValidPixbuf(load_result.pixbuf));
122 EXPECT_TRUE(load_result.got_callback);122}
123 EXPECT_TRUE(IsValidPixbuf(load_result.pixbuf));123
124}124TEST_F(TestIconLoader, TestGetAnnotatedIcon)
125125{
126TEST(TestIconLoader, TestGetOneIconManyTimes)126 LoadResult load_result;
127
128 int handle = icon_loader.LoadFromGIconString(". UnityProtocolAnnotatedIcon %7B'base-icon':%20%3C'cmake'%3E,%20'ribbon':%20%3C'foo'%3E%7D", -1, 48, sigc::mem_fun(load_result,
129 &LoadResult::IconLoaded));
130 handles_.push_back(handle);
131
132 Utils::WaitUntilMSec(load_result.got_callback);
133 EXPECT_TRUE(load_result.got_callback);
134 EXPECT_TRUE(IsValidPixbuf(load_result.pixbuf));
135}
136
137TEST_F(TestIconLoader, TestGetOneIconManyTimes)
127{138{
128 std::vector<LoadResult> results;139 std::vector<LoadResult> results;
129 std::vector<int> handles;140 std::vector<int> handles;
130 IconLoader& icon_loader = IconLoader::GetDefault();
131 int i, load_count;141 int i, load_count;
132142
133 // 100 times should be good143 // 100 times should be good
@@ -141,6 +151,7 @@
141 {151 {
142 handles[i] = icon_loader.LoadFromIconName("debian-logo", -1, 48,152 handles[i] = icon_loader.LoadFromIconName("debian-logo", -1, 48,
143 sigc::mem_fun(results[i], &LoadResult::IconLoaded));153 sigc::mem_fun(results[i], &LoadResult::IconLoaded));
154 handles_.push_back(handles[i]);
144 }155 }
145156
146 // disconnect every other handler (and especially the first one)157 // disconnect every other handler (and especially the first one)
@@ -154,10 +165,9 @@
154}165}
155166
156// Disabled until we have the new thread safe lp:fontconfig167// Disabled until we have the new thread safe lp:fontconfig
157TEST(TestIconLoader, DISABLED_TestGetManyIcons)168TEST_F(TestIconLoader, DISABLED_TestGetManyIcons)
158{169{
159 std::vector<LoadResult> results;170 std::vector<LoadResult> results;
160 IconLoader& icon_loader = IconLoader::GetDefault();
161 int i = 0;171 int i = 0;
162 int icon_count;172 int icon_count;
163173
@@ -169,19 +179,18 @@
169 for (GList *it = icons; it != NULL; it = it->next)179 for (GList *it = icons; it != NULL; it = it->next)
170 {180 {
171 const char *icon_name = static_cast<char*>(it->data);181 const char *icon_name = static_cast<char*>(it->data);
172 icon_loader.LoadFromIconName(icon_name, -1, 48, sigc::mem_fun(results[i++],182 int handle = icon_loader.LoadFromIconName(icon_name, -1, 48, sigc::mem_fun(results[i++], &LoadResult::IconLoaded));
173 &LoadResult::IconLoaded));183 handles_.push_back(handle);
174 if (i >= icon_count) break;184 if (i >= icon_count) break;
175 }185 }
176186
177 CheckResults(results);187 CheckResults(results);
178}188}
179189
180TEST(TestIconLoader, TestCancelSome)190TEST_F(TestIconLoader, TestCancelSome)
181{191{
182 std::vector<LoadResult> results;192 std::vector<LoadResult> results;
183 std::vector<int> handles;193 std::vector<int> handles;
184 IconLoader& icon_loader = IconLoader::GetDefault();
185 int i = 0;194 int i = 0;
186 int icon_count;195 int icon_count;
187196
@@ -197,6 +206,7 @@
197 int handle = icon_loader.LoadFromIconName(icon_name, -1, 48, sigc::mem_fun(206 int handle = icon_loader.LoadFromIconName(icon_name, -1, 48, sigc::mem_fun(
198 results[i], &LoadResult::IconLoaded));207 results[i], &LoadResult::IconLoaded));
199 handles[i++] = handle;208 handles[i++] = handle;
209 handles_.push_back(handle);
200 if (i >= icon_count) break;210 if (i >= icon_count) break;
201 }211 }
202212
203213
=== modified file 'tests/test_launcher_entry_remote.cpp'
--- tests/test_launcher_entry_remote.cpp 2012-03-28 15:40:13 +0000
+++ tests/test_launcher_entry_remote.cpp 2013-07-18 23:02:25 +0000
@@ -153,6 +153,7 @@
153 g_variant_get(parameters, "(&sa{sv})", &app_uri, &prop_iter);153 g_variant_get(parameters, "(&sa{sv})", &app_uri, &prop_iter);
154 entry1.Update(prop_iter);154 entry1.Update(prop_iter);
155 g_variant_iter_free(prop_iter);155 g_variant_iter_free(prop_iter);
156 g_variant_unref(parameters);
156157
157 EXPECT_EQ(entry1.DBusName(), "Entry1");158 EXPECT_EQ(entry1.DBusName(), "Entry1");
158 EXPECT_EQ(entry1.AppUri(), "AppURI1");159 EXPECT_EQ(entry1.AppUri(), "AppURI1");
159160
=== modified file 'tests/test_preview_player.cpp'
--- tests/test_preview_player.cpp 2013-07-09 18:10:15 +0000
+++ tests/test_preview_player.cpp 2013-07-18 23:02:25 +0000
@@ -150,7 +150,7 @@
150 : server_(PLAYER_NAME)150 : server_(PLAYER_NAME)
151 {151 {
152 server_.AddObjects(PLAYER_INTERFACE, PLAYER_PATH);152 server_.AddObjects(PLAYER_INTERFACE, PLAYER_PATH);
153 auto const& object = server_.GetObjects().front();153 auto object = server_.GetObjects().front();
154154
155 object->SetMethodsCallsHandler([this, object] (std::string const& method, GVariant* parameters) {155 object->SetMethodsCallsHandler([this, object] (std::string const& method, GVariant* parameters) {
156 if (method == "Play")156 if (method == "Play")
157157
=== modified file 'tests/test_previews.cpp'
--- tests/test_previews.cpp 2013-02-27 18:04:26 +0000
+++ tests/test_previews.cpp 2013-07-18 23:02:25 +0000
@@ -42,6 +42,11 @@
42 return g_variant_get_type_string(variant) != NULL;42 return g_variant_get_type_string(variant) != NULL;
43}43}
4444
45static void g_variant_unref0(gpointer var)
46{
47 if (var) g_variant_unref((GVariant*)var);
48}
49
45TEST(TestPreviews, DeserializeGeneric)50TEST(TestPreviews, DeserializeGeneric)
46{51{
47 Object<GIcon> icon(g_icon_new_for_string("accessories", NULL));52 Object<GIcon> icon(g_icon_new_for_string("accessories", NULL));
@@ -77,7 +82,7 @@
77 unity_protocol_preview_set_image(proto_obj, icon);82 unity_protocol_preview_set_image(proto_obj, icon);
78 unity_protocol_preview_set_image_source_uri(proto_obj, "Source");83 unity_protocol_preview_set_image_source_uri(proto_obj, "Source");
7984
80 GHashTable* hints = g_hash_table_new(g_str_hash, g_str_equal);85 GHashTable* hints = g_hash_table_new_full(g_str_hash, g_direct_equal, g_free, g_variant_unref0);
81 g_hash_table_insert(hints, g_strdup("extra-text"), g_variant_new_string("Foo"));86 g_hash_table_insert(hints, g_strdup("extra-text"), g_variant_new_string("Foo"));
82 unity_protocol_preview_add_action(proto_obj, "action1", "Action #1", NULL, 0);87 unity_protocol_preview_add_action(proto_obj, "action1", "Action #1", NULL, 0);
83 unity_protocol_preview_add_action_with_hints(proto_obj, "action2", "Action #2", NULL, 0, hints);88 unity_protocol_preview_add_action_with_hints(proto_obj, "action2", "Action #2", NULL, 0, hints);
8489
=== modified file 'tests/test_quicklist_menu_item.cpp'
--- tests/test_quicklist_menu_item.cpp 2013-03-19 18:47:01 +0000
+++ tests/test_quicklist_menu_item.cpp 2013-07-18 23:02:25 +0000
@@ -167,7 +167,9 @@
167 XEvent xevent;167 XEvent xevent;
168 xevent.type = ButtonPress;168 xevent.type = ButtonPress;
169 xevent.xany.display = nux::GetGraphicsDisplay()->GetX11Display();169 xevent.xany.display = nux::GetGraphicsDisplay()->GetX11Display();
170 xevent.xany.window = nux::GetGraphicsDisplay()->GetWindowHandle();
170 xevent.xbutton.time = g_random_int();171 xevent.xbutton.time = g_random_int();
172 xevent.xbutton.button = Button1;
171 nux::GetGraphicsDisplay()->ProcessXEvent(xevent, true);173 nux::GetGraphicsDisplay()->ProcessXEvent(xevent, true);
172174
173 auto event_time = nux::GetGraphicsDisplay()->GetCurrentEvent().x11_timestamp;175 auto event_time = nux::GetGraphicsDisplay()->GetCurrentEvent().x11_timestamp;
174176
=== modified file 'tests/test_scope.cpp'
--- tests/test_scope.cpp 2013-07-09 18:56:00 +0000
+++ tests/test_scope.cpp 2013-07-18 23:02:25 +0000
@@ -18,7 +18,7 @@
18 */18 */
1919
20#include <boost/lexical_cast.hpp>20#include <boost/lexical_cast.hpp>
21#include <gtest/gtest.h>21#include <gmock/gmock.h>
22#include <glib-object.h>22#include <glib-object.h>
23#include <unity-protocol.h>23#include <unity-protocol.h>
2424
@@ -43,7 +43,9 @@
43const std::string SCOPE_NAME = "testscope1.scope";43const std::string SCOPE_NAME = "testscope1.scope";
44}44}
4545
46class TestScope : public ::testing::Test46using namespace testing;
47
48class TestScope : public Test
47{49{
48public:50public:
49 TestScope() { }51 TestScope() { }
@@ -216,6 +218,10 @@
216 Results::Ptr category_model1 = scope_->GetResultsForCategory(1);218 Results::Ptr category_model1 = scope_->GetResultsForCategory(1);
217 Results::Ptr category_model2 = scope_->GetResultsForCategory(2);219 Results::Ptr category_model2 = scope_->GetResultsForCategory(2);
218220
221 ASSERT_THAT(category_model0, NotNull());
222 ASSERT_THAT(category_model1, NotNull());
223 ASSERT_THAT(category_model2, NotNull());
224
219 EXPECT_EQ(category_model0->count(), 5) << "Category 0 result count not as expected (" << category_model0->count() << " != 5)";225 EXPECT_EQ(category_model0->count(), 5) << "Category 0 result count not as expected (" << category_model0->count() << " != 5)";
220 EXPECT_EQ(category_model1->count(), 4) << "Category 1 result count not as expected (" << category_model1->count() << " != 4)";226 EXPECT_EQ(category_model1->count(), 4) << "Category 1 result count not as expected (" << category_model1->count() << " != 4)";
221 EXPECT_EQ(category_model2->count(), 4) << "Category 2 result count not as expected (" << category_model2->count() << " != 4)";227 EXPECT_EQ(category_model2->count(), 4) << "Category 2 result count not as expected (" << category_model2->count() << " != 4)";
222228
=== modified file 'tests/test_session_controller.cpp'
--- tests/test_session_controller.cpp 2013-03-19 18:47:01 +0000
+++ tests/test_session_controller.cpp 2013-07-18 23:02:25 +0000
@@ -54,7 +54,7 @@
54 nux::NuxTimerTickSource tick_source;54 nux::NuxTimerTickSource tick_source;
55 nux::animation::AnimationController animation_controller;55 nux::animation::AnimationController animation_controller;
56 unity::Settings settings;56 unity::Settings settings;
57 MockManager::Ptr manager;57 MockManager::Ptr manager ;
58 ControllerWrap controller;58 ControllerWrap controller;
59};59};
6060
6161
=== modified file 'tests/test_tabiterator.cpp'
--- tests/test_tabiterator.cpp 2013-01-22 11:54:25 +0000
+++ tests/test_tabiterator.cpp 2013-07-18 23:02:25 +0000
@@ -17,6 +17,7 @@
17 * <http://www.gnu.org/licenses/>17 * <http://www.gnu.org/licenses/>
18 *18 *
19 * Authored by: Manuel de la Pena <manuel.delapena@canonical.com>19 * Authored by: Manuel de la Pena <manuel.delapena@canonical.com>
20 * Marco Trevisan <marco.trevisan@canonical.com>
20 *21 *
21 */22 */
2223
@@ -38,341 +39,359 @@
38namespace previews39namespace previews
39{40{
4041
41class MockedTabIterator : public TabIterator42typedef nux::ObjectPtr<IMTextEntry> IMTextEntryPtr;
42{43
43public:44struct TestTabIterator : ::testing::Test
44 using TabIterator::areas_;45{
45};46 struct MockedTabIterator : public TabIterator
4647 {
47class TestTabIterator : public ::testing::Test48 using TabIterator::areas_;
48{49 };
49 protected:50
50 TestTabIterator() : Test(),51 MockedTabIterator tab_iterator;
51 tab_iterator(new MockedTabIterator())
52 {
53 }
54
55
56 std::unique_ptr<MockedTabIterator> tab_iterator;
57};52};
5853
59TEST_F(TestTabIterator, DoRemove)54TEST_F(TestTabIterator, DoRemove)
60{55{
61 unity::IMTextEntry* entry = new unity::IMTextEntry();56 auto entry = IMTextEntryPtr(new IMTextEntry);
62 tab_iterator->areas_.push_front(entry);57 tab_iterator.areas_.push_back(entry.GetPointer());
63 tab_iterator->Remove(entry);58 tab_iterator.Remove(entry.GetPointer());
6459
65 std::list<nux::InputArea*>::iterator it = std::find(tab_iterator->areas_.begin(),60 std::list<nux::InputArea*>::iterator it = std::find(tab_iterator.areas_.begin(),
66 tab_iterator->areas_.end(), entry);61 tab_iterator.areas_.end(), entry.GetPointer());
67 EXPECT_EQ(it, tab_iterator->areas_.end());62 EXPECT_EQ(it, tab_iterator.areas_.end());
68}63}
6964
70TEST_F(TestTabIterator, DoRemoveMissing)65TEST_F(TestTabIterator, DoRemoveMissing)
71{66{
72 unity::IMTextEntry* entry = new unity::IMTextEntry();67 auto entry = IMTextEntryPtr(new IMTextEntry);
73 tab_iterator->Remove(entry);68 tab_iterator.Remove(entry.GetPointer());
7469
75 std::list<nux::InputArea*>::iterator it = std::find(tab_iterator->areas_.begin(),70 std::list<nux::InputArea*>::iterator it = std::find(tab_iterator.areas_.begin(),
76 tab_iterator->areas_.end(), entry);71 tab_iterator.areas_.end(), entry.GetPointer());
77 EXPECT_EQ(it, tab_iterator->areas_.end());72 EXPECT_EQ(it, tab_iterator.areas_.end());
78}73}
7974
80TEST_F(TestTabIterator, Prepend)75TEST_F(TestTabIterator, Prepend)
81{76{
77 std::vector<IMTextEntryPtr> local_areas;
78
82 for(int index=0; index < 10; ++index)79 for(int index=0; index < 10; ++index)
83 {80 {
84 unity::IMTextEntry* entry = new unity::IMTextEntry();81 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
85 tab_iterator->areas_.push_front(entry);82 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
86 }83 }
8784
88 unity::IMTextEntry* entry = new unity::IMTextEntry();85 auto entry = IMTextEntryPtr(new IMTextEntry);
89 tab_iterator->Prepend(entry);86 tab_iterator.Prepend(entry.GetPointer());
9087
91 std::list<nux::InputArea*>::iterator it = std::find(tab_iterator->areas_.begin(),88 std::list<nux::InputArea*>::iterator it = std::find(tab_iterator.areas_.begin(),
92 tab_iterator->areas_.end(), entry);89 tab_iterator.areas_.end(), entry.GetPointer());
9390
94 EXPECT_EQ(it, tab_iterator->areas_.begin());91 EXPECT_EQ(it, tab_iterator.areas_.begin());
95}92}
9693
97TEST_F(TestTabIterator, Append)94TEST_F(TestTabIterator, Append)
98{95{
96 std::vector<IMTextEntryPtr> local_areas;
97
99 for(int index=0; index < 10; ++index)98 for(int index=0; index < 10; ++index)
100 {99 {
101 unity::IMTextEntry* entry = new unity::IMTextEntry();100 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
102 tab_iterator->areas_.push_front(entry);101 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
103 }102 }
104103
105 unity::IMTextEntry* entry = new unity::IMTextEntry();104 auto entry = IMTextEntryPtr(new IMTextEntry);
106 tab_iterator->Append(entry);105 tab_iterator.Append(entry.GetPointer());
107 nux::InputArea* last = tab_iterator->areas_.back();106 nux::InputArea* last = tab_iterator.areas_.back();
108107
109 EXPECT_TRUE(entry == last); // compare pointers108 EXPECT_EQ(entry.GetPointer(), last); // compare pointers
110}109}
111110
112TEST_F(TestTabIterator, InsertIndex)111TEST_F(TestTabIterator, InsertIndex)
113{112{
113 std::vector<IMTextEntryPtr> local_areas;
114
114 for(int index=0; index < 10; ++index)115 for(int index=0; index < 10; ++index)
115 {116 {
116 unity::IMTextEntry* entry = new unity::IMTextEntry();117 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
117 tab_iterator->areas_.push_front(entry);118 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
118 }119 }
119 unity::IMTextEntry* entry = new unity::IMTextEntry();120
120 tab_iterator->Insert(entry, 5);121 auto entry = IMTextEntryPtr(new IMTextEntry);
121122 tab_iterator.Insert(entry.GetPointer(), 5);
122 std::list<nux::InputArea*>::iterator it = tab_iterator->areas_.begin();123
124 std::list<nux::InputArea*>::iterator it = tab_iterator.areas_.begin();
123 std::advance(it, 5);125 std::advance(it, 5);
124126
125 EXPECT_NE(tab_iterator->areas_.end(), it);127 EXPECT_NE(tab_iterator.areas_.end(), it);
126 EXPECT_TRUE(entry == (unity::IMTextEntry*)*it);128 EXPECT_EQ(entry.GetPointer(), *it);
127}129}
128130
129TEST_F(TestTabIterator, InsertIndexTooLarge)131TEST_F(TestTabIterator, InsertIndexTooLarge)
130{132{
133 std::vector<IMTextEntryPtr> local_areas;
134
131 for(int index=0; index < 5; ++index)135 for(int index=0; index < 5; ++index)
132 {136 {
133 unity::IMTextEntry* entry = new unity::IMTextEntry();137 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
134 tab_iterator->areas_.push_front(entry);138 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
135 }139 }
136140
137 unity::IMTextEntry* entry = new unity::IMTextEntry();141 auto entry = IMTextEntryPtr(new IMTextEntry);
138 tab_iterator->Insert(entry, 7);142 tab_iterator.Insert(entry.GetPointer(), 7);
139143
140 nux::InputArea* last = tab_iterator->areas_.back();144 nux::InputArea* last = tab_iterator.areas_.back();
141145
142 EXPECT_TRUE(entry == last); // compare pointers146 EXPECT_EQ(entry.GetPointer(), last); // compare pointers
143}147}
144148
145TEST_F(TestTabIterator, InsertBefore)149TEST_F(TestTabIterator, InsertBefore)
146{150{
147 unity::IMTextEntry* first_entry = new unity::IMTextEntry();151 auto first_entry = IMTextEntryPtr(new IMTextEntry);
148 tab_iterator->areas_.push_front(first_entry);152 tab_iterator.areas_.push_back(first_entry.GetPointer());
149153
150 unity::IMTextEntry* second_entry = new unity::IMTextEntry();154 auto second_entry = IMTextEntryPtr(new IMTextEntry);
151 tab_iterator->InsertBefore(second_entry, first_entry);155 tab_iterator.InsertBefore(second_entry.GetPointer(), first_entry.GetPointer());
152156
153 EXPECT_TRUE(second_entry == *tab_iterator->areas_.begin());157 EXPECT_EQ(second_entry.GetPointer(), *tab_iterator.areas_.begin());
154}158}
155159
156TEST_F(TestTabIterator, InsertBeforeMissing)160TEST_F(TestTabIterator, InsertBeforeMissing)
157{161{
162 std::vector<IMTextEntryPtr> local_areas;
163
158 for(int index=0; index < 5; ++index)164 for(int index=0; index < 5; ++index)
159 {165 {
160 unity::IMTextEntry* entry = new unity::IMTextEntry();166 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
161 tab_iterator->areas_.push_front(entry);167 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
162 }168 }
163169
164 unity::IMTextEntry* first_entry = new unity::IMTextEntry();170 auto first_entry = IMTextEntryPtr(new IMTextEntry);
165 unity::IMTextEntry* second_entry = new unity::IMTextEntry();171 auto second_entry = IMTextEntryPtr(new IMTextEntry);
166 tab_iterator->InsertBefore(second_entry, first_entry);172 tab_iterator.InsertBefore(second_entry.GetPointer(), first_entry.GetPointer());
167173
168 std::list<nux::InputArea*>::iterator it = std::find(tab_iterator->areas_.begin(),174 std::list<nux::InputArea*>::iterator it = std::find(tab_iterator.areas_.begin(),
169 tab_iterator->areas_.end(), second_entry);175 tab_iterator.areas_.end(), second_entry.GetPointer());
170176
171 nux::InputArea* last = tab_iterator->areas_.back();177 nux::InputArea* last = tab_iterator.areas_.back();
172178
173 EXPECT_TRUE(second_entry == last);179 EXPECT_EQ(second_entry.GetPointer(), last);
174}180}
175181
176TEST_F(TestTabIterator, InsertAfter)182TEST_F(TestTabIterator, InsertAfter)
177{183{
178 unity::IMTextEntry* first_entry = new unity::IMTextEntry();184 auto first_entry = IMTextEntryPtr(new IMTextEntry);
179 tab_iterator->areas_.push_front(first_entry);185 tab_iterator.areas_.push_back(first_entry.GetPointer());
180186
181 unity::IMTextEntry* second_entry = new unity::IMTextEntry();187 auto second_entry = IMTextEntryPtr(new IMTextEntry);
182 tab_iterator->InsertAfter(second_entry, first_entry);188 tab_iterator.InsertAfter(second_entry.GetPointer(), first_entry.GetPointer());
183189
184 nux::InputArea* last = tab_iterator->areas_.back();190 nux::InputArea* last = tab_iterator.areas_.back();
185191
186 EXPECT_TRUE(second_entry == last);192 EXPECT_EQ(second_entry.GetPointer(), last);
187}193}
188194
189TEST_F(TestTabIterator, InsertAfterMissing)195TEST_F(TestTabIterator, InsertAfterMissing)
190{196{
197 std::vector<IMTextEntryPtr> local_areas;
198
191 for(int index=0; index < 5; ++index)199 for(int index=0; index < 5; ++index)
192 {200 {
193 unity::IMTextEntry* entry = new unity::IMTextEntry();201 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
194 tab_iterator->areas_.push_front(entry);202 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
195 }203 }
196204
197 unity::IMTextEntry* first_entry = new unity::IMTextEntry();205 auto first_entry = IMTextEntryPtr(new IMTextEntry);
198 unity::IMTextEntry* second_entry = new unity::IMTextEntry();206 auto second_entry = IMTextEntryPtr(new IMTextEntry);
199 tab_iterator->InsertAfter(second_entry, first_entry);207 tab_iterator.InsertAfter(second_entry.GetPointer(), first_entry.GetPointer());
200208
201 std::list<nux::InputArea*>::iterator it = std::find(tab_iterator->areas_.begin(),209 std::list<nux::InputArea*>::iterator it = std::find(tab_iterator.areas_.begin(),
202 tab_iterator->areas_.end(), second_entry);210 tab_iterator.areas_.end(), second_entry.GetPointer());
203211
204 nux::InputArea* last = tab_iterator->areas_.back();212 nux::InputArea* last = tab_iterator.areas_.back();
205213
206 EXPECT_TRUE(second_entry == last);214 EXPECT_EQ(second_entry.GetPointer(), last);
207}215}
208216
209TEST_F(TestTabIterator, GetDefaultFocus)217TEST_F(TestTabIterator, GetDefaultFocus)
210{218{
219 std::vector<IMTextEntryPtr> local_areas;
220
211 for(int index=0; index < 10; ++index)221 for(int index=0; index < 10; ++index)
212 {222 {
213 unity::IMTextEntry* entry = new unity::IMTextEntry();223 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
214 tab_iterator->areas_.push_front(entry);224 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
215 }225 }
216226
217 unity::IMTextEntry* entry = new unity::IMTextEntry();227 auto entry = IMTextEntryPtr(new IMTextEntry);
218 tab_iterator->Prepend(entry);228 tab_iterator.Prepend(entry.GetPointer());
219229
220 EXPECT_TRUE(tab_iterator->DefaultFocus() == entry);230 EXPECT_EQ(tab_iterator.DefaultFocus(), entry.GetPointer());
221}231}
222232
223TEST_F(TestTabIterator, GetDefaultFocusEmpty)233TEST_F(TestTabIterator, GetDefaultFocusEmpty)
224{234{
225 EXPECT_TRUE(tab_iterator->DefaultFocus() == nullptr);235 EXPECT_EQ(tab_iterator.DefaultFocus(), nullptr);
226}236}
227237
228TEST_F(TestTabIterator, FindKeyFocusAreaFromWindow)238TEST_F(TestTabIterator, FindKeyFocusAreaFromWindow)
229{239{
230 nux::InputArea* current_focus_area = nux::GetWindowCompositor().GetKeyFocusArea();240 nux::InputArea* current_focus_area = nux::GetWindowCompositor().GetKeyFocusArea();
231 // add the area to the iterator241 // add the area to the iterator
232 tab_iterator->Prepend(current_focus_area);242 tab_iterator.Prepend(current_focus_area);
233243
234 EXPECT_TRUE(tab_iterator->FindKeyFocusArea(0, 0, 0) == current_focus_area);244 EXPECT_EQ(tab_iterator.FindKeyFocusArea(0, 0, 0), current_focus_area);
235}245}
236246
237TEST_F(TestTabIterator, FindKeyFocusFromIterator)247TEST_F(TestTabIterator, FindKeyFocusFromIterator)
238{248{
249 std::vector<IMTextEntryPtr> local_areas;
250
239 for(int index=0; index < 10; ++index)251 for(int index=0; index < 10; ++index)
240 {252 {
241 unity::IMTextEntry* entry = new unity::IMTextEntry();253 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
242 tab_iterator->areas_.push_front(entry);254 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
243 }255 }
244256
245 unity::IMTextEntry* entry = new unity::IMTextEntry();257 auto entry = IMTextEntryPtr(new IMTextEntry);
246 tab_iterator->Prepend(entry);258 tab_iterator.Prepend(entry.GetPointer());
247259
248 EXPECT_TRUE(tab_iterator->FindKeyFocusArea(0, 0, 0) == entry);260 EXPECT_EQ(tab_iterator.FindKeyFocusArea(0, 0, 0), entry.GetPointer());
249}261}
250262
251TEST_F(TestTabIterator, FindKeyFocusAreaEmpty)263TEST_F(TestTabIterator, FindKeyFocusAreaEmpty)
252{264{
253 EXPECT_TRUE(tab_iterator->FindKeyFocusArea(0, 0, 0) == nullptr);265 EXPECT_EQ(tab_iterator.FindKeyFocusArea(0, 0, 0), nullptr);
254}266}
255267
256TEST_F(TestTabIterator, KeyNavIterationEmpty)268TEST_F(TestTabIterator, KeyNavIterationEmpty)
257{269{
258 nux::Area* area = tab_iterator->KeyNavIteration(nux::KEY_NAV_TAB_PREVIOUS);270 nux::Area* area = tab_iterator.KeyNavIteration(nux::KEY_NAV_TAB_PREVIOUS);
259 EXPECT_TRUE(area == nullptr);271 EXPECT_EQ(area, nullptr);
260}272}
261273
262TEST_F(TestTabIterator, KeyNavIterationWrongDirection)274TEST_F(TestTabIterator, KeyNavIterationWrongDirection)
263{275{
264 nux::Area* area = tab_iterator->KeyNavIteration(nux::KEY_NAV_NONE);276 nux::Area* area = tab_iterator.KeyNavIteration(nux::KEY_NAV_NONE);
265 EXPECT_TRUE(area == nullptr);277 EXPECT_EQ(area, nullptr);
266}278}
267279
268TEST_F(TestTabIterator, KeyNavIterationWithNoCurrentSelectionAndPreviousMove)280TEST_F(TestTabIterator, KeyNavIterationWithNoCurrentSelectionAndPreviousMove)
269{281{
270 unity::IMTextEntry* first_entry = new unity::IMTextEntry();282 auto first_entry = IMTextEntryPtr(new IMTextEntry);
271 unity::IMTextEntry* second_entry = new unity::IMTextEntry();283 auto second_entry = IMTextEntryPtr(new IMTextEntry);
272 tab_iterator->areas_.push_front(second_entry);284 tab_iterator.areas_.push_back(first_entry.GetPointer());
273 tab_iterator->areas_.push_front(first_entry);285 tab_iterator.areas_.push_back(second_entry.GetPointer());
274286
275 unity::IMTextEntry* result = (unity::IMTextEntry*) tab_iterator->KeyNavIteration(287 IMTextEntry* result = (IMTextEntry*) tab_iterator.KeyNavIteration(
276 nux::KEY_NAV_TAB_PREVIOUS);288 nux::KEY_NAV_TAB_PREVIOUS);
277289
278 EXPECT_TRUE(result == *tab_iterator->areas_.end());290 EXPECT_EQ(result, *tab_iterator.areas_.rbegin());
291 EXPECT_EQ(result, second_entry.GetPointer());
279}292}
280293
281TEST_F(TestTabIterator, KeyNavIterationNoCurrentSelectionAndNextMove)294TEST_F(TestTabIterator, KeyNavIterationNoCurrentSelectionAndNextMove)
282{295{
283 unity::IMTextEntry* first_entry = new unity::IMTextEntry();296 auto first_entry = IMTextEntryPtr(new IMTextEntry);
284 unity::IMTextEntry* second_entry = new unity::IMTextEntry();297 auto second_entry = IMTextEntryPtr(new IMTextEntry);
285 tab_iterator->areas_.push_front(second_entry);298 tab_iterator.areas_.push_back(first_entry.GetPointer());
286 tab_iterator->areas_.push_front(first_entry);299 tab_iterator.areas_.push_back(second_entry.GetPointer());
287300
288 unity::IMTextEntry* result = (unity::IMTextEntry*) tab_iterator->KeyNavIteration(301 IMTextEntry* result = (IMTextEntry*) tab_iterator.KeyNavIteration(
289 nux::KEY_NAV_TAB_NEXT);302 nux::KEY_NAV_TAB_NEXT);
290303
291 EXPECT_TRUE(result == *tab_iterator->areas_.begin());304 EXPECT_EQ(result, *tab_iterator.areas_.begin());
305 EXPECT_EQ(result, first_entry.GetPointer());
292}306}
293307
294TEST_F(TestTabIterator, KeyNavIterationWithPreviousSelectionIsFirstArea)308TEST_F(TestTabIterator, KeyNavIterationWithPreviousSelectionIsFirstArea)
295{309{
296 unity::IMTextEntry* first_entry = new unity::IMTextEntry();310 auto first_entry = IMTextEntryPtr(new IMTextEntry);
297 unity::IMTextEntry* second_entry = new unity::IMTextEntry();311 auto second_entry = IMTextEntryPtr(new IMTextEntry);
298 tab_iterator->areas_.push_front(second_entry);312 tab_iterator.areas_.push_back(first_entry.GetPointer());
299 tab_iterator->areas_.push_front(first_entry);313 tab_iterator.areas_.push_back(second_entry.GetPointer());
300314
301 nux::GetWindowCompositor().SetKeyFocusArea(*tab_iterator->areas_.begin());315 nux::GetWindowCompositor().SetKeyFocusArea(first_entry.GetPointer());
302316
303 unity::IMTextEntry* result = (unity::IMTextEntry*) tab_iterator->KeyNavIteration(317 IMTextEntry* result = (IMTextEntry*) tab_iterator.KeyNavIteration(
304 nux::KEY_NAV_TAB_PREVIOUS);318 nux::KEY_NAV_TAB_PREVIOUS);
305319
306 EXPECT_TRUE(result == *tab_iterator->areas_.end());320 EXPECT_EQ(result, *tab_iterator.areas_.rbegin());
321 EXPECT_EQ(result, second_entry.GetPointer());
307}322}
308323
309TEST_F(TestTabIterator, KeyNavIterationWithPreviousSelectionIsNotFirst)324TEST_F(TestTabIterator, KeyNavIterationWithPreviousSelectionIsNotFirst)
310{325{
311 for(int index=0; index < 10; ++index)326 std::vector<IMTextEntryPtr> local_areas;
312 {327
313 unity::IMTextEntry* entry = new unity::IMTextEntry();328 for(int index=0; index < 10; ++index)
314 tab_iterator->areas_.push_front(entry);329 {
315 }330 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
316331 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
317 unity::IMTextEntry* first_entry = new unity::IMTextEntry();332 }
318 unity::IMTextEntry* second_entry = new unity::IMTextEntry();333
319 tab_iterator->areas_.push_front(second_entry);334 auto first_entry = IMTextEntryPtr(new IMTextEntry);
320 tab_iterator->areas_.push_front(first_entry);335 auto second_entry = IMTextEntryPtr(new IMTextEntry);
321336 tab_iterator.areas_.push_back(first_entry.GetPointer());
322 for(int index=0; index < 10; ++index)337 tab_iterator.areas_.push_back(second_entry.GetPointer());
323 {338
324 unity::IMTextEntry* entry = new unity::IMTextEntry();339 for(int index=0; index < 10; ++index)
325 tab_iterator->areas_.push_front(entry);340 {
326 }341 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
327342 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
328 nux::GetWindowCompositor().SetKeyFocusArea(second_entry);343 }
329344
330 unity::IMTextEntry* result = (unity::IMTextEntry*) tab_iterator->KeyNavIteration(345 nux::GetWindowCompositor().SetKeyFocusArea(second_entry.GetPointer());
346
347 IMTextEntry* result = (IMTextEntry*) tab_iterator.KeyNavIteration(
331 nux::KEY_NAV_TAB_PREVIOUS);348 nux::KEY_NAV_TAB_PREVIOUS);
332 EXPECT_TRUE(result == first_entry);349 EXPECT_EQ(result, first_entry.GetPointer());
333}350}
334351
335TEST_F(TestTabIterator, KeyNavIterationWithNextSelectionIsLast)352TEST_F(TestTabIterator, KeyNavIterationWithNextSelectionIsLast)
336{353{
337 unity::IMTextEntry* first_entry = new unity::IMTextEntry();354 auto first_entry = IMTextEntryPtr(new IMTextEntry);
338 unity::IMTextEntry* second_entry = new unity::IMTextEntry();355 auto second_entry = IMTextEntryPtr(new IMTextEntry);
339 unity::IMTextEntry* not_in_areas = new unity::IMTextEntry();356 auto not_in_areas = IMTextEntryPtr(new IMTextEntry);
340357
341 tab_iterator->areas_.push_front(second_entry);358 tab_iterator.areas_.push_back(first_entry.GetPointer());
342 tab_iterator->areas_.push_front(first_entry);359 tab_iterator.areas_.push_back(second_entry.GetPointer());
343360
344 nux::GetWindowCompositor().SetKeyFocusArea(not_in_areas);361 nux::GetWindowCompositor().SetKeyFocusArea(not_in_areas.GetPointer());
345362
346 unity::IMTextEntry* result = (unity::IMTextEntry*) tab_iterator->KeyNavIteration(363 IMTextEntry* result = (IMTextEntry*) tab_iterator.KeyNavIteration(
347 nux::KEY_NAV_TAB_NEXT);364 nux::KEY_NAV_TAB_NEXT);
348365
349 EXPECT_TRUE(result == *tab_iterator->areas_.begin());366 EXPECT_EQ(result, *tab_iterator.areas_.begin());
367 EXPECT_EQ(result, first_entry.GetPointer());
350}368}
351369
352TEST_F(TestTabIterator, KeyNavIterationWithNextSelectionIsNotLast)370TEST_F(TestTabIterator, KeyNavIterationWithNextSelectionIsNotLast)
353{371{
354 for(int index=0; index < 10; ++index)372 std::vector<IMTextEntryPtr> local_areas;
355 {373
356 unity::IMTextEntry* entry = new unity::IMTextEntry();374 for(int index=0; index < 10; ++index)
357 tab_iterator->areas_.push_front(entry);375 {
358 }376 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
359377 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
360 unity::IMTextEntry* first_entry = new unity::IMTextEntry();378 }
361 unity::IMTextEntry* second_entry = new unity::IMTextEntry();379
362 tab_iterator->areas_.push_front(second_entry);380 auto first_entry = IMTextEntryPtr(new IMTextEntry);
363 tab_iterator->areas_.push_front(first_entry);381 auto second_entry = IMTextEntryPtr(new IMTextEntry);
364382 tab_iterator.areas_.push_back(first_entry.GetPointer());
365 for(int index=0; index < 10; ++index)383 tab_iterator.areas_.push_back(second_entry.GetPointer());
366 {384
367 unity::IMTextEntry* entry = new unity::IMTextEntry();385 for(int index=0; index < 10; ++index)
368 tab_iterator->areas_.push_front(entry);386 {
369 }387 local_areas.push_back(IMTextEntryPtr(new IMTextEntry));
370388 tab_iterator.areas_.push_back(local_areas.back().GetPointer());
371 nux::GetWindowCompositor().SetKeyFocusArea(first_entry);389 }
372390 nux::GetWindowCompositor().SetKeyFocusArea(first_entry.GetPointer());
373 unity::IMTextEntry* result = (unity::IMTextEntry*) tab_iterator->KeyNavIteration(391
392 IMTextEntry* result = (IMTextEntry*) tab_iterator.KeyNavIteration(
374 nux::KEY_NAV_TAB_NEXT);393 nux::KEY_NAV_TAB_NEXT);
375 EXPECT_TRUE(result == second_entry);394 EXPECT_EQ(result, second_entry.GetPointer());
376}395}
377396
378} // previews397} // previews
379398
=== modified file 'tests/test_time_util.cpp'
--- tests/test_time_util.cpp 2012-12-01 03:51:10 +0000
+++ tests/test_time_util.cpp 2013-07-18 23:02:25 +0000
@@ -26,7 +26,7 @@
2626
27TEST(TestTimeUtil, Testin32BufferOverflow)27TEST(TestTimeUtil, Testin32BufferOverflow)
28{28{
29 struct timespec start, end;29 struct timespec start {0, 0}, end {0, 0};
30 unity::TimeUtil::SetTimeStruct(&start, &end);30 unity::TimeUtil::SetTimeStruct(&start, &end);
3131
32 end.tv_sec = start.tv_sec + INT32_MAX;32 end.tv_sec = start.tv_sec + INT32_MAX;
3333
=== modified file 'tests/test_xdnd_manager_imp.cpp'
--- tests/test_xdnd_manager_imp.cpp 2012-11-20 13:11:53 +0000
+++ tests/test_xdnd_manager_imp.cpp 2013-07-18 23:02:25 +0000
@@ -59,6 +59,7 @@
59 xevent.type = ClientMessage;59 xevent.type = ClientMessage;
60 xevent.xany.display = nux::GetGraphicsDisplay()->GetX11Display();60 xevent.xany.display = nux::GetGraphicsDisplay()->GetX11Display();
61 xevent.xclient.message_type = XInternAtom(xevent.xany.display, "XdndEnter", false);61 xevent.xclient.message_type = XInternAtom(xevent.xany.display, "XdndEnter", false);
62 xevent.xclient.format = 0;
62 xevent.xclient.data.l[1] = 5 >> 24;63 xevent.xclient.data.l[1] = 5 >> 24;
6364
64 nux::GetGraphicsDisplay()->ProcessXEvent(xevent, true);65 nux::GetGraphicsDisplay()->ProcessXEvent(xevent, true);
6566
=== modified file 'unity-shared/PlacesOverlayVScrollBar.cpp'
--- unity-shared/PlacesOverlayVScrollBar.cpp 2013-04-02 23:38:31 +0000
+++ unity-shared/PlacesOverlayVScrollBar.cpp 2013-07-18 23:02:25 +0000
@@ -91,7 +91,7 @@
9191
92void PlacesOverlayVScrollBar::SetupAnimation(int start, int stop, int milliseconds)92void PlacesOverlayVScrollBar::SetupAnimation(int start, int stop, int milliseconds)
93{93{
94 tweening_connection_.disconnect();94 tweening_connection_->disconnect();
95 delta_update_ = 0;95 delta_update_ = 0;
9696
97 animation_.SetDuration(milliseconds);97 animation_.SetDuration(milliseconds);
9898
=== modified file 'unity-shared/PlacesOverlayVScrollBar.h'
--- unity-shared/PlacesOverlayVScrollBar.h 2012-12-13 14:26:56 +0000
+++ unity-shared/PlacesOverlayVScrollBar.h 2013-07-18 23:02:25 +0000
@@ -23,6 +23,7 @@
23#include <Nux/Nux.h>23#include <Nux/Nux.h>
24#include <Nux/InputAreaProximity.h>24#include <Nux/InputAreaProximity.h>
25#include <NuxCore/Animation.h>25#include <NuxCore/Animation.h>
26#include <UnityCore/ConnectionManager.h>
26#include <memory>27#include <memory>
2728
28#include "unity-shared/PlacesVScrollBar.h"29#include "unity-shared/PlacesVScrollBar.h"
@@ -94,7 +95,7 @@
94 nux::InputAreaProximity area_prox_;95 nux::InputAreaProximity area_prox_;
9596
96 nux::animation::AnimateValue<int> animation_;97 nux::animation::AnimateValue<int> animation_;
97 sigc::connection tweening_connection_;98 connection::Wrapper tweening_connection_;
9899
99 nux::ObjectPtr<nux::BaseTexture> connector_texture_;100 nux::ObjectPtr<nux::BaseTexture> connector_texture_;
100 101