diff --git a/libgimp/tests/meson.build b/libgimp/tests/meson.build index df2df54b82..4acee4638d 100644 --- a/libgimp/tests/meson.build +++ b/libgimp/tests/meson.build @@ -8,6 +8,7 @@ endif tests = [ 'color-parser', + 'constants', 'export-options', 'image', 'palette', diff --git a/libgimp/tests/test-constants.c b/libgimp/tests/test-constants.c new file mode 100644 index 0000000000..aba21fe2f2 --- /dev/null +++ b/libgimp/tests/test-constants.c @@ -0,0 +1,84 @@ +/* Test for constants in our Gobject Introspection API to make sure they are + * available. + */ + +static GimpValueArray * +gimp_c_test_run (GimpProcedure *procedure, + GimpRunMode run_mode, + GimpImage *image, + GimpDrawable **drawables, + GimpProcedureConfig *config, + gpointer run_data) +{ +/* The compiler could detect that comparision would always be true and always + * return a TRUE value. But then: it would already fail compiling if the + * constant is missing. + */ +#define GIMP_CONST_TEST(testname, test) \ + GIMP_TEST_START(testname); GIMP_TEST_END(test == test); + +/* The actual test here isn't that important, we just need to know it exists. */ +#define GIMP_CONST_STRING_TEST(testname, test) \ + GIMP_TEST_START(testname); GIMP_TEST_END(test != NULL); + + GIMP_CONST_TEST("GIMP_CHECK_SIZE", GIMP_CHECK_SIZE); + GIMP_CONST_TEST("GIMP_CHECK_SIZE_SM", GIMP_CHECK_SIZE_SM); + GIMP_CONST_TEST("GIMP_CHECK_DARK", GIMP_CHECK_DARK); + GIMP_CONST_TEST("GIMP_CHECK_LIGHT", GIMP_CHECK_LIGHT); + + GIMP_CONST_TEST("GIMP_MIN_IMAGE_SIZE", GIMP_MIN_IMAGE_SIZE); + GIMP_CONST_TEST("GIMP_MAX_IMAGE_SIZE", GIMP_MAX_IMAGE_SIZE); + GIMP_CONST_TEST("GIMP_MIN_RESOLUTION", GIMP_MIN_RESOLUTION); + GIMP_CONST_TEST("GIMP_MAX_RESOLUTION", GIMP_MAX_RESOLUTION); + GIMP_CONST_TEST("GIMP_MAX_MESIZE", GIMP_MAX_MEMSIZE); + + GIMP_CONST_TEST("GIMP_PARAM_NO_VALIDATE", GIMP_PARAM_NO_VALIDATE); + GIMP_CONST_TEST("GIMP_PARAM_DONT_SERIALIZE", GIMP_PARAM_DONT_SERIALIZE); + GIMP_CONST_TEST("GIMP_PARAM_FLAG_SHIFT", GIMP_PARAM_FLAG_SHIFT); + GIMP_CONST_TEST("GIMP_PARAM_STATIC_STRINGS", GIMP_PARAM_STATIC_STRINGS); + GIMP_CONST_TEST("GIMP_PARAM_READABLE", GIMP_PARAM_READABLE); + GIMP_CONST_TEST("GIMP_PARAM_WRITABLE", GIMP_PARAM_WRITABLE); + GIMP_CONST_TEST("GIMP_PARAM_READWRITE", GIMP_PARAM_READWRITE); + + GIMP_CONST_TEST("GIMP_PARASITE_PERSISTENT", GIMP_PARASITE_PERSISTENT); + GIMP_CONST_TEST("GIMP_PARASITE_UNDOABLE", GIMP_PARASITE_UNDOABLE); + GIMP_CONST_TEST("GIMP_PARASITE_ATTACH_PARENT", GIMP_PARASITE_ATTACH_PARENT); + GIMP_CONST_TEST("GIMP_PARASITE_PARENT_PERSISTENT", GIMP_PARASITE_PARENT_PERSISTENT); + GIMP_CONST_TEST("GIMP_PARASITE_PARENT_UNDOABLE", GIMP_PARASITE_PARENT_UNDOABLE); + GIMP_CONST_TEST("GIMP_PARASITE_ATTACH_GRANDPARENT", GIMP_PARASITE_ATTACH_GRANDPARENT); + GIMP_CONST_TEST("GIMP_PARASITE_GRANDPARENT_PERSISTENT", GIMP_PARASITE_GRANDPARENT_PERSISTENT); + GIMP_CONST_TEST("GIMP_PARASITE_GRANDPARENT_UNDOABLE", GIMP_PARASITE_GRANDPARENT_UNDOABLE); + + /* FIXME: libgimpbase/gimpparasiteio.h is not listed in gimpbase.h, is that + * an oversight, or does it need to be included in gimpbase-private.h. + * It seems that pixpipe is only handled in app, but this const, a struct and + * several functions are available through Gobject Introspection so we + * can't just remove it from the API. + * + GIMP_CONST_TEST("GIMP_PIXPIPE_MAXDIM", GIMP_PIXPIPE_MAXDIM); + */ + + GIMP_CONST_TEST("GIMP_MAJOR_VERSION", GIMP_MAJOR_VERSION); + GIMP_CONST_TEST("GIMP_MINOR_VERSION", GIMP_MINOR_VERSION); + GIMP_CONST_TEST("GIMP_MICRO_VERSION", GIMP_MICRO_VERSION); + GIMP_CONST_STRING_TEST("GIMP_VERSION", GIMP_VERSION); + GIMP_CONST_STRING_TEST("GIMP_API_VERSION", GIMP_API_VERSION); + + GIMP_CONST_TEST("GIMP_CONFIG_PARAM_SERIALIZE", GIMP_CONFIG_PARAM_SERIALIZE); + GIMP_CONST_TEST("GIMP_CONFIG_PARAM_AGGREGATE", GIMP_CONFIG_PARAM_AGGREGATE); + GIMP_CONST_TEST("GIMP_CONFIG_PARAM_RESTART", GIMP_CONFIG_PARAM_RESTART); + GIMP_CONST_TEST("GIMP_CONFIG_PARAM_CONFIRM", GIMP_CONFIG_PARAM_CONFIRM); + GIMP_CONST_TEST("GIMP_CONFIG_PARAM_DEFAULTS", GIMP_CONFIG_PARAM_DEFAULTS); + GIMP_CONST_TEST("GIMP_CONFIG_PARAM_IGNORE", GIMP_CONFIG_PARAM_IGNORE); + GIMP_CONST_TEST("GIMP_CONFIG_PARAM_DONT_COMPARE", GIMP_CONFIG_PARAM_DONT_COMPARE); + GIMP_CONST_TEST("GIMP_CONFIG_PARAM_FLAG_SHIFT", GIMP_CONFIG_PARAM_FLAG_SHIFT); + GIMP_CONST_TEST("GIMP_CONFIG_PARAM_FLAGS", GIMP_CONFIG_PARAM_FLAGS); + + /* FIXME This resides in libgimpmodule/gimpmodule.h which isn't referenced + * from libgimp.h. We can add an include in c-test-header.c, but should we? + * + GIMP_CONST_TEST("GIMP_MODULE_ABI_VERSION", GIMP_MODULE_ABI_VERSION); + */ + + GIMP_TEST_RETURN +} diff --git a/libgimp/tests/test-constants.py b/libgimp/tests/test-constants.py new file mode 100644 index 0000000000..f9f2b112cf --- /dev/null +++ b/libgimp/tests/test-constants.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 + +# Test for the existence of constants that are part of our public API and +# thus should be available using gobject introspection. + +# 1. Defined in libgimpbase + +# from libgimpbase/gimpchecks.h + +gimp_assert('Gimp.CHECK_SIZE', hasattr(Gimp, "CHECK_SIZE")) +gimp_assert('Gimp.CHECK_SIZE_SM', hasattr(Gimp, "CHECK_SIZE_SM")) +gimp_assert('Gimp.CHECK_DARK', hasattr(Gimp, "CHECK_DARK")) +gimp_assert('Gimp.CHECK_LIGHT', hasattr(Gimp, "CHECK_LIGHT")) + + +# from libgimpbase/gimplimits.h + +gimp_assert('Gimp.MIN_IMAGE_SIZE', hasattr(Gimp, "MIN_IMAGE_SIZE")) +gimp_assert('Gimp.MAX_IMAGE_SIZE', hasattr(Gimp, "MAX_IMAGE_SIZE")) +gimp_assert('Gimp.MIN_RESOLUTION', hasattr(Gimp, "MIN_RESOLUTION")) +gimp_assert('Gimp.MAX_RESOLUTION', hasattr(Gimp, "MAX_RESOLUTION")) +gimp_assert('Gimp.MAX_MEMSIZE', hasattr(Gimp, "MAX_MEMSIZE")) + + +# from libgimpbase/gimpparamspecs.h + +gimp_assert('Gimp.PARAM_NO_VALIDATE', hasattr(Gimp, "PARAM_NO_VALIDATE")) +gimp_assert('Gimp.PARAM_DONT_SERIALIZE', hasattr(Gimp, "PARAM_DONT_SERIALIZE")) +gimp_assert('Gimp.PARAM_FLAG_SHIFT', hasattr(Gimp, "PARAM_FLAG_SHIFT")) +gimp_assert('Gimp.PARAM_STATIC_STRINGS', hasattr(Gimp, "PARAM_STATIC_STRINGS")) +gimp_assert('Gimp.PARAM_READABLE', hasattr(Gimp, "PARAM_READABLE")) +gimp_assert('Gimp.PARAM_WRITABLE', hasattr(Gimp, "PARAM_WRITABLE")) +gimp_assert('Gimp.PARAM_READWRITE', hasattr(Gimp, "PARAM_READWRITE")) + + +# from libgimpbase/gimpparasite.h + +gimp_assert('Gimp.PARASITE_PERSISTENT', hasattr(Gimp, "PARASITE_PERSISTENT")) +gimp_assert('Gimp.PARASITE_UNDOABLE', hasattr(Gimp, "PARASITE_UNDOABLE")) +gimp_assert('Gimp.PARASITE_ATTACH_PARENT', hasattr(Gimp, "PARASITE_ATTACH_PARENT")) +gimp_assert('Gimp.PARASITE_PARENT_PERSISTENT', hasattr(Gimp, "PARASITE_PARENT_PERSISTENT")) +gimp_assert('Gimp.PARASITE_PARENT_UNDOABLE', hasattr(Gimp, "PARASITE_PARENT_UNDOABLE")) +gimp_assert('Gimp.PARASITE_ATTACH_GRANDPARENT', hasattr(Gimp, "PARASITE_ATTACH_GRANDPARENT")) +gimp_assert('Gimp.PARASITE_GRANDPARENT_PERSISTENT', hasattr(Gimp, "PARASITE_GRANDPARENT_PERSISTENT")) +gimp_assert('Gimp.PARASITE_GRANDPARENT_UNDOABLE', hasattr(Gimp, "PARASITE_GRANDPARENT_UNDOABLE")) + + +# from libgimpbase/gimpparasiteio.h + +gimp_assert('Gimp.PIXPIPE_MAXDIM', hasattr(Gimp, "PIXPIPE_MAXDIM")) + + +# from libgimpbase/gimpversion.h.in + +gimp_assert('Gimp.MAJOR_VERSION', hasattr(Gimp, "MAJOR_VERSION")) +gimp_assert('Gimp.MINOR_VERSION', hasattr(Gimp, "MINOR_VERSION")) +gimp_assert('Gimp.MICRO_VERSION', hasattr(Gimp, "MICRO_VERSION")) +gimp_assert('Gimp.VERSION', hasattr(Gimp, "VERSION")) +gimp_assert('Gimp.API_VERSION', hasattr(Gimp, "API_VERSION")) + + +# 2. Defined in libgimpconfig + +# from libgimpconfig/gimpconfig-params.h + +gimp_assert('Gimp.CONFIG_PARAM_SERIALIZE', hasattr(Gimp, "CONFIG_PARAM_SERIALIZE")) +gimp_assert('Gimp.CONFIG_PARAM_AGGREGATE', hasattr(Gimp, "CONFIG_PARAM_AGGREGATE")) +gimp_assert('Gimp.CONFIG_PARAM_RESTART', hasattr(Gimp, "CONFIG_PARAM_RESTART")) +gimp_assert('Gimp.CONFIG_PARAM_CONFIRM', hasattr(Gimp, "CONFIG_PARAM_CONFIRM")) +gimp_assert('Gimp.CONFIG_PARAM_DEFAULTS', hasattr(Gimp, "CONFIG_PARAM_DEFAULTS")) +gimp_assert('Gimp.CONFIG_PARAM_IGNORE', hasattr(Gimp, "CONFIG_PARAM_IGNORE")) +gimp_assert('Gimp.CONFIG_PARAM_DONT_COMPARE', hasattr(Gimp, "CONFIG_PARAM_DONT_COMPARE")) +gimp_assert('Gimp.CONFIG_PARAM_FLAG_SHIFT', hasattr(Gimp, "CONFIG_PARAM_FLAG_SHIFT")) +gimp_assert('Gimp.CONFIG_PARAM_FLAGS', hasattr(Gimp, "CONFIG_PARAM_FLAGS")) + + +# 3. Defined in libgimpmodule + +# from libgimpmodule/gimpmodule.h + +gimp_assert('Gimp.MODULE_ABI_VERSION', hasattr(Gimp, "MODULE_ABI_VERSION"))