Index: uspace/lib/ui/test/wdecor.c
===================================================================
--- uspace/lib/ui/test/wdecor.c	(revision 2d879f7e702c10a9b3cc8fe266982c468d020f00)
+++ uspace/lib/ui/test/wdecor.c	(revision 13824465fb4456a3eecfaf3c2ff08fb0cbdc3a55)
@@ -360,5 +360,5 @@
 	errno_t rc;
 
-	rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
+	rc = ui_wdecor_create(NULL, "Hello", ui_wds_decorated, &wdecor);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -388,6 +388,6 @@
 }
 
-/** ui_wdecor_get_geom() produces the correct geometry */
-PCUT_TEST(get_geom)
+/** ui_wdecor_get_geom() with ui_wds_none produces the correct geometry */
+PCUT_TEST(get_geom_none)
 {
 	ui_wdecor_t *wdecor;
@@ -407,4 +407,46 @@
 	ui_wdecor_get_geom(wdecor, &geom);
 
+	PCUT_ASSERT_INT_EQUALS(10, geom.interior_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(20, geom.interior_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(100, geom.interior_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(200, geom.interior_rect.p1.y);
+
+	PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);
+
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
+
+	PCUT_ASSERT_INT_EQUALS(10, geom.app_area_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(20, geom.app_area_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(100, geom.app_area_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(200, geom.app_area_rect.p1.y);
+
+	ui_wdecor_destroy(wdecor);
+}
+
+/** ui_wdecor_get_geom() with ui_wds_frame produces the correct geometry */
+PCUT_TEST(get_geom_frame)
+{
+	ui_wdecor_t *wdecor;
+	gfx_rect_t rect;
+	ui_wdecor_geom_t geom;
+	errno_t rc;
+
+	rc = ui_wdecor_create(NULL, "Hello", ui_wds_frame, &wdecor);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rect.p0.x = 10;
+	rect.p0.y = 20;
+	rect.p1.x = 100;
+	rect.p1.y = 200;
+
+	ui_wdecor_set_rect(wdecor, &rect);
+	ui_wdecor_get_geom(wdecor, &geom);
+
 	PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
 	PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
@@ -412,4 +454,47 @@
 	PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
 
+	PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);
+
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
+
+	PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(24, geom.app_area_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);
+
+	ui_wdecor_destroy(wdecor);
+}
+
+/** ui_wdecor_get_geom() with ui_wds_frame | ui_wds_titlebar */
+PCUT_TEST(get_geom_frame_titlebar)
+{
+	ui_wdecor_t *wdecor;
+	gfx_rect_t rect;
+	ui_wdecor_geom_t geom;
+	errno_t rc;
+
+	rc = ui_wdecor_create(NULL, "Hello", ui_wds_frame | ui_wds_titlebar,
+	    &wdecor);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rect.p0.x = 10;
+	rect.p0.y = 20;
+	rect.p1.x = 100;
+	rect.p1.y = 200;
+
+	ui_wdecor_set_rect(wdecor, &rect);
+	ui_wdecor_get_geom(wdecor, &geom);
+
+	PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
+
 	PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x);
 	PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y);
@@ -417,4 +502,46 @@
 	PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);
 
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
+
+	PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(46, geom.app_area_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);
+
+	ui_wdecor_destroy(wdecor);
+}
+
+/** ui_wdecor_get_geom() with ui_wds_decorated produces the correct geometry */
+PCUT_TEST(get_geom_decorated)
+{
+	ui_wdecor_t *wdecor;
+	gfx_rect_t rect;
+	ui_wdecor_geom_t geom;
+	errno_t rc;
+
+	rc = ui_wdecor_create(NULL, "Hello", ui_wds_decorated, &wdecor);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rect.p0.x = 10;
+	rect.p0.y = 20;
+	rect.p1.x = 100;
+	rect.p1.y = 200;
+
+	ui_wdecor_set_rect(wdecor, &rect);
+	ui_wdecor_get_geom(wdecor, &geom);
+
+	PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
+
+	PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);
+
 	PCUT_ASSERT_INT_EQUALS(75, geom.btn_close_rect.p0.x);
 	PCUT_ASSERT_INT_EQUALS(25, geom.btn_close_rect.p0.y);
@@ -441,5 +568,19 @@
 	arect.p1.y = 196;
 
-	ui_wdecor_rect_from_app(&arect, &rect);
+	ui_wdecor_rect_from_app(ui_wds_none, &arect, &rect);
+
+	PCUT_ASSERT_INT_EQUALS(14, rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(46, rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(96, rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(196, rect.p1.y);
+
+	ui_wdecor_rect_from_app(ui_wds_frame, &arect, &rect);
+
+	PCUT_ASSERT_INT_EQUALS(10, rect.p0.x);
+	PCUT_ASSERT_INT_EQUALS(42, rect.p0.y);
+	PCUT_ASSERT_INT_EQUALS(100, rect.p1.x);
+	PCUT_ASSERT_INT_EQUALS(200, rect.p1.y);
+
+	ui_wdecor_rect_from_app(ui_wds_decorated, &arect, &rect);
 
 	PCUT_ASSERT_INT_EQUALS(10, rect.p0.x);
@@ -447,4 +588,5 @@
 	PCUT_ASSERT_INT_EQUALS(100, rect.p1.x);
 	PCUT_ASSERT_INT_EQUALS(200, rect.p1.y);
+
 }
 
