43 Commits

Author SHA1 Message Date
Tim-Philipp Müller
0bdf7fecaf tests: fix compiler warning in gvariant test
gvariant.c:3555:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
2012-11-02 13:14:58 +00:00
Colin Walters
4fb2d737ac gvariant: Make g_variant_new_from_bytes() public
Now that GBytes has been made public, we should make
g_variant_new_from_bytes() public too.

Add g_variant_get_data_as_bytes() to match.

https://bugzilla.gnome.org/show_bug.cgi?id=677062
2012-10-23 16:25:49 +02:00
Colin Walters
e6df67abe6 tests/gvariant: Fix test on big endian architectures
We need to ensure we get the exact same byte-level GVariant, so
byteswap on big endian architectures.

https://bugzilla.gnome.org/show_bug.cgi?id=683384
2012-09-06 09:23:06 -04:00
Colin Walters
d54e10632a gvariant: Add tests for exact SHA256 checksums
I'd like to use GVariant as a data format in my userspace filesystem,
and having the actual bits be stable means I can reliably compute
cryptographic checksums.

This updated patch removes vardict checks, because Ryan wants the
flexibility to change them in the future.

https://bugzilla.gnome.org/show_bug.cgi?id=673012
2012-08-27 17:02:00 -04:00
Ryan Lortie
34653169e5 GVariant: add g_variant_check_format_string()
For some time now people have been asking for a way to check for type
compatibility between GVariant instances and format strings.  There are
several APIs inside of GLib itself that would benefit from this.

This patch introduces a way to do that.
2012-08-20 16:26:25 -04:00
Dan Winship
cc24dac3c8 glib/tests: use g_test_expect_message()
Replace some tests that used to use g_test_trap_fork() with
g_test_expect_message() instead.

https://bugzilla.gnome.org/show_bug.cgi?id=679556
2012-08-20 13:54:52 -04:00
Ryan Lortie
5a85fe0e37 GVariant: fix string validation
String validation was done by checking if the string was valid utf8 and
ensuring that the first non-utf8 character was the last character (ie:
the nul terminator).

No check was actually done to make sure that this byte actually
contained a nul, however, so it was possible that you could have a
string like "hello\xff" with length 6 that would correctly validate.

Fix that, and test it.
2012-07-09 12:47:31 -04:00
Ryan Lortie
f66052fc87 GVariant: support comparing booleans
g_variant_compare() is documented as working on booleans but somehow
this case was missed.  Add it and test it.

Problem discovered by Charles Kerr.
2012-07-06 17:29:30 -04:00
Matthias Clasen
8c2434f01a Make inf testcase more forgiving
printf may produce "infinity" instead of "inf".

https://bugzilla.gnome.org/show_bug.cgi?id=668973
2012-03-17 23:43:52 -04:00
Simon McVittie
fa4792c35e various tests: do not provoke SIGTRAP with -m no-undefined
Some of the GLib tests deliberately provoke warnings (or even fatal
errors) in a forked child. Normally, this is fine, but under valgrind
it's somewhat undesirable. We do want to follow fork(), so we can check
for leaks in child processes that exit gracefully; but we don't want to
be told about "leaks" in processes that are crashing, because there'd
be no point in cleaning those up anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=666116
2011-12-27 17:51:09 -05:00
Simon McVittie
29f2ced8eb various GLib tests: plug memory leaks
These don't really matter, since it's test code, but they do obscure
real leaks in the library.

Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666115
Acked-by: Matthias Clasen <mclasen@redhat.com>
2011-12-14 12:40:16 +00:00
Stef Walter
5a95e19a46 gvariant: Add g_variant_get_fixed_array()
Using g_variant_new_from_data() for creating new byte arrays is non-obvious.
This patch adds a g_variant_new_fixed_array() function.

https://bugzilla.gnome.org/show_bug.cgi?id=659923
2011-09-25 07:57:26 +02:00
Ryan Lortie
19878998bc GVariant: better support for object path arrays
Add G_VARIANT_TYPE_OBJECT_PATH_ARRAY along with accessor functions
g_variant_new_objv, g_variant_get_objv and g_variant_dup_objv.  Also add
support for '^ao' and '^a&o' format strings for g_variant_new() and
g_variant_get().

https://bugzilla.gnome.org/show_bug.cgi?id=654955
2011-07-20 16:27:30 +02:00
Matthias Clasen
f0b14653f8 Improve test coverage of GVariant 2011-06-06 00:31:40 -04:00
Dan Winship
bdc23c44e8 Fix compiler warnings 2011-05-02 11:50:23 -04:00
Ryan Lortie
cd35e2e643 GVariant test: test parsing of "inf" and "nan" 2011-03-31 15:09:55 +05:30
Ryan Lortie
b1d02f9323 GVariant: support NULL for empty arrays in varargs
g_variant_new("as", NULL); now gives an empty array of strings, for
example.

This was documented as working already, but was never actually
implemented (due to the fact that it muddies the water when considering
maybe types).  It's being implemented now because its convenience to
programmers exceeds any damage done to the conceptual purity of the API.
2011-02-11 10:14:29 -05:00
Ryan Lortie
7fc6f8a159 Add g_variant_lookup() and tests
Convenience API for doing lookups in dictionaries where the key is a
string or object path.
2010-11-05 21:33:43 -04:00
Ryan Lortie
a7662ef315 GVariant tests: fix bad allignment assumption
One of the GVariant test cases allocates a pair of character arrays on
the stack and then passes them to functions that assume that they will
be aligned to a multiple of two.

This is not the case for some versions of GCC (4.0.3 on PowerPC).
2010-10-05 02:11:22 -04:00
Ryan Lortie
235820d0ef GVariant: Check for size == 0 in get_bytestring
And add a test from David that shows the problem.

Closes #629698
2010-09-14 14:56:38 -04:00
Matthias Clasen
a4d0038c28 Add a test for g_variant_builder_add_parsed 2010-07-31 02:14:01 -04:00
Ryan Lortie
d9e90c3894 GVariant: improve bytestring support
- add G_VARIANT_TYPE_BYTESTRING, _BYTESTRING_ARRAY, _STRING_ARRAY

 - remove g_variant_{new,get}_byte_array functions

 - add g_variant_{new,get,dup}_bytestring{,_array} functions

 - remove undocumented support for deserialising arrays of objectpaths
   or signature strngs using g_variant_get_strv()

 - add and document new format strings '^ay', '^&ay', '^aay' and '^a&ay'

 - update GApplication to use the new API

 - update GSettings binding code to use the new API

 - add tests
2010-07-07 16:25:48 -04:00
Christian Persch
052ef2614a Add g_variant_is_floating 2010-06-19 19:07:36 +02:00
Ryan Lortie
44db2b6b74 Bug 620349 – utf8ify GVariant printer
Take advantage of our knowledge that GVariant strings are always valid
utf8 when printing and parsing:

  - allow valid printing unicode characters to pass through unescaped

  - escape non-printing characters using \uxxxx or \Uxxxxxxxx format

  - do the same in the parser

  - update existing test cases to use utf8, add a new test case
2010-06-03 09:41:33 +02:00
Ryan Lortie
271997deb5 More alignment-related fixes.
Partial-backout 8a21d8d23317ecebe46007f1fd5f7459bf182415.  The
assertions should have remained relaxed since these functions are used
with non-posix_memalign()ed data.
2010-05-27 11:07:19 -04:00
Ryan Lortie
91ec834456 include "config.h" for HAVE_POSIX_MEMALIGN 2010-05-26 17:35:18 -04:00
Ryan Lortie
8a21d8d233 Use aligned memory in GVariant test cases.
The GVariant serialiser works well with non-8-aligned memory, but the
comparison serialiser in the test case depends on memory being
8-aligned.  Use posix_memalign() to get the memory used by this
serialiser.
2010-05-26 17:31:52 -04:00
Colin Walters
ba1163a33c [tests/gvariant] Handle flavored_free(NULL), since flavored_malloc can return NULL 2010-05-26 15:59:36 -04:00
Ryan Lortie
a81c2f2c7a GVariant: deal with non-8-aligned malloc()
Closes bug #619585.
2010-05-25 11:26:18 -04:00
Ryan Lortie
9eeab5868f GVariant: strings are now utf8
- modify serialiser validation function to enforce utf8 encoding
 - add documentation to g_variant_new_string(), g_variant_get_string(),
   g_variant_dup_string()
 - add 2 new test cases to check that it works
2010-04-25 13:39:20 -05:00
Ryan Lortie
409a3a61ec GVariant: Stop lexing format strings at :
Lets us parse this successfully: {%s: %s}.
2010-03-26 08:02:17 -05:00
Ryan Lortie
a6c57591c0 Support &s as key of dict entry in format string
Partial fix for bug 613618.
2010-03-23 09:18:28 -05:00
Ryan Lortie
bf4dbdbf0e merge GVariant parser 2010-03-21 12:55:30 -05:00
Ryan Lortie
751feb916a Bug 612502 - build fails on glib/tests/gvariant.c
Fix two problems caught by Tim Rice.

  - non-constant expression used as array size
  - arithmetic on void *
2010-03-15 17:45:02 -04:00
Ryan Lortie
7e4d88b290 gvariant test: Remove unused variable 2010-03-14 22:27:39 -04:00
Ryan Lortie
9dea0253a3 GVariant: add loading, byteswapping, normalisation 2010-03-14 15:56:18 -04:00
Ryan Lortie
5b19345246 Bug 610858 - gvariant test fails sometimes
NaN floating point values get mangled when passing across the function
call ABI on x86 so avoid using them to get rid of spurious failures.

Reported by Christian Persch and reliably reproduced by Emilio Pozuelo
Monfort.
2010-03-12 15:42:22 -05:00
Ryan Lortie
75f761bcaa GVariant variable arguments, tests, cleanups
Merge GVariant variable arguments support and put it under tests.

Also, remove the hack of the test case directly '#include'ing .c files
from glib/.  Instead, create a non-installed gvariant-internal.h that
the tests can include and make the symbols in it visible on the symbol
table of the shared library.  These symbols (as they are present in no
installed header files) are not part of the API of GLib.

Increase test coverage in a few other areas.
2010-03-08 10:31:19 -05:00
Ryan Lortie
fe6e278a87 GVariantBuilder: allow for stack allocation 2010-03-03 03:38:02 -05:00
Ryan Lortie
360b9b540e GVariant: Improve test coverage. 2010-02-23 01:59:57 -05:00
Ryan Lortie
ed3c914cdb Merge the main public API of GVariant 2010-02-19 10:52:03 -05:00
Ryan Lortie
80538aba7e merge the GVariant serialiser 2010-02-06 10:26:02 -05:00
Ryan Lortie
5e753d6abc rename test: gvarianttype -> gvariant
More test cases will be added to this file.
2010-02-04 20:32:39 -05:00