Akihiko Odaki <[email protected]> writes:
> A string that represents a double can be long if it is an exponentially
> large number.
>
> Signed-off-by: Akihiko Odaki <[email protected]>
> ---
> tests/unit/test-qobject-input-visitor.c | 2 +-
> tests/unit/test-qobject-output-visitor.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tests/unit/test-qobject-input-visitor.c
> b/tests/unit/test-qobject-input-visitor.c
> index 84bdcdf702e0..baff9243313c 100644
> --- a/tests/unit/test-qobject-input-visitor.c
> +++ b/tests/unit/test-qobject-input-visitor.c
> @@ -583,7 +583,7 @@ static void
> test_visitor_in_list_struct(TestInputVisitorData *data,
>
> i = 0;
> for (num_list = arrs->number; num_list; num_list = num_list->next) {
> - char expected[32], actual[32];
> + char expected[318], actual[318];
Where does 318 come from?
>
> sprintf(expected, "%.6f", (double)i / 3);
> sprintf(actual, "%.6f", num_list->value);
g_assert_cmpstr(expected, ==, actual);
i++;
}
Existing code is safe, because the numbers run from 0, 1.0/3, ...,
31.0/3.
Its purpose is to check the input visitor parses number arrays
correctly. Doing it this way is questionable. Elsewhere in this file,
we get away with the equivalent of
g_assert_cmpfloat(num_list->value, ==, (double)i / 3);
Yes, double can't represent the fractions exactly, but if we're
concerned about that, we should test the difference is less than
epsilon, or simply use representable values.
> diff --git a/tests/unit/test-qobject-output-visitor.c
> b/tests/unit/test-qobject-output-visitor.c
> index 407ab9ed505a..ae05a726f775 100644
> --- a/tests/unit/test-qobject-output-visitor.c
> +++ b/tests/unit/test-qobject-output-visitor.c
> @@ -571,7 +571,7 @@ static void
> test_visitor_out_list_struct(TestOutputVisitorData *data,
> i = 0;
> QLIST_FOREACH_ENTRY(qlist, e) {
> QNum *qvalue = qobject_to(QNum, qlist_entry_obj(e));
> - char expected[32], actual[32];
> + char expected[318], actual[318];
>
> g_assert(qvalue);
> sprintf(expected, "%.6f", (double)i / 3);
Likewise.