Files
gimp/libgimp/tests/test-palette.c
Jehan 94853968b3 libgimp: also update unit testing for GimpColorArray.
Making sure not only that the PDB passes correctly the number of colors, but
taking one random color in the array and verifying it is correct.
2024-04-18 16:00:42 +02:00

102 lines
4.3 KiB
C

#define GIMP_TEST_PALETTE "Bears"
#define GIMP_TEST_PALETTE_SIZE 256
#define GIMP_TEST_COLOR_IDX 3
#define GIMP_TEST_COLOR_FORMAT "R'G'B' u8"
#define GIMP_TEST_COLOR_R_U8 72
#define GIMP_TEST_COLOR_G_U8 56
#define GIMP_TEST_COLOR_B_U8 56
static GimpValueArray *
gimp_c_test_run (GimpProcedure *procedure,
GimpRunMode run_mode,
GimpImage *image,
gint n_drawables,
GimpDrawable **drawables,
GimpProcedureConfig *config,
gpointer run_data)
{
GimpPalette *palette;
GimpPalette *palette2;
GeglColor **colors;
gint n_colors;
const Babl *format;
GeglColor *color;
guint8 rgb[3];
GimpValueArray *retvals;
GIMP_TEST_START("gimp_palette_get_by_name()")
palette = gimp_palette_get_by_name (GIMP_TEST_PALETTE);
GIMP_TEST_END(GIMP_IS_PALETTE (palette))
GIMP_TEST_START("gimp_palette_get_by_name() is unique")
palette2 = gimp_palette_get_by_name (GIMP_TEST_PALETTE);
GIMP_TEST_END(GIMP_IS_PALETTE (palette2) && palette == palette2)
GIMP_TEST_START("gimp_palette_get_color_count()")
n_colors = gimp_palette_get_color_count (palette);
GIMP_TEST_END(n_colors == GIMP_TEST_PALETTE_SIZE)
GIMP_TEST_START("gimp_palette_get_colors()")
colors = gimp_palette_get_colors (palette);
GIMP_TEST_END(colors != NULL && gimp_color_array_get_length (colors) == GIMP_TEST_PALETTE_SIZE)
GIMP_TEST_START("Checking fourth palette color's format")
color = colors[GIMP_TEST_COLOR_IDX];
format = gegl_color_get_format (color);
GIMP_TEST_END(format == babl_format (GIMP_TEST_COLOR_FORMAT))
GIMP_TEST_START("Checking fourth palette color's RGB components")
gegl_color_get_pixel (color, format, rgb);
GIMP_TEST_END(rgb[0] == GIMP_TEST_COLOR_R_U8 && rgb[1] == GIMP_TEST_COLOR_G_U8 && rgb[2] == GIMP_TEST_COLOR_B_U8)
/* Run the same tests through PDB. */
GIMP_TEST_START("gimp-palette-get-by-name")
retvals = gimp_procedure_run (gimp_pdb_lookup_procedure (gimp_get_pdb (), "gimp-palette-get-by-name"),
"name", GIMP_TEST_PALETTE, NULL);
GIMP_TEST_END(g_value_get_enum (gimp_value_array_index (retvals, 0)) == GIMP_PDB_SUCCESS)
GIMP_TEST_START("gimp-palette-get-by-name and gimp_palette_get_by_name() get identical result")
palette2 = g_value_get_object (gimp_value_array_index(retvals, 1));
GIMP_TEST_END(GIMP_IS_PALETTE (palette2) && palette == palette2)
gimp_value_array_unref (retvals);
GIMP_TEST_START("gimp-palette-get-color-count")
retvals = gimp_procedure_run (gimp_pdb_lookup_procedure (gimp_get_pdb (), "gimp-palette-get-color-count"),
"palette", palette, NULL);
GIMP_TEST_END(g_value_get_enum (gimp_value_array_index (retvals, 0)) == GIMP_PDB_SUCCESS)
GIMP_TEST_START("gimp-palette-get-color-count returns the right number of colors")
n_colors = g_value_get_int (gimp_value_array_index (retvals, 1));
GIMP_TEST_END(n_colors == GIMP_TEST_PALETTE_SIZE)
gimp_value_array_unref (retvals);
GIMP_TEST_START("gimp-palette-get-colors")
retvals = gimp_procedure_run (gimp_pdb_lookup_procedure (gimp_get_pdb (), "gimp-palette-get-colors"),
"palette", palette, NULL);
GIMP_TEST_END(g_value_get_enum (gimp_value_array_index (retvals, 0)) == GIMP_PDB_SUCCESS)
GIMP_TEST_START("gimp-palette-get-colors returns GimpColorArray")
colors = g_value_get_boxed (gimp_value_array_index (retvals, 1));
GIMP_TEST_END(colors != NULL && gimp_color_array_get_length (colors) == GIMP_TEST_PALETTE_SIZE)
GIMP_TEST_START("gimp_value_array_get_color_array()")
colors = gimp_value_array_get_color_array (retvals, 1);
GIMP_TEST_END(colors != NULL && gimp_color_array_get_length (colors) == GIMP_TEST_PALETTE_SIZE)
GIMP_TEST_START("Checking fourth palette color's format (returned by PDB)")
color = colors[GIMP_TEST_COLOR_IDX];
format = gegl_color_get_format (color);
GIMP_TEST_END(format == babl_format (GIMP_TEST_COLOR_FORMAT))
GIMP_TEST_START("Checking fourth palette color's RGB values (returned by PDB)")
gegl_color_get_pixel (color, format, rgb);
GIMP_TEST_END(rgb[0] == GIMP_TEST_COLOR_R_U8 && rgb[1] == GIMP_TEST_COLOR_G_U8 && rgb[2] == GIMP_TEST_COLOR_B_U8)
gimp_value_array_unref (retvals);
GIMP_TEST_RETURN
}