mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-20 23:36:38 +00:00
validate: Force LC_NUMERIC to C as it is required by our expression parser
And... add some expression parser unit tests
This commit is contained in:
parent
394242c224
commit
53b2ca8f62
3 changed files with 57 additions and 1 deletions
|
@ -29,6 +29,8 @@
|
|||
# include "config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#include <locale.h> /* for LC_NUMERIC */
|
||||
|
||||
#include <string.h>
|
||||
/* For g_stat () */
|
||||
#include <glib/gstdio.h>
|
||||
|
@ -301,6 +303,8 @@ gst_validate_init (void)
|
|||
_priv_start_time = gst_util_get_timestamp ();
|
||||
_Q_VALIDATE_MONITOR = g_quark_from_static_string ("validate-monitor");
|
||||
|
||||
setlocale (LC_NUMERIC, "C");
|
||||
|
||||
/* init the report system (can be called multiple times) */
|
||||
gst_validate_report_init ();
|
||||
|
||||
|
|
|
@ -4,7 +4,8 @@ validate_tests = [
|
|||
['validate/monitoring'],
|
||||
['validate/reporting'],
|
||||
['validate/overrides'],
|
||||
['validate/scenario']
|
||||
['validate/scenario'],
|
||||
['validate/expression_parser'],
|
||||
]
|
||||
|
||||
test_defines = [
|
||||
|
|
51
validate/tests/check/validate/expression_parser.c
Normal file
51
validate/tests/check/validate/expression_parser.c
Normal file
|
@ -0,0 +1,51 @@
|
|||
#include <gst/check/gstcheck.h>
|
||||
#include <glib/gstdio.h>
|
||||
#include <gst/validate/validate.h>
|
||||
#include <gst/validate/gst-validate-utils.h>
|
||||
|
||||
static int
|
||||
get_var (const gchar * name, double *value, gpointer udata)
|
||||
{
|
||||
*value = (double) GPOINTER_TO_INT (udata);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
GST_START_TEST (test_expression_parser)
|
||||
{
|
||||
fail_unless_equals_float (gst_validate_utils_parse_expression ("10 / 2", NULL,
|
||||
NULL, NULL), 5.0);
|
||||
|
||||
fail_unless_equals_float (gst_validate_utils_parse_expression ("10 / 0.5",
|
||||
NULL, NULL, NULL), 20);
|
||||
|
||||
fail_unless_equals_float (gst_validate_utils_parse_expression
|
||||
("100, (10 / 0.1)", NULL, NULL, NULL), 1);
|
||||
|
||||
fail_unless_equals_float (gst_validate_utils_parse_expression
|
||||
("min(10, (duration - 0.1) / 0.1)", get_var, GINT_TO_POINTER (1), NULL),
|
||||
9);
|
||||
}
|
||||
|
||||
GST_END_TEST;
|
||||
|
||||
static Suite *
|
||||
gst_validate_suite (void)
|
||||
{
|
||||
Suite *s = suite_create ("registry");
|
||||
TCase *tc_chain = tcase_create ("registry");
|
||||
suite_add_tcase (s, tc_chain);
|
||||
|
||||
if (atexit (gst_validate_deinit) != 0) {
|
||||
GST_ERROR ("failed to set gst_validate_deinit as exit function");
|
||||
}
|
||||
|
||||
g_setenv ("GST_VALIDATE_REPORTING_DETAILS", "all", TRUE);
|
||||
gst_validate_init ();
|
||||
tcase_add_test (tc_chain, test_expression_parser);
|
||||
gst_validate_deinit ();
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
GST_CHECK_MAIN (gst_validate);
|
Loading…
Reference in a new issue