28#include <glib/gstdio.h>
37#ifndef ANSEL_TEST_SOURCE_DIR
38#define ANSEL_TEST_SOURCE_DIR "."
41#ifndef ANSEL_TEST_BINARY_DIR
42#define ANSEL_TEST_BINARY_DIR "."
122 "SELECT name FROM data.styles WHERE id > ?1 ORDER BY id DESC LIMIT 1", -1, &
stmt,
200 "SELECT version, iop_list FROM main.module_order WHERE imgid=?1", -1, &
stmt,
NULL);
206 fprintf(
stderr,
" %s pipe order for image %d:\n", label, imgid);
208 fprintf(
stderr,
" iop_list=%s\n", iop_list ? (
const char *)iop_list :
"(null)");
212 fprintf(
stderr,
" %s pipe order for image %d: no module_order row\n", label, imgid);
223 " (SELECT COUNT(*) FROM"
224 " (SELECT version, iop_list FROM main.module_order WHERE imgid=?1"
226 " SELECT version, iop_list FROM main.module_order WHERE imgid=?2))"
228 " (SELECT COUNT(*) FROM"
229 " (SELECT version, iop_list FROM main.module_order WHERE imgid=?2"
231 " SELECT version, iop_list FROM main.module_order WHERE imgid=?1))",
244 fprintf(
stderr,
" %s enabled state for image %d:\n", label, imgid);
249 "SELECT h.operation, h.multi_priority, IFNULL(h.multi_name, ''), h.enabled"
250 " FROM main.history h"
252 " AND h.num < (SELECT history_end FROM main.images WHERE id=?1)"
253 " AND h.num = (SELECT MAX(h2.num)"
254 " FROM main.history h2"
256 " AND h2.operation=h.operation"
257 " AND h2.multi_priority=h.multi_priority"
258 " AND h2.num < (SELECT history_end FROM main.images WHERE id=?1))"
259 " ORDER BY h.operation, h.multi_priority",
280 " SELECT h.operation, h.multi_priority, IFNULL(h.multi_name, '') AS multi_name, h.enabled"
281 " FROM main.history h"
283 " AND h.num < (SELECT history_end FROM main.images WHERE id=?1)"
284 " AND h.num = (SELECT MAX(h2.num)"
285 " FROM main.history h2"
287 " AND h2.operation=h.operation"
288 " AND h2.multi_priority=h.multi_priority"
289 " AND h2.num < (SELECT history_end FROM main.images WHERE id=?1))"
291 " SELECT h.operation, h.multi_priority, IFNULL(h.multi_name, '') AS multi_name, h.enabled"
292 " FROM main.history h"
294 " AND h.num < (SELECT history_end FROM main.images WHERE id=?2)"
295 " AND h.num = (SELECT MAX(h2.num)"
296 " FROM main.history h2"
298 " AND h2.operation=h.operation"
299 " AND h2.multi_priority=h.multi_priority"
300 " AND h2.num < (SELECT history_end FROM main.images WHERE id=?2))"
303 " (SELECT COUNT(*) FROM (SELECT * FROM actual EXCEPT SELECT * FROM expected))"
305 " (SELECT COUNT(*) FROM (SELECT * FROM expected EXCEPT SELECT * FROM actual))",
391 const char *entry =
NULL;
409 const char *style_file = (
const char *)l->data;
411 summary->style_file =
g_strdup(style_file);
413 if(summary->result &&
IS_NULL_PTR(summary->reason))
414 summary->reason =
g_strdup(
"unknown failure");
417 result |= summary->result;
425 printf(
"%s: %s", summary->style_file, summary->result ?
"FAILED" :
"PASSED");
427 printf(
" - %s", summary->reason);
449 "cameras.xml",
NULL);
487 :
"[SKIP] style scenario folder does not exist: %s\n",
525 "--library",
":memory:",
533 "--conf",
"write_sidecar_files=FALSE",
534 "--conf",
"plugins/lighttable/export/force_lcms2=FALSE",
static void error(char *msg)
const char * extension(dt_imageio_module_data_t *data)
void dt_conf_set_bool(const char *name, int val)
int32_t dt_image_import(const int32_t film_id, const char *filename, gboolean raise_signals)
int dt_init(int argc, char *argv[], const gboolean init_gui, const gboolean load_data)
sqlite3 * dt_database_get_sqlite3_global(void)
void dt_film_init(dt_film_t *film)
int dt_film_new(dt_film_t *film, const char *directory)
void dt_film_cleanup(dt_film_t *film)
int dt_history_load_and_apply(const int32_t imgid, gchar *filename, int history_only)
@ DT_HISTORY_MERGE_APPEND
#define IS_NULL_PTR(p)
C is way too permissive with !=, == and if(var) checks, which can mean too many things depending on w...
static void dt_free_gpointer(gpointer ptr)
g_free() one pointer, with the signature GDestroyNotify wants.
#define dt_free(ptr)
g_free() ptr and set it to NULL, skipping both if it is already NULL.
static const dt_aligned_pixel_simd_t value
int dt_styles_apply_to_image_merge(const char *name, const int style_id, const int32_t newimgid, const dt_history_merge_strategy_t mode, dt_hm_batch_state_t *batch)
int32_t dt_styles_get_id_by_name(const char *name)
void dt_styles_import_from_file(const char *style_path)
One-line scenario result printed after every style has run.
static int test_fail(const char *scenario, const char *message, char **failure_reason)
static int sql_int_for_bound_images(const char *query, const int32_t imgid_a, const int32_t imgid_b)
static char * prepare_test_datadir(const char *tmp_dir)
static int load_start_history(const char *scenario, const int32_t imgid, const char *start_xmp_path, const char *start_xmp_name, char **failure_reason)
static char * imported_style_name(const int before_import_style_id)
static char * test_image_dir
Run style-application scenarios from tests/styles.
static int compare_enabled_state(const char *scenario, const int32_t actual_imgid, const int32_t expected_imgid, char **failure_reason)
static int run_style_scenarios(const char *scenario_dir, const char *source_image_path)
#define ANSEL_TEST_SOURCE_DIR
static int32_t create_test_image(const char *source_image_path)
static int max_style_id(void)
static char * scenario_name_from_style_file(const char *filename)
static int compare_pipe_order(const char *scenario, const int32_t actual_imgid, const int32_t expected_imgid, char **failure_reason)
static int apply_style_to_image(const char *scenario, const char *style_name, const int32_t imgid, char **failure_reason)
static gboolean is_style_file(const char *filename)
static int run_style_scenario(const char *scenario_dir, const char *source_image_path, const char *style_file, char **failure_reason)
static int load_xmp_on_image(const char *scenario, const int32_t imgid, const char *xmp_path, char **failure_reason)
static void print_module_order_summary(const char *label, const int32_t imgid)
static void print_enabled_state_summary(const char *label, const int32_t imgid)
#define ANSEL_TEST_BINARY_DIR