GSettings: enum/choices/aliases/range test cases

Fix a small bug that one of the tests uncovered.
This commit is contained in:
Ryan Lortie 2010-06-17 00:03:44 -04:00
parent be8f938b63
commit fc538894d3
29 changed files with 368 additions and 7 deletions

View File

@ -252,7 +252,7 @@ key_state_set_range (KeyState *state,
gchar *type = g_variant_type_dup_string (state->type); gchar *type = g_variant_type_dup_string (state->type);
g_set_error (error, G_MARKUP_ERROR, g_set_error (error, G_MARKUP_ERROR,
G_MARKUP_ERROR_INVALID_CONTENT, G_MARKUP_ERROR_INVALID_CONTENT,
"<range> not allowed for keys of type \"%s\"\n", type); "<range> not allowed for keys of type '%s'", type);
g_free (type); g_free (type);
return; return;
} }
@ -1034,11 +1034,11 @@ start_element (GMarkupParseContext *context,
if (container) if (container)
g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT, g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT,
"Element <%s> not allowed inside <%s>\n", "Element <%s> not allowed inside <%s>",
element_name, container); element_name, container);
else else
g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT, g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT,
"Element <%s> not allowed at toplevel\n", element_name); "Element <%s> not allowed at toplevel", element_name);
} }
/* 2}}} */ /* 2}}} */
/* End element {{{2 */ /* End element {{{2 */
@ -1056,7 +1056,7 @@ key_state_end (KeyState **state_ptr,
{ {
g_set_error_literal (error, g_set_error_literal (error,
G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
"element <default> is required in <key>\n"); "element <default> is required in <key>");
return; return;
} }
} }
@ -1128,7 +1128,7 @@ text (GMarkupParseContext *context,
else else
g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
"text may not appear inside <%s>\n", "text may not appear inside <%s>",
g_markup_parse_context_get_element (context)); g_markup_parse_context_get_element (context));
break; break;

View File

@ -304,5 +304,5 @@ strinfo_builder_contains (GString *builder,
return strinfo_find_string ((const guint32 *) builder->str, return strinfo_find_string ((const guint32 *) builder->str,
builder->len / 4, string, FALSE) != -1 || builder->len / 4, string, FALSE) != -1 ||
strinfo_find_string ((const guint32 *) builder->str, strinfo_find_string ((const guint32 *) builder->str,
builder->len / 4, string, FALSE) != -1; builder->len / 4, string, TRUE) != -1;
} }

View File

@ -58,3 +58,4 @@ test.mo
unix-fd unix-fd
unix-streams unix-streams
utf8-input-streamgdbus-addresses utf8-input-streamgdbus-addresses
org.gtk.test.enums.xml

View File

@ -66,7 +66,32 @@ static const SchemaTest tests[] = {
{ "bad-key4", NULL, "*invalid name*" }, { "bad-key4", NULL, "*invalid name*" },
{ "bad-key4", "--allow-any-name", NULL }, { "bad-key4", "--allow-any-name", NULL },
{ "empty-key", NULL, "*empty names*" }, { "empty-key", NULL, "*empty names*" },
{ "empty-key", "--allow-any-name", "*empty names*" } { "empty-key", "--allow-any-name", "*empty names*" },
{ "enum", NULL, NULL },
{ "enum-with-aliases", NULL, NULL },
{ "enum-with-invalid-alias", NULL, "*'banger' is not in enumerated type*" },
{ "enum-with-repeated-alias", NULL, "*<alias value='sausages'/> already specified*" },
{ "enum-with-chained-alias", NULL, "*'sausages' is not in enumerated type*" },
{ "enum-with-shadow-alias", NULL, "*'mash' is already a member of the enum*" },
{ "enum-with-choice", NULL, "*<choices> can not be specified*" },
{ "enum-with-bad-default", NULL, "*<default> is not a valid member*" },
{ "choice", NULL, NULL },
{ "choice-upside-down", NULL, NULL },
{ "bad-choice", NULL, "*<default> contains string not in <choices>*" },
{ "choice-bad", NULL, "*<default> contains string not in <choices>*" },
{ "choice-badtype", NULL, "*<choices> not allowed for keys of type 'i'*" },
{ "bare-alias", NULL, "*enumerated types or after <choices>*" },
{ "choice-alias", NULL, NULL },
{ "default-in-aliases", NULL, "*<default> contains string not in <choices>*" },
{ "choice-invalid-alias", NULL, "*'befor' is not in <choices>*" },
{ "choice-shadowed-alias", NULL, "*given when <choice value='before'/> was already*" },
{ "range", NULL, NULL },
{ "range-badtype", NULL, "*<range> not allowed for keys of type 's'*" },
{ "range-low-default", NULL, "*<default> is not contained in the specified range*" },
{ "range-high-default", NULL, "*<default> is not contained in the specified range*" },
{ "range-default-low", NULL, "*<default> is not contained in the specified range*" },
{ "range-default-high", NULL, "*<default> is not contained in the specified range*" },
{ "range-parse-error", NULL, "*invalid character in number*" }
}; };
int int

View File

@ -0,0 +1,14 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='s'>
<default>'how'</default>
<choices>
<choice value='who'/>
<choice value='what'/>
<choice value='where'/>
<choice value='when'/>
<choice value='why'/>
</choices>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,7 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='s'>
<aliases/>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,15 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='s'>
<choices>
<choice value='before'/>
<choice value='after'/>
</choices>
<aliases>
<alias value='pre' target='before'/>
<alias value='post' target='after'/>
</aliases>
<default>'after'</default>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,14 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='s'>
<choices>
<choice value='who'/>
<choice value='what'/>
<choice value='where'/>
<choice value='when'/>
<choice value='why'/>
</choices>
<default>'how'</default>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,7 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='i'>
<choices/>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,15 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='s'>
<choices>
<choice value='before'/>
<choice value='after'/>
</choices>
<aliases>
<alias value='pre' target='befor'/>
<alias value='post' target='after'/>
</aliases>
<default>'after'</default>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,14 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='s'>
<choices>
<choice value='before'/>
<choice value='after'/>
</choices>
<aliases>
<alias value='before' target='after'/>
</aliases>
<default>'after'</default>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,14 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='s'>
<choices>
<choice value='who'/>
<choice value='what'/>
<choice value='where'/>
<choice value='when'/>
<choice value='why'/>
</choices>
<default>'who'</default>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,14 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='s'>
<default>'who'</default>
<choices>
<choice value='who'/>
<choice value='what'/>
<choice value='where'/>
<choice value='when'/>
<choice value='why'/>
</choices>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,15 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='s'>
<choices>
<choice value='before'/>
<choice value='after'/>
</choices>
<aliases>
<alias value='pre' target='before'/>
<alias value='post' target='after'/>
</aliases>
<default>'pre'</default>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,20 @@
<schemalist>
<enum id='org.gtk.test.MyEnum'>
<value nick='nospam' value='0'/>
<value nick='spam' value='1'/>
<value nick='ham' value='2'/>
<value nick='eggs' value='3'/>
<value nick='bangers' value='4'/>
<value nick='mash' value='5'/>
</enum>
<schema id='org.gtk.test.schema'>
<key name='test' enum='org.gtk.test.MyEnum'>
<default>'spam'</default>
<aliases>
<alias value='sausages' target='bangers'/>
</aliases>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,16 @@
<schemalist>
<enum id='org.gtk.test.MyEnum'>
<value nick='nospam' value='0'/>
<value nick='spam' value='1'/>
<value nick='ham' value='2'/>
<value nick='eggs' value='3'/>
<value nick='bangers' value='4'/>
<value nick='mash' value='5'/>
</enum>
<schema id='org.gtk.test.schema'>
<key name='test' enum='org.gtk.test.MyEnum'>
<default>'nie'</default>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,21 @@
<schemalist>
<enum id='org.gtk.test.MyEnum'>
<value nick='nospam' value='0'/>
<value nick='spam' value='1'/>
<value nick='ham' value='2'/>
<value nick='eggs' value='3'/>
<value nick='bangers' value='4'/>
<value nick='mash' value='5'/>
</enum>
<schema id='org.gtk.test.schema'>
<key name='test' enum='org.gtk.test.MyEnum'>
<default>'spam'</default>
<aliases>
<alias value='sausages' target='bangers'/>
<alias value='wurst' target='sausages'/>
</aliases>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,17 @@
<schemalist>
<enum id='org.gtk.test.MyEnum'>
<value nick='nospam' value='0'/>
<value nick='spam' value='1'/>
<value nick='ham' value='2'/>
<value nick='eggs' value='3'/>
<value nick='bangers' value='4'/>
<value nick='mash' value='5'/>
</enum>
<schema id='org.gtk.test.schema'>
<key name='test' enum='org.gtk.test.MyEnum'>
<default>'spam'</default>
<choices/>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,20 @@
<schemalist>
<enum id='org.gtk.test.MyEnum'>
<value nick='nospam' value='0'/>
<value nick='spam' value='1'/>
<value nick='ham' value='2'/>
<value nick='eggs' value='3'/>
<value nick='bangers' value='4'/>
<value nick='mash' value='5'/>
</enum>
<schema id='org.gtk.test.schema'>
<key name='test' enum='org.gtk.test.MyEnum'>
<default>'spam'</default>
<aliases>
<alias value='sausages' target='banger'/>
</aliases>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,21 @@
<schemalist>
<enum id='org.gtk.test.MyEnum'>
<value nick='nospam' value='0'/>
<value nick='spam' value='1'/>
<value nick='ham' value='2'/>
<value nick='eggs' value='3'/>
<value nick='bangers' value='4'/>
<value nick='mash' value='5'/>
</enum>
<schema id='org.gtk.test.schema'>
<key name='test' enum='org.gtk.test.MyEnum'>
<default>'spam'</default>
<aliases>
<alias value='sausages' target='bangers'/>
<alias value='sausages' target='mash'/>
</aliases>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,20 @@
<schemalist>
<enum id='org.gtk.test.MyEnum'>
<value nick='nospam' value='0'/>
<value nick='spam' value='1'/>
<value nick='ham' value='2'/>
<value nick='eggs' value='3'/>
<value nick='bangers' value='4'/>
<value nick='mash' value='5'/>
</enum>
<schema id='org.gtk.test.schema'>
<key name='test' enum='org.gtk.test.MyEnum'>
<default>'spam'</default>
<aliases>
<alias value='mash' target='bangers'/>
</aliases>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,16 @@
<schemalist>
<enum id='org.gtk.test.MyEnum'>
<value nick='nospam' value='0'/>
<value nick='spam' value='1'/>
<value nick='ham' value='2'/>
<value nick='eggs' value='3'/>
<value nick='bangers' value='4'/>
<value nick='mash' value='5'/>
</enum>
<schema id='org.gtk.test.schema'>
<key name='test' enum='org.gtk.test.MyEnum'>
<default>'spam'</default>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,7 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='s'>
<range min='22' max='27'/>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,8 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='i'>
<default>28</default>
<range min='22' max='27'/>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,8 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='i'>
<default>21</default>
<range min='22' max='27'/>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,8 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='i'>
<range min='22' max='27'/>
<default>28</default>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,8 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='i'>
<range min='22' max='27'/>
<default>21</default>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,8 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='i'>
<range min='22.5' max='27'/>
<default>25</default>
</key>
</schema>
</schemalist>

View File

@ -0,0 +1,8 @@
<schemalist>
<schema id='org.gtk.test.schema'>
<key name='test' type='i'>
<range min='22' max='27'/>
<default>25</default>
</key>
</schema>
</schemalist>