From 601a2f41d5f927ebe9c862d22ed8f358b5d704e2 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 29 Jul 2024 16:05:02 +0200 Subject: [PATCH] add test for option descriptors and refactor --- src/kds_s2000w_option_descriptors.c | 531 +++++++++--------- tests/CMakeLists.txt | 11 + tests/kds_s2000w_option_descriptor_tests.c | 420 ++++++++++++++ tests/kds_s2000w_option_descriptor_tests.h | 34 ++ .../kds_s2000w_option_descriptor_tests_run.c | 32 ++ 5 files changed, 778 insertions(+), 250 deletions(-) create mode 100644 tests/kds_s2000w_option_descriptor_tests.c create mode 100644 tests/kds_s2000w_option_descriptor_tests.h create mode 100644 tests/kds_s2000w_option_descriptor_tests_run.c diff --git a/src/kds_s2000w_option_descriptors.c b/src/kds_s2000w_option_descriptors.c index a2bb6bd..d2ce7b4 100644 --- a/src/kds_s2000w_option_descriptors.c +++ b/src/kds_s2000w_option_descriptors.c @@ -28,16 +28,17 @@ SANE_String_Const* constraint_scan_source = NULL; SANE_Option_Descriptor _kds_s2000w_option_descriptor_standard_group() { debug_printf(ALL, "kds_s2000w_option_descriptor_standard_group"); - SANE_Option_Descriptor descriptor; - descriptor.name = SANE_NAME_STANDARD; - descriptor.title = SANE_TITLE_STANDARD; - descriptor.desc = SANE_DESC_STANDARD; - descriptor.unit = SANE_UNIT_NONE; - descriptor.cap = SANE_CAP_SOFT_DETECT; - descriptor.constraint_type = SANE_CONSTRAINT_NONE; - descriptor.type = SANE_TYPE_GROUP; - descriptor.size = 0; + SANE_Option_Descriptor descriptor = { + SANE_NAME_STANDARD, + SANE_TITLE_STANDARD, + SANE_DESC_STANDARD, + SANE_TYPE_GROUP, + SANE_UNIT_NONE, + 0, + SANE_CAP_SOFT_DETECT, + SANE_CONSTRAINT_NONE + }; return descriptor; } @@ -45,16 +46,16 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_standard_group() SANE_Option_Descriptor _kds_s2000w_option_descriptor_geometry_group() { debug_printf(ALL, "kds_s2000w_option_descriptor_scan_area_group"); - SANE_Option_Descriptor descriptor; - - descriptor.name = SANE_NAME_GEOMETRY; - descriptor.title = SANE_TITLE_GEOMETRY; - descriptor.desc = SANE_DESC_GEOMETRY; - descriptor.unit = SANE_UNIT_NONE; - descriptor.cap = SANE_CAP_SOFT_DETECT; - descriptor.constraint_type = SANE_CONSTRAINT_NONE; - descriptor.type = SANE_TYPE_GROUP; - descriptor.size = 0; + SANE_Option_Descriptor descriptor = { + SANE_NAME_GEOMETRY, + SANE_TITLE_GEOMETRY, + SANE_DESC_GEOMETRY, + SANE_TYPE_GROUP, + SANE_UNIT_NONE, + 0, + SANE_CAP_SOFT_DETECT, + SANE_CONSTRAINT_NONE + }; return descriptor; } @@ -62,16 +63,17 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_geometry_group() SANE_Option_Descriptor _kds_s2000w_option_descriptor_num_options() { debug_printf(ALL, "kds_s2000w_option_descriptor_num_options"); - SANE_Option_Descriptor descriptor; - descriptor.name = SANE_NAME_NUM_OPTIONS; - descriptor.title = SANE_TITLE_NUM_OPTIONS; - descriptor.desc = SANE_DESC_NUM_OPTIONS; - descriptor.unit = SANE_UNIT_NONE; - descriptor.cap = SANE_CAP_SOFT_DETECT; - descriptor.constraint_type = SANE_CONSTRAINT_NONE; - descriptor.type = SANE_TYPE_INT; - descriptor.size = sizeof(SANE_Int); + SANE_Option_Descriptor descriptor = { + SANE_NAME_NUM_OPTIONS, + SANE_TITLE_NUM_OPTIONS, + SANE_DESC_NUM_OPTIONS, + SANE_TYPE_INT, + SANE_UNIT_NONE, + sizeof(SANE_Int), + SANE_CAP_SOFT_DETECT, + SANE_CONSTRAINT_NONE + }; return descriptor; } @@ -79,17 +81,18 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_num_options() SANE_Option_Descriptor _kds_s2000w_option_descriptor_dpi() { debug_printf(ALL, "kds_s2000w_option_descriptor_dpi"); - SANE_Option_Descriptor descriptor; - - descriptor.name = SANE_NAME_SCAN_RESOLUTION; - descriptor.title = SANE_TITLE_SCAN_RESOLUTION; - descriptor.desc = SANE_DESC_SCAN_RESOLUTION; - descriptor.unit = SANE_UNIT_DPI; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_WORD_LIST; - descriptor.constraint.word_list = constraint_dpi; - descriptor.type = SANE_TYPE_INT; - descriptor.size = sizeof(SANE_Int); + + SANE_Option_Descriptor descriptor = { + SANE_NAME_SCAN_RESOLUTION, + SANE_TITLE_SCAN_RESOLUTION, + SANE_DESC_SCAN_RESOLUTION, + SANE_TYPE_INT, + SANE_UNIT_DPI, + sizeof(SANE_Int), + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_WORD_LIST, + {.word_list = constraint_dpi} + }; return descriptor; } @@ -97,21 +100,23 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_dpi() SANE_Option_Descriptor _kds_s2000w_option_descriptor_scanside() { debug_printf(ALL, "kds_s2000w_option_descriptor_scanside"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "scanside"; - descriptor.title = "Duplex Mode"; - descriptor.desc = "Duplex Mode"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_STRING_LIST; - constraint_scanside = malloc(sizeof(char*) * 3); + + constraint_scanside = malloc(sizeof(SANE_String_Const*) * 3); constraint_scanside[0] = "Simplex"; constraint_scanside[1] = "Duplex"; constraint_scanside[2] = NULL; - descriptor.constraint.string_list = constraint_scanside; - descriptor.type = SANE_TYPE_STRING; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_String) * 50; + + SANE_Option_Descriptor descriptor = { + "scanside", + "Duplex Mode", + "Duplex Mode", + SANE_TYPE_STRING, + SANE_UNIT_NONE, + sizeof(SANE_String_Const*) * 3, + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_STRING_LIST, + {.string_list = constraint_scanside} + }; return descriptor; } @@ -119,22 +124,24 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_scanside() SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_mode() { debug_printf(ALL, "kds_s2000w_option_descriptor_color_mode"); - SANE_Option_Descriptor descriptor; - - descriptor.name = SANE_NAME_SCAN_MODE; - descriptor.title = SANE_TITLE_SCAN_MODE; - descriptor.desc = SANE_DESC_SCAN_MODE; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_STRING_LIST; - constraint_colormode = malloc(sizeof(char*) * 4); + + constraint_colormode = malloc(sizeof(SANE_String_Const*) * 4); constraint_colormode[0] = "Color"; constraint_colormode[1] = "Gray"; constraint_colormode[2] = "BW"; constraint_colormode[3] = NULL; - descriptor.constraint.string_list = constraint_colormode; - descriptor.type = SANE_TYPE_STRING; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_String) * 50; + + SANE_Option_Descriptor descriptor = { + SANE_NAME_SCAN_MODE, + SANE_TITLE_SCAN_MODE, + SANE_DESC_SCAN_MODE, + SANE_TYPE_STRING, + SANE_UNIT_NONE, + sizeof(SANE_String_Const*) * 4, + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_STRING_LIST, + {.string_list = constraint_colormode} + }; return descriptor; } @@ -142,16 +149,17 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_mode() SANE_Option_Descriptor _kds_s2000w_option_descriptor_skip_blank_pages() { debug_printf(ALL, "kds_s2000w_option_descriptor_skip_blank_pages"); - SANE_Option_Descriptor descriptor; - descriptor.name = "skip-blank-pages"; - descriptor.title = "Blank Image Deletion Mode"; - descriptor.desc = "Blank Image Deletion Mode"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_NONE; - descriptor.type = SANE_TYPE_BOOL; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_Bool); + SANE_Option_Descriptor descriptor = { + "skip-blank-pages", + "Blank Image Deletion Mode", + "Blank Image Deletion Mode", + SANE_TYPE_BOOL, + SANE_UNIT_NONE, + sizeof(SANE_Bool), + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_NONE + }; return descriptor; } @@ -159,14 +167,8 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_skip_blank_pages() SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_drop() { debug_printf(ALL, "kds_s2000w_option_descriptor_color_drop"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "colordrop"; - descriptor.title = "colordrop"; - descriptor.desc = "colordrop"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_STRING_LIST; - constraint_colordrop = malloc(sizeof(char*) * 9); + + constraint_colordrop = malloc(sizeof(SANE_String_Const*) * 9); constraint_colordrop[0] = "None"; constraint_colordrop[1] = "Red"; constraint_colordrop[2] = "Green"; @@ -176,10 +178,18 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_drop() constraint_colordrop[6] = "Predominant"; constraint_colordrop[7] = "Multiple"; constraint_colordrop[8] = NULL; - descriptor.constraint.string_list = constraint_colordrop; - descriptor.type = SANE_TYPE_STRING; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_String) * 50; + + SANE_Option_Descriptor descriptor = { + "colordrop", + "colordrop", + "colordrop", + SANE_TYPE_STRING, + SANE_UNIT_NONE, + sizeof(SANE_String_Const*) * 9, + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_STRING_LIST, + {.string_list = constraint_colordrop} + }; return descriptor; } @@ -187,17 +197,18 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_drop() SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_drop_out_aggressiveness() { debug_printf(ALL, "kds_s2000w_option_descriptor_color_drop_out_aggressiveness"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "colordropoutaggressiveness"; - descriptor.title = "colordropoutaggressiveness"; - descriptor.desc = "colordropoutaggressiveness"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_RANGE; - descriptor.constraint.range = &constraint_color_drop_out_aggressiveness_range; - descriptor.type = SANE_TYPE_INT; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_Int); + + SANE_Option_Descriptor descriptor = { + "colordropoutaggressiveness", + "colordropoutaggressiveness", + "colordropoutaggressiveness", + SANE_TYPE_INT, + SANE_UNIT_NONE, + sizeof(SANE_Int), + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_RANGE, + {.range = &constraint_color_drop_out_aggressiveness_range} + }; return descriptor; } @@ -205,21 +216,23 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_drop_out_aggressivene SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_auto_brightness_mode() { debug_printf(ALL, "kds_s2000w_option_descriptor_color_auto_brightness_mode"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "colorautobrightnessmode"; - descriptor.title = "colorautobrightnessmode"; - descriptor.desc = "colorautobrightnessmode"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_STRING_LIST; - constraint_color_auto_brightnessmode = malloc(sizeof(char*) * 3); + + constraint_color_auto_brightnessmode = malloc(sizeof(SANE_String_Const*) * 3); constraint_color_auto_brightnessmode[0] = "None"; constraint_color_auto_brightnessmode[1] = "Automatic"; constraint_color_auto_brightnessmode[2] = NULL; - descriptor.constraint.string_list = constraint_color_auto_brightnessmode; - descriptor.type = SANE_TYPE_STRING; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_String) * 50; + + SANE_Option_Descriptor descriptor = { + "colorautobrightnessmode", + "colorautobrightnessmode", + "colorautobrightnessmode", + SANE_TYPE_STRING, + SANE_UNIT_NONE, + sizeof(SANE_String_Const*) * 3, + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_STRING_LIST, + {.string_list = constraint_color_auto_brightnessmode} + }; return descriptor; } @@ -227,23 +240,25 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_auto_brightness_mode( SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_balance_mode() { debug_printf(ALL, "kds_s2000w_option_descriptor_color_balance_mode"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "colorbalancemode"; - descriptor.title = "colorbalancemode"; - descriptor.desc = "colorbalancemode"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_STRING_LIST; - constraint_color_balance_mode = malloc(sizeof(char*) * 5); + + constraint_color_balance_mode = malloc(sizeof(SANE_String_Const*) * 5); constraint_color_balance_mode[0] = "None"; constraint_color_balance_mode[1] = "Manual"; constraint_color_balance_mode[2] = "Automatic"; constraint_color_balance_mode[3] = "AutomaticAdvanced"; constraint_color_balance_mode[4] = NULL; - descriptor.constraint.string_list = constraint_color_balance_mode; - descriptor.type = SANE_TYPE_STRING; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_String) * 50; + + SANE_Option_Descriptor descriptor = { + "colorbalancemode", + "colorbalancemode", + "colorbalancemode", + SANE_TYPE_STRING, + SANE_UNIT_NONE, + sizeof(SANE_String_Const*) * 5, + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_STRING_LIST, + {.string_list = constraint_color_balance_mode} + }; return descriptor; } @@ -251,17 +266,18 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_balance_mode() SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_balancea_agressiveness() { debug_printf(ALL, "kds_s2000w_option_descriptor_color_balancea_agressiveness"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "colorbalanceaggressiveness"; - descriptor.title = "colorbalanceaggressiveness"; - descriptor.desc = "colorbalanceaggressiveness"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_RANGE; - descriptor.constraint.range = &constraint_color_balance_aggressiveness; - descriptor.type = SANE_TYPE_INT; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_Int); + + SANE_Option_Descriptor descriptor = { + "colorbalanceaggressiveness", + "colorbalanceaggressiveness", + "colorbalanceaggressiveness", + SANE_TYPE_INT, + SANE_UNIT_NONE, + sizeof(SANE_Int), + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_RANGE, + {.range = &constraint_color_balance_aggressiveness} + }; return descriptor; } @@ -269,17 +285,18 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_balancea_agressivenes SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_balance_red() { debug_printf(ALL, "kds_s2000w_option_descriptor_color_balance_red"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "colorbalancered"; - descriptor.title = "colorbalancered"; - descriptor.desc = "colorbalancered"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_RANGE; - descriptor.constraint.range = &constraint_color_balance_red; - descriptor.type = SANE_TYPE_INT; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_Int); + + SANE_Option_Descriptor descriptor = { + "colorbalancered", + "colorbalancered", + "colorbalancered", + SANE_TYPE_INT, + SANE_UNIT_NONE, + sizeof(SANE_Int), + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_RANGE, + {.range = &constraint_color_balance_red} + }; return descriptor; } @@ -287,17 +304,18 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_balance_red() SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_balance_green() { debug_printf(ALL, "kds_s2000w_option_descriptor_color_balance_green"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "colorbalancegreen"; - descriptor.title = "colorbalancegreen"; - descriptor.desc = "colorbalancegreen"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_RANGE; - descriptor.constraint.range = &constraint_color_balance_green; - descriptor.type = SANE_TYPE_INT; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_Int); + + SANE_Option_Descriptor descriptor = { + "colorbalancegreen", + "colorbalancegreen", + "colorbalancegreen", + SANE_TYPE_INT, + SANE_UNIT_NONE, + sizeof(SANE_Int), + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_RANGE, + {.range = &constraint_color_balance_green} + }; return descriptor; } @@ -305,17 +323,18 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_balance_green() SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_balance_blue() { debug_printf(ALL, "kds_s2000w_option_descriptor_color_balance_blue"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "color-balance-blue"; - descriptor.title = "colorbalanceblue"; - descriptor.desc = "colorbalanceblue"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_RANGE; - descriptor.constraint.range = &constraint_color_balance_blue; - descriptor.type = SANE_TYPE_INT; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_Int); + + SANE_Option_Descriptor descriptor = { + "colorbalanceblue", + "colorbalanceblue", + "colorbalanceblue", + SANE_TYPE_INT, + SANE_UNIT_NONE, + sizeof(SANE_Int), + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_RANGE, + {.range = &constraint_color_balance_blue} + }; return descriptor; } @@ -323,22 +342,24 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_color_balance_blue() SANE_Option_Descriptor _kds_s2000w_option_descriptor_foreground_boldness_mode() { debug_printf(ALL, "kds_s2000w_option_descriptor_foreground_boldness_mode"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "foreground-boldness-mode"; - descriptor.title = "Foreground Boldness Mode"; - descriptor.desc = "Foreground Boldness Mode"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_STRING_LIST; - constraint_foreground_boldness_mode = malloc(sizeof(char*) * 4); + + constraint_foreground_boldness_mode = malloc(sizeof(SANE_String_Const*) * 4); constraint_foreground_boldness_mode[0] = "None"; constraint_foreground_boldness_mode[1] = "AutomaticAdvanced"; constraint_foreground_boldness_mode[2] = "Automatic"; constraint_foreground_boldness_mode[3] = NULL; - descriptor.constraint.string_list = constraint_foreground_boldness_mode; - descriptor.type = SANE_TYPE_STRING; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_String) * 50; + + SANE_Option_Descriptor descriptor = { + "foreground-boldness-mode", + "Foreground Boldness Mode", + "Foreground Boldness Mode", + SANE_TYPE_STRING, + SANE_UNIT_NONE, + sizeof(SANE_String_Const*) * 4, + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_STRING_LIST, + {.string_list = constraint_foreground_boldness_mode} + }; return descriptor; } @@ -346,17 +367,18 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_foreground_boldness_mode() SANE_Option_Descriptor _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness() { debug_printf(ALL, "kds_s2000w_option_descriptor_foreground_boldness_aggressiveness"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "foreground-boldness-aggressiveness"; - descriptor.title = "Foreground Boldness Mode"; - descriptor.desc = "Foreground Boldness Mode"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_RANGE; - descriptor.constraint.range = &constraint_foreground_boldness_aggressiveness; - descriptor.type = SANE_TYPE_INT; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_Int); + + SANE_Option_Descriptor descriptor = { + "foreground-boldness-aggressiveness", + "Foreground Boldness Aggressiveness", + "Foreground Boldness Aggressiveness", + SANE_TYPE_INT, + SANE_UNIT_NONE, + sizeof(SANE_Int), + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_RANGE, + {.range = &constraint_foreground_boldness_aggressiveness} + }; return descriptor; } @@ -364,22 +386,24 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_foreground_boldness_aggress SANE_Option_Descriptor _kds_s2000w_option_descriptor_background_smoothing_mode() { debug_printf(ALL, "kds_s2000w_option_descriptor_background_smoothing_mode"); - SANE_Option_Descriptor descriptor; - descriptor.name = "background-smoothing-mode"; - descriptor.title = "Background Smoothing Mode"; - descriptor.desc = "Background Smoothing Mode"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_STRING_LIST; constraint_background_smoothing_mode = malloc(sizeof(char*) * 4); constraint_background_smoothing_mode[0] = "None"; constraint_background_smoothing_mode[1] = "AutomaticAdvanced"; constraint_background_smoothing_mode[2] = "Automatic"; constraint_background_smoothing_mode[3] = NULL; - descriptor.constraint.string_list = constraint_background_smoothing_mode; - descriptor.type = SANE_TYPE_STRING; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_String) * 50; + + SANE_Option_Descriptor descriptor = { + "background-smoothing-mode", + "Background Smoothing Mode", + "Background Smoothing Mode", + SANE_TYPE_STRING, + SANE_UNIT_NONE, + sizeof(SANE_String_Const*) * 4, + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_STRING_LIST, + {.string_list = constraint_background_smoothing_mode} + }; return descriptor; } @@ -387,17 +411,18 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_background_smoothing_mode() SANE_Option_Descriptor _kds_s2000w_option_descriptor_background_smoothing_aggressiveness() { debug_printf(ALL, "kds_s2000w_option_descriptor_background_smoothing_aggressiveness"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "background-smoothing-aggressiveness"; - descriptor.title = "Background Smoothing Aggressivenes"; - descriptor.desc = "Background Smoothing Aggressivenes"; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_RANGE; - descriptor.constraint.range = &constraint_background_smoothing_aggressivness; - descriptor.type = SANE_TYPE_INT; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_Int); + + SANE_Option_Descriptor descriptor = { + "background-smoothing-aggressiveness", + "Background Smoothing Aggressivenes", + "Background Smoothing Aggressivenes", + SANE_TYPE_INT, + SANE_UNIT_NONE, + sizeof(SANE_Int), + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_RANGE, + {.range = &constraint_background_smoothing_aggressivness} + }; return descriptor; } @@ -405,17 +430,18 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_background_smoothing_aggres SANE_Option_Descriptor _kds_s2000w_option_descriptor_binarization_contrast() { debug_printf(ALL, "kds_s2000w_option_descriptor_binarization_contrast"); - SANE_Option_Descriptor descriptor; - - descriptor.name = SANE_NAME_CONTRAST; - descriptor.title = SANE_TITLE_CONTRAST; - descriptor.desc = SANE_DESC_CONTRAST; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_RANGE; - descriptor.constraint.range = &constraint_binarization_contrast; - descriptor.type = SANE_TYPE_INT; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_Int); + + SANE_Option_Descriptor descriptor = { + SANE_NAME_CONTRAST, + SANE_TITLE_CONTRAST, + SANE_DESC_CONTRAST, + SANE_TYPE_INT, + SANE_UNIT_NONE, + sizeof(SANE_Int), + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_RANGE, + {.range = &constraint_binarization_contrast} + }; return descriptor; } @@ -423,20 +449,22 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_binarization_contrast() SANE_Option_Descriptor _kds_s2000w_option_descriptor_max_document_length() { debug_printf(ALL, "kds_s2000w_option_descriptor_max_document_length"); - SANE_Option_Descriptor descriptor; - descriptor.name = "maxdocumentlength"; - descriptor.title = "maxdocumentlength"; - descriptor.desc = "maxdocumentlength"; - descriptor.cap = SANE_CAP_SOFT_DETECT; - descriptor.constraint_type = SANE_CONSTRAINT_STRING_LIST; constraint_max_document_length = malloc(sizeof(char*) * 2); constraint_max_document_length[0] = "#NoPrimaryControl#"; constraint_max_document_length[1] = NULL; - descriptor.constraint.string_list = constraint_max_document_length; - descriptor.type = SANE_TYPE_INT; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_Int); + + SANE_Option_Descriptor descriptor = { + "maxdocumentlength", + "maxdocumentlength", + "maxdocumentlength", + SANE_TYPE_INT, + SANE_UNIT_NONE, + sizeof(SANE_Int), + SANE_CAP_SOFT_DETECT, + SANE_CONSTRAINT_STRING_LIST, + {.string_list = constraint_max_document_length} + }; return descriptor; } @@ -444,22 +472,24 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_max_document_length() SANE_Option_Descriptor _kds_s2000w_option_descriptor_scan_source() { debug_printf(ALL, "kds_s2000w_option_descriptor_scan_source"); - SANE_Option_Descriptor descriptor; - - descriptor.name = SANE_NAME_SCAN_SOURCE; - descriptor.title = SANE_TITLE_SCAN_SOURCE; - descriptor.desc = SANE_DESC_SCAN_SOURCE; - descriptor.cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_STRING_LIST; - constraint_scan_source = malloc(sizeof(char*) * 4); + + constraint_scan_source = malloc(sizeof(SANE_String_Const*) * 4); constraint_scan_source[0] = "DocumentFeeder"; constraint_scan_source[1] = "Automatic"; constraint_scan_source[2] = "Flatbed"; constraint_scan_source[3] = NULL; - descriptor.constraint.string_list = constraint_scan_source; - descriptor.type = SANE_TYPE_STRING; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = sizeof(SANE_String) * 50; + + SANE_Option_Descriptor descriptor = { + SANE_NAME_SCAN_SOURCE, + SANE_TITLE_SCAN_SOURCE, + SANE_DESC_SCAN_SOURCE, + SANE_TYPE_STRING, + SANE_UNIT_NONE, + sizeof(SANE_String_Const*) * 4, + SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_STRING_LIST, + {.string_list = constraint_scan_source} + }; return descriptor; } @@ -467,16 +497,17 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_scan_source() SANE_Option_Descriptor _kds_s2000w_option_descriptor_config_reset() { debug_printf(ALL, "kds_s2000w_option_descriptor_config_reset"); - SANE_Option_Descriptor descriptor; - - descriptor.name = "config-reset"; - descriptor.title = "Konfiguration zuruecksetzen"; - descriptor.desc = "Laedt die default Konfiguration des Scanners"; - descriptor.cap = SANE_CAP_SOFT_SELECT; - descriptor.constraint_type = SANE_CONSTRAINT_NONE; - descriptor.type = SANE_TYPE_BUTTON; - descriptor.unit = SANE_UNIT_NONE; - descriptor.size = 0; + + SANE_Option_Descriptor descriptor = { + "config-reset", + "Konfiguration zuruecksetzen", + "Laedt die default Konfiguration des Scanners", + SANE_TYPE_BUTTON, + SANE_UNIT_NONE, + 0, + SANE_CAP_SOFT_SELECT, + SANE_CONSTRAINT_NONE + }; return descriptor; } diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 27576f6..decaa85 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -49,6 +49,15 @@ TARGET_LINK_LIBRARIES("kds_s2000w_image_converter_tests_run" ${CMOCKA_LIBRARY} sane-kds_s2000w_net) +ADD_EXECUTABLE("kds_s2000w_option_descriptor_tests_run" + "kds_s2000w_option_descriptor_tests_run.c" + "kds_s2000w_option_descriptor_tests.c" + "kds_s2000w_client_mock.c") +ADD_DEPENDENCIES("kds_s2000w_option_descriptor_tests_run" sane-kds_s2000w_net) +TARGET_LINK_LIBRARIES("kds_s2000w_option_descriptor_tests_run" + ${CMOCKA_LIBRARY} + sane-kds_s2000w_net) + INCLUDE(CTest) ENABLE_TESTING() @@ -62,6 +71,8 @@ ADD_TEST(NAME "kds_s2000w_read_config_tests_run" COMMAND "kds_s2000w_read_config_tests_run") ADD_TEST(NAME "kds_s2000w_converter_tests_run" COMMAND "kds_s2000w_image_converter_tests_run") +ADD_TEST(NAME "kds_s2000w_option_descriptor_tests_run" + COMMAND "kds_s2000w_option_descriptor_tests_run") ADD_CUSTOM_TARGET("runningtests" ALL "ctest" "--verbose" diff --git a/tests/kds_s2000w_option_descriptor_tests.c b/tests/kds_s2000w_option_descriptor_tests.c new file mode 100644 index 0000000..40021b1 --- /dev/null +++ b/tests/kds_s2000w_option_descriptor_tests.c @@ -0,0 +1,420 @@ +#include +#include +#include "kds_s2000w_option_descriptor_tests.h" +#include "../src/kds_s2000w_option_descriptors.h" +#include "../src/kds_s2000w_image_converter.h" +#include "../src/kds_s2000w_config.h" + +void __wrap_load_config(program_config* config, const char* config_stream) +{ + config->scanner_url = malloc(sizeof(char) * 28); + config->username = malloc(sizeof(char) * 4); + + config->scanner_url = "https://scanner.example.com\0"; + config->username = "Max\0"; +} + +void __wrap_kds_s2000w_convert_tiff_to_pnm(blobdata* in, blobdata* out) +{ + return; +} + +int setup(void** state) +{ + kds_s2000w_option_descriptor_init_option_descriptors(); + + return 0; +} + +int teardown(void **state) +{ + kds_s2000w_option_descriptor_free_option_descriptors(); + return 0; +} + +void kds_s2000w_option_get_descriptor_zero() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(0); + + assert_string_equal(SANE_NAME_NUM_OPTIONS, option->name); + assert_string_equal(SANE_TITLE_NUM_OPTIONS, option->title); + assert_string_equal(SANE_DESC_NUM_OPTIONS, option->desc); + assert_int_equal(SANE_TYPE_INT, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_Int), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_NONE, option->constraint_type); +} + +void kds_s2000w_option_get_descriptor_one() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(1); + + assert_string_equal(SANE_NAME_STANDARD, option->name); + assert_string_equal(SANE_TITLE_STANDARD, option->title); + assert_string_equal(SANE_DESC_STANDARD, option->desc); + assert_int_equal(SANE_TYPE_GROUP, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(0, option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_NONE, option->constraint_type); +} + +void kds_s2000w_option_get_descriptor_two() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(2); + + assert_string_equal(SANE_NAME_SCAN_SOURCE, option->name); + assert_string_equal(SANE_TITLE_SCAN_SOURCE, option->title); + assert_string_equal(SANE_DESC_SCAN_SOURCE, option->desc); + assert_int_equal(SANE_TYPE_STRING, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_String_Const*) * 4, option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_STRING_LIST, option->constraint_type); + assert_string_equal("DocumentFeeder", option->constraint.string_list[0]); + assert_string_equal("Automatic", option->constraint.string_list[1]); + assert_string_equal("Flatbed", option->constraint.string_list[2]); + assert_null(option->constraint.string_list[3]); +} + +void kds_s2000w_option_get_descriptor_three() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(3); + + assert_string_equal(SANE_NAME_SCAN_MODE, option->name); + assert_string_equal(SANE_TITLE_SCAN_MODE, option->title); + assert_string_equal(SANE_DESC_SCAN_MODE, option->desc); + assert_int_equal(SANE_TYPE_STRING, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_String_Const*) * 4, option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_STRING_LIST, option->constraint_type); + assert_string_equal("Color", option->constraint.string_list[0]); + assert_string_equal("Gray", option->constraint.string_list[1]); + assert_string_equal("BW", option->constraint.string_list[2]); + assert_null(option->constraint.string_list[3]); +} + +void kds_s2000w_option_get_descriptor_four() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(4); + + assert_string_equal(SANE_NAME_SCAN_RESOLUTION, option->name); + assert_string_equal(SANE_TITLE_SCAN_RESOLUTION, option->title); + assert_string_equal(SANE_DESC_SCAN_RESOLUTION, option->desc); + assert_int_equal(SANE_TYPE_INT, option->type); + assert_int_equal(SANE_UNIT_DPI, option->unit); + assert_int_equal(sizeof(SANE_Int), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_WORD_LIST, option->constraint_type); + assert_int_equal(2, option->constraint.word_list[0]); + assert_int_equal(200, option->constraint.word_list[1]); + assert_int_equal(300, option->constraint.word_list[2]); +} + +void kds_s2000w_option_get_descriptor_five() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(5); + + assert_string_equal("scanside", option->name); + assert_string_equal("Duplex Mode", option->title); + assert_string_equal("Duplex Mode", option->desc); + assert_int_equal(SANE_TYPE_STRING, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_String_Const*) * 3, option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_STRING_LIST, option->constraint_type); + assert_string_equal("Simplex", option->constraint.string_list[0]); + assert_string_equal("Duplex", option->constraint.string_list[1]); + assert_null(option->constraint.string_list[2]); +} + +void kds_s2000w_option_get_descriptor_six() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(6); + + assert_string_equal(SANE_NAME_GEOMETRY, option->name); + assert_string_equal(SANE_TITLE_GEOMETRY, option->title); + assert_string_equal(SANE_DESC_GEOMETRY, option->desc); + assert_int_equal(SANE_TYPE_GROUP, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(0, option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_NONE, option->constraint_type); +} + +void kds_s2000w_option_get_descriptor_seven() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(7); + + assert_string_equal("skip-blank-pages", option->name); + assert_string_equal("Blank Image Deletion Mode", option->title); + assert_string_equal("Blank Image Deletion Mode", option->desc); + assert_int_equal(SANE_TYPE_BOOL, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_Bool), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_NONE, option->constraint_type); +} + +void kds_s2000w_option_get_descriptor_eight() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(8); + + assert_string_equal("colordrop", option->name); + assert_string_equal("colordrop", option->title); + assert_string_equal("colordrop", option->desc); + assert_int_equal(SANE_TYPE_STRING, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_String_Const*) * 9, option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_STRING_LIST, option->constraint_type); + assert_string_equal("None", option->constraint.string_list[0]); + assert_string_equal("Red", option->constraint.string_list[1]); + assert_string_equal("Green", option->constraint.string_list[2]); + assert_string_equal("Blue", option->constraint.string_list[3]); + assert_string_equal("Orange", option->constraint.string_list[4]); + assert_string_equal("OrangeAndRed", option->constraint.string_list[5]); + assert_string_equal("Predominant", option->constraint.string_list[6]); + assert_string_equal("Multiple", option->constraint.string_list[7]); + assert_null(option->constraint.string_list[8]); +} + +void kds_s2000w_option_get_descriptor_nine() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(9); + + assert_string_equal("colordropoutaggressiveness", option->name); + assert_string_equal("colordropoutaggressiveness", option->title); + assert_string_equal("colordropoutaggressiveness", option->desc); + assert_int_equal(SANE_TYPE_INT, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_Int), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_RANGE, option->constraint_type); + assert_int_equal(-10, option->constraint.range->min); + assert_int_equal(10, option->constraint.range->max); + assert_int_equal(1, option->constraint.range->quant); +} + +void kds_s2000w_option_get_descriptor_ten() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(10); + + assert_string_equal("colorautobrightnessmode", option->name); + assert_string_equal("colorautobrightnessmode", option->title); + assert_string_equal("colorautobrightnessmode", option->desc); + assert_int_equal(SANE_TYPE_STRING, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_String_Const*) * 3, option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_STRING_LIST, option->constraint_type); + assert_string_equal("None", option->constraint.string_list[0]); + assert_string_equal("Automatic", option->constraint.string_list[1]); + assert_null(option->constraint.string_list[2]); +} + +void kds_s2000w_option_get_descriptor_eleven() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(11); + + assert_string_equal("colorbalancemode", option->name); + assert_string_equal("colorbalancemode", option->title); + assert_string_equal("colorbalancemode", option->desc); + assert_int_equal(SANE_TYPE_STRING, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_String_Const*) * 5, option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_STRING_LIST, option->constraint_type); + assert_string_equal("None", option->constraint.string_list[0]); + assert_string_equal("Manual", option->constraint.string_list[1]); + assert_string_equal("Automatic", option->constraint.string_list[2]); + assert_string_equal("AutomaticAdvanced", option->constraint.string_list[3]); + assert_null(option->constraint.string_list[4]); +} + +void kds_s2000w_option_get_descriptor_twelve() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(12); + + assert_string_equal("colorbalanceaggressiveness", option->name); + assert_string_equal("colorbalanceaggressiveness", option->title); + assert_string_equal("colorbalanceaggressiveness", option->desc); + assert_int_equal(SANE_TYPE_INT, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_Int), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_RANGE, option->constraint_type); + assert_int_equal(-2, option->constraint.range->min); + assert_int_equal(2, option->constraint.range->max); + assert_int_equal(1, option->constraint.range->quant); +} + +void kds_s2000w_option_get_descriptor_thirdteen() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(13); + + assert_string_equal("colorbalancered", option->name); + assert_string_equal("colorbalancered", option->title); + assert_string_equal("colorbalancered", option->desc); + assert_int_equal(SANE_TYPE_INT, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_Int), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_RANGE, option->constraint_type); + assert_int_equal(-50, option->constraint.range->min); + assert_int_equal(50, option->constraint.range->max); + assert_int_equal(1, option->constraint.range->quant); +} + +void kds_s2000w_option_get_descriptor_fourteen() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(14); + + assert_string_equal("colorbalancegreen", option->name); + assert_string_equal("colorbalancegreen", option->title); + assert_string_equal("colorbalancegreen", option->desc); + assert_int_equal(SANE_TYPE_INT, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_Int), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_RANGE, option->constraint_type); + assert_int_equal(-50, option->constraint.range->min); + assert_int_equal(50, option->constraint.range->max); + assert_int_equal(1, option->constraint.range->quant); +} + +void kds_s2000w_option_get_descriptor_fifteen() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(15); + + assert_string_equal("colorbalanceblue", option->name); + assert_string_equal("colorbalanceblue", option->title); + assert_string_equal("colorbalanceblue", option->desc); + assert_int_equal(SANE_TYPE_INT, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_Int), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_RANGE, option->constraint_type); + assert_int_equal(-50, option->constraint.range->min); + assert_int_equal(50, option->constraint.range->max); + assert_int_equal(1, option->constraint.range->quant); +} + +void kds_s2000w_option_get_descriptor_sixteen() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(16); + + assert_string_equal("foreground-boldness-mode", option->name); + assert_string_equal("Foreground Boldness Mode", option->title); + assert_string_equal("Foreground Boldness Mode", option->desc); + assert_int_equal(SANE_TYPE_STRING, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_String_Const*) * 4, option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_STRING_LIST, option->constraint_type); + assert_string_equal("None", option->constraint.string_list[0]); + assert_string_equal("AutomaticAdvanced", option->constraint.string_list[1]); + assert_string_equal("Automatic", option->constraint.string_list[2]); + assert_null(option->constraint.string_list[3]); +} + +void kds_s2000w_option_get_descriptor_seventeen() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(17); + + assert_string_equal("foreground-boldness-aggressiveness", option->name); + assert_string_equal("Foreground Boldness Aggressiveness", option->title); + assert_string_equal("Foreground Boldness Aggressiveness", option->desc); + assert_int_equal(SANE_TYPE_INT, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_Int), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_RANGE, option->constraint_type); + assert_int_equal(-10, option->constraint.range->min); + assert_int_equal(10, option->constraint.range->max); + assert_int_equal(1, option->constraint.range->quant); +} + +void kds_s2000w_option_get_descriptor_eightteen() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(18); + + assert_string_equal("background-smoothing-mode", option->name); + assert_string_equal("Background Smoothing Mode", option->title); + assert_string_equal("Background Smoothing Mode", option->desc); + assert_int_equal(SANE_TYPE_STRING, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_String_Const*) * 4, option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_STRING_LIST, option->constraint_type); + assert_string_equal("None", option->constraint.string_list[0]); + assert_string_equal("AutomaticAdvanced", option->constraint.string_list[1]); + assert_string_equal("Automatic", option->constraint.string_list[2]); + assert_null(option->constraint.string_list[3]); +} + +void kds_s2000w_option_get_descriptor_nineteen() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(19); + + assert_string_equal("background-smoothing-aggressiveness", option->name); + assert_string_equal("Background Smoothing Aggressivenes", option->title); + assert_string_equal("Background Smoothing Aggressivenes", option->desc); + assert_int_equal(SANE_TYPE_INT, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_Int), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_RANGE, option->constraint_type); + assert_int_equal(-10, option->constraint.range->min); + assert_int_equal(10, option->constraint.range->max); + assert_int_equal(1, option->constraint.range->quant); +} + +void kds_s2000w_option_get_descriptor_twenty() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(20); + + assert_string_equal(SANE_NAME_CONTRAST, option->name); + assert_string_equal(SANE_TITLE_CONTRAST, option->title); + assert_string_equal(SANE_DESC_CONTRAST, option->desc); + assert_int_equal(SANE_TYPE_INT, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_Int), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_RANGE, option->constraint_type); + assert_int_equal(-50, option->constraint.range->min); + assert_int_equal(50, option->constraint.range->max); + assert_int_equal(1, option->constraint.range->quant); +} + +void kds_s2000w_option_get_descriptor_twentyone() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(21); + + assert_string_equal("maxdocumentlength", option->name); + assert_string_equal("maxdocumentlength", option->title); + assert_string_equal("maxdocumentlength", option->desc); + assert_int_equal(SANE_TYPE_INT, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(sizeof(SANE_Int), option->size); + assert_int_equal(SANE_CAP_SOFT_DETECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_STRING_LIST, option->constraint_type); + assert_string_equal("#NoPrimaryControl#", option->constraint.string_list[0]); + assert_null(option->constraint.string_list[1]); +} + +void kds_s2000w_option_get_descriptor_twentytwo() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_get_descriptor(22); + + assert_string_equal("config-reset", option->name); + assert_string_equal("Konfiguration zuruecksetzen", option->title); + assert_string_equal("Laedt die default Konfiguration des Scanners", option->desc); + assert_int_equal(SANE_TYPE_BUTTON, option->type); + assert_int_equal(SANE_UNIT_NONE, option->unit); + assert_int_equal(0, option->size); + assert_int_equal(SANE_CAP_SOFT_SELECT, option->cap); + assert_int_equal(SANE_CONSTRAINT_NONE, option->constraint_type); +} \ No newline at end of file diff --git a/tests/kds_s2000w_option_descriptor_tests.h b/tests/kds_s2000w_option_descriptor_tests.h new file mode 100644 index 0000000..2cddea1 --- /dev/null +++ b/tests/kds_s2000w_option_descriptor_tests.h @@ -0,0 +1,34 @@ +#ifndef KDS_S2000W_OPTION_DESCRIPTOR_TESTS_H +#define KDS_S2000W_OPTION_DESCRIPTOR_TESTS_H +#include +#include +#include +#include +#include + +int setup(void** state); +int teardown(void** state); +void kds_s2000w_option_get_descriptor_zero(); +void kds_s2000w_option_get_descriptor_one(); +void kds_s2000w_option_get_descriptor_two(); +void kds_s2000w_option_get_descriptor_three(); +void kds_s2000w_option_get_descriptor_four(); +void kds_s2000w_option_get_descriptor_five(); +void kds_s2000w_option_get_descriptor_six(); +void kds_s2000w_option_get_descriptor_seven(); +void kds_s2000w_option_get_descriptor_eight(); +void kds_s2000w_option_get_descriptor_nine(); +void kds_s2000w_option_get_descriptor_ten(); +void kds_s2000w_option_get_descriptor_eleven(); +void kds_s2000w_option_get_descriptor_twelve(); +void kds_s2000w_option_get_descriptor_thirdteen(); +void kds_s2000w_option_get_descriptor_fourteen(); +void kds_s2000w_option_get_descriptor_fifteen(); +void kds_s2000w_option_get_descriptor_sixteen(); +void kds_s2000w_option_get_descriptor_seventeen(); +void kds_s2000w_option_get_descriptor_eightteen(); +void kds_s2000w_option_get_descriptor_nineteen(); +void kds_s2000w_option_get_descriptor_twenty(); +void kds_s2000w_option_get_descriptor_twentyone(); +void kds_s2000w_option_get_descriptor_twentytwo(); +#endif \ No newline at end of file diff --git a/tests/kds_s2000w_option_descriptor_tests_run.c b/tests/kds_s2000w_option_descriptor_tests_run.c new file mode 100644 index 0000000..aeb089d --- /dev/null +++ b/tests/kds_s2000w_option_descriptor_tests_run.c @@ -0,0 +1,32 @@ +#include "kds_s2000w_option_descriptor_tests.h" + +int main() +{ + const struct CMUnitTest option_descriptor_tests[] = { + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_zero, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_one, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_two, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_three, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_four, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_five, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_six, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_seven, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_eight, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_nine, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_ten, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_eleven, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_twelve, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_thirdteen, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_fourteen, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_fifteen, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_sixteen, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_seventeen, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_eightteen, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_nineteen, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_twenty, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_twentyone, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_twentytwo, setup, teardown) + }; + + return cmocka_run_group_tests(option_descriptor_tests, NULL, NULL); +} \ No newline at end of file -- 2.39.5