diff options
author | Scott D Phillips <scott.d.phillips@intel.com> | 2016-05-04 17:22:05 -0700 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2016-05-08 17:43:31 -0400 |
commit | 3474d20fe8716608b1156701fdb043add10ebb7d (patch) | |
tree | 2c72adb9d9229b6bf3c7c19b7dea479ec55d13c7 /tests/scanner | |
parent | 1dabcc4c17f2eb98ed38eaf4c022d43f29965a61 (diff) | |
download | gobject-introspection-3474d20fe8716608b1156701fdb043add10ebb7d.tar.gz |
tests: add regression test for anonymous struct
C11 which added support for anonymous unions (already supported)
also adds support for anonymous structs.
https://bugzilla.gnome.org/show_bug.cgi?id=766011
Diffstat (limited to 'tests/scanner')
10 files changed, 226 insertions, 0 deletions
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnonymousUnionAndStruct-None.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnonymousUnionAndStruct-None.page new file mode 100644 index 00000000..45f06a92 --- /dev/null +++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnonymousUnionAndStruct-None.page @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<page id="Regress.AnonymousUnionAndStruct-None" + type="topic" + style="field" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="Regress.AnonymousUnionAndStruct" group="field" type="guide"/> + </info> + <title>Regress.AnonymousUnionAndStruct->None</title> + + +</page> diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnonymousUnionAndStruct-x.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnonymousUnionAndStruct-x.page new file mode 100644 index 00000000..1f2f8f08 --- /dev/null +++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnonymousUnionAndStruct-x.page @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<page id="Regress.AnonymousUnionAndStruct-x" + type="topic" + style="field" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="Regress.AnonymousUnionAndStruct" group="field" type="guide"/> + </info> + <title>Regress.AnonymousUnionAndStruct->x</title> + + +</page> diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnonymousUnionAndStruct.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnonymousUnionAndStruct.page new file mode 100644 index 00000000..e9b8ae77 --- /dev/null +++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnonymousUnionAndStruct.page @@ -0,0 +1,35 @@ +<?xml version="1.0"?> +<page id="Regress.AnonymousUnionAndStruct" + type="guide" + style="class" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="index" group="class" type="guide"/> + </info> + <title>Regress.AnonymousUnionAndStruct</title> + + + <links type="topic" ui:expanded="true" + api:type="function" api:mime="text/x-csrc" + groups="constructor" style="linklist"> + <title>Constructors</title> + </links> + <links type="topic" ui:expanded="true" + api:type="function" api:mime="text/x-csrc" + groups="method" style="linklist"> + <title>Methods</title> + </links> + <links type="topic" ui:expanded="true" + api:type="function" api:mime="text/x-csrc" + groups="function" style="linklist"> + <title>Static Functions</title> + </links> + <links type="topic" ui:expanded="true" groups="field" style="linklist"> + <title>Fields</title> + </links> + <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist"> + <title>Other</title> + </links> +</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnonymousUnionAndStruct-x.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnonymousUnionAndStruct-x.page new file mode 100644 index 00000000..44f120aa --- /dev/null +++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnonymousUnionAndStruct-x.page @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<page id="Regress.AnonymousUnionAndStruct-x" + type="topic" + style="field" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="Regress.AnonymousUnionAndStruct" group="field" type="guide"/> + <title type="link" role="topic">x</title> + </info> + <title>Regress.AnonymousUnionAndStruct.x</title> + <synopsis><code mime="text/x-gjs"> +AnonymousUnionAndStruct.x: Number(gint) (Read / Write) + </code></synopsis> + + +</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnonymousUnionAndStruct.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnonymousUnionAndStruct.page new file mode 100644 index 00000000..915dd534 --- /dev/null +++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnonymousUnionAndStruct.page @@ -0,0 +1,42 @@ +<?xml version="1.0"?> +<page id="Regress.AnonymousUnionAndStruct" + type="guide" + style="class" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="index" group="class" type="guide"/> + </info> + <title>Regress.AnonymousUnionAndStruct</title> + <synopsis><code> +const Regress = imports.gi.Regress; + +let anonymousUnionAndStruct = new Regress.AnonymousUnionAndStruct({ + <link xref='Regress.AnonymousUnionAndStruct-x'>x</link>: value +}); + </code></synopsis> + + + <links type="topic" ui:expanded="true" + api:type="function" api:mime="text/x-gjs" + groups="constructor" style="linklist"> + <title>Constructors</title> + </links> + <links type="topic" ui:expanded="true" + api:type="function" api:mime="text/x-gjs" + groups="method" style="linklist"> + <title>Methods</title> + </links> + <links type="topic" ui:expanded="true" + api:type="function" api:mime="text/x-gjs" + groups="function" style="linklist"> + <title>Static Functions</title> + </links> + <links type="topic" ui:expanded="true" groups="field" style="linklist"> + <title>Fields</title> + </links> + <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist"> + <title>Other</title> + </links> +</page> diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnonymousUnionAndStruct-None.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnonymousUnionAndStruct-None.page new file mode 100644 index 00000000..45f06a92 --- /dev/null +++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnonymousUnionAndStruct-None.page @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<page id="Regress.AnonymousUnionAndStruct-None" + type="topic" + style="field" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="Regress.AnonymousUnionAndStruct" group="field" type="guide"/> + </info> + <title>Regress.AnonymousUnionAndStruct->None</title> + + +</page> diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnonymousUnionAndStruct-x.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnonymousUnionAndStruct-x.page new file mode 100644 index 00000000..1f2f8f08 --- /dev/null +++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnonymousUnionAndStruct-x.page @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<page id="Regress.AnonymousUnionAndStruct-x" + type="topic" + style="field" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="Regress.AnonymousUnionAndStruct" group="field" type="guide"/> + </info> + <title>Regress.AnonymousUnionAndStruct->x</title> + + +</page> diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnonymousUnionAndStruct.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnonymousUnionAndStruct.page new file mode 100644 index 00000000..1dab19a8 --- /dev/null +++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnonymousUnionAndStruct.page @@ -0,0 +1,40 @@ +<?xml version="1.0"?> +<page id="Regress.AnonymousUnionAndStruct" + type="guide" + style="class" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="index" group="class" type="guide"/> + </info> + <title>Regress.AnonymousUnionAndStruct</title> + <synopsis><code> +from gi.repository import Regress + +anonymous_union_and_struct = Regress.AnonymousUnionAndStruct() + </code></synopsis> + + + <links type="topic" ui:expanded="true" + api:type="function" api:mime="text/python" + groups="constructor" style="linklist"> + <title>Constructors</title> + </links> + <links type="topic" ui:expanded="true" + api:type="function" api:mime="text/python" + groups="method" style="linklist"> + <title>Methods</title> + </links> + <links type="topic" ui:expanded="true" + api:type="function" api:mime="text/python" + groups="function" style="linklist"> + <title>Static Functions</title> + </links> + <links type="topic" ui:expanded="true" groups="field" style="linklist"> + <title>Fields</title> + </links> + <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist"> + <title>Other</title> + </links> +</page> diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir index 658b17fb..2dca2f2c 100644 --- a/tests/scanner/Regress-1.0-expected.gir +++ b/tests/scanner/Regress-1.0-expected.gir @@ -910,6 +910,28 @@ it says it's pointer but it's actually a string.</doc> </array> </field> </record> + <record name="AnonymousUnionAndStruct" + c:type="RegressAnonymousUnionAndStruct"> + <field name="x" writable="1"> + <type name="gint" c:type="int"/> + </field> + <union> + <record> + <field name="a" writable="1"> + <type name="LikeGnomeKeyringPasswordSchema" + c:type="RegressLikeGnomeKeyringPasswordSchema*"/> + </field> + <field name="b" writable="1"> + <type name="LikeXklConfigItem" c:type="RegressLikeXklConfigItem*"/> + </field> + </record> + <field name="padding" writable="1"> + <array zero-terminated="0" c:type="guint" fixed-size="4"> + <type name="guint" c:type="guint"/> + </array> + </field> + </union> + </record> <constant name="BOOL_CONSTANT" value="true" c:type="REGRESS_BOOL_CONSTANT"> <type name="gboolean" c:type="gboolean"/> </constant> diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h index c1106902..1abd610f 100644 --- a/tests/scanner/regress.h +++ b/tests/scanner/regress.h @@ -1449,6 +1449,19 @@ typedef struct { }; } RegressAnAnonymousUnion; +typedef struct { + int x; + + union { + struct { + RegressLikeGnomeKeyringPasswordSchema *a; + RegressLikeXklConfigItem *b; + }; + + guint padding[4]; + }; +} RegressAnonymousUnionAndStruct; + GVariant * regress_get_variant (void); |