zoom-manager: add zoom manager to simplify zoom control

This will give us a single place to deal with the mechanics of
how zoom works, and then our UI code can simply apply the value
as necessary.
This commit is contained in:
Christian Hergert
2016-09-28 17:13:24 -07:00
parent 4d48f98f6d
commit e6ecad548a
6 changed files with 577 additions and 0 deletions

View File

@ -47,6 +47,12 @@ test_model_filter_SOURCES = test-model-filter.c
test_model_filter_CFLAGS = $(test_ui_cflags)
test_model_filter_LDADD = $(test_ui_libs)
TESTS += test-zoom
TEST_PROGS += test-zoom
test_zoom_SOURCES = test-zoom.c
test_zoom_CFLAGS = $(test_ui_cflags)
test_zoom_LDADD = $(test_ui_libs)
endif
TEST_ENVIRONMENT = \

46
tests/test-zoom.c Normal file
View File

@ -0,0 +1,46 @@
#include "sp-zoom-manager.h"
static void
test_zoom_manager (void)
{
SpZoomManager *zoom;
zoom = sp_zoom_manager_new ();
g_assert_cmpfloat (1.0, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_in (zoom);
g_assert_cmpfloat (1.1, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_in (zoom);
g_assert_cmpfloat (1.2, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_in (zoom);
g_assert_cmpfloat (1.33, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_out (zoom);
g_assert_cmpfloat (1.2, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_out (zoom);
g_assert_cmpfloat (1.1, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_out (zoom);
g_assert_cmpfloat (1.0, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_out (zoom);
g_assert_cmpfloat (.9, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_out (zoom);
g_assert_cmpfloat (.8, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_out (zoom);
g_assert_cmpfloat (.67, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_out (zoom);
g_assert_cmpfloat (.5, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_out (zoom);
g_assert_cmpfloat (.3, ==, sp_zoom_manager_get_zoom (zoom));
sp_zoom_manager_zoom_out (zoom);
g_assert_cmpfloat (.3 / 2, ==, sp_zoom_manager_get_zoom (zoom));
g_object_unref (zoom);
}
gint
main (gint argc,
gchar *argv[])
{
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/ZoomManager/basic", test_zoom_manager);
return g_test_run ();
}