Add more tests

This commit is contained in:
James Westman 2021-11-04 00:05:38 -05:00
parent 08a74acb37
commit a4b31f2cb0
No known key found for this signature in database
GPG key ID: CE2DBA0ADB654EA6
24 changed files with 89 additions and 8 deletions

View file

@ -152,9 +152,9 @@ def validate(token_name=None, end_token_name=None, skip_incomplete=False):
e.start = self.group.start e.start = self.group.start
if e.end is None: if e.end is None:
if token := self.group.tokens.get(token_name): if token := self.group.tokens.get(end_token_name):
e.end = token.end e.end = token.end
elif token := self.group.tokens.get(end_token_name): elif token := self.group.tokens.get(token_name):
e.end = token.end e.end = token.end
else: else:
e.end = self.group.end e.end = self.group.end

View file

@ -351,7 +351,7 @@ class GirContext:
if ns not in self.namespaces: if ns not in self.namespaces:
raise CompileError( raise CompileError(
f"Namespace `{ns}` was not imported.", f"Namespace {ns} was not imported",
did_you_mean=(ns, self.namespaces.keys()), did_you_mean=(ns, self.namespaces.keys()),
) )
@ -359,12 +359,12 @@ class GirContext:
if type is None: if type is None:
raise CompileError( raise CompileError(
f"Namespace {ns} does not contain a class called {name}.", f"Namespace {ns} does not contain a class called {name}",
did_you_mean=(name, self.namespaces[ns].classes.keys()), did_you_mean=(name, self.namespaces[ns].classes.keys()),
) )
elif not isinstance(type, Class): elif not isinstance(type, Class):
raise CompileError( raise CompileError(
f"{ns}.{name} is not a class.", f"{ns}.{name} is not a class",
did_you_mean=(name, self.namespaces[ns].classes.keys()), did_you_mean=(name, self.namespaces[ns].classes.keys()),
) )

View file

@ -0,0 +1,3 @@
using Gtk 4.0;
template TestTemplate : Gtk.NotARealClass {}

View file

@ -0,0 +1 @@
3,25,17,Namespace Gtk does not contain a class called NotARealClass

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
Box {
orientation: diagonal;
}

View file

@ -0,0 +1 @@
4,16,8,diagonal is not a member of Gtk.Orientation

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
Label {
visible: maybe;
}

View file

@ -0,0 +1 @@
4,12,5,Expected 'true' or 'false' for boolean value

View file

@ -0,0 +1,3 @@
using Gtk 4.0;
template TestTemplate : Gtk.Orientable {}

View file

@ -0,0 +1 @@
3,25,14,Gtk.Orientable is not a class

View file

@ -0,0 +1,3 @@
using Gtk 4.0;
template TestTemplate : Adw.ApplicationWindow {}

View file

@ -0,0 +1 @@
3,25,21,Namespace Adw was not imported

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
Label {
not-a-real-property: "Hello, world!";
}

View file

@ -0,0 +1 @@
4,3,19,Class Gtk.Label does not contain a property called not-a-real-property

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
Button {
eaten-by-velociraptors => on_eaten_by_velociraptors();
}

View file

@ -0,0 +1 @@
4,3,22,Class Gtk.Button does not contain a signal called eaten-by-velociraptors

View file

@ -1 +1 @@
2,7,17,Namespace NotARealNamespace-2.0 could not be found 2,7,21,Namespace NotARealNamespace-2.0 could not be found

View file

@ -0,0 +1,7 @@
using Gtk 4.0;
template TestTemplate : Label {
test-property: Button {
label: "Hello, world!";
};
}

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<template class="TestTemplate" parent="GtkLabel">
<property name="test-property">
<object class="GtkButton">
<property name="label">Hello, world!</property>
</object>
</property>
</template>
</interface>

View file

@ -1,3 +1,6 @@
using Gtk 4.0; using Gtk 4.0;
template TestTemplate : ApplicationWindow {} template TestTemplate : ApplicationWindow {
test-property: "Hello, world";
test-signal => on_test_signal();
}

View file

@ -1,5 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<requires lib="gtk" version="4.0"/> <requires lib="gtk" version="4.0"/>
<template class="TestTemplate" parent="GtkApplicationWindow"></template> <template class="TestTemplate" parent="GtkApplicationWindow">
<property name="test-property">Hello, world</property>
<signal name="test-signal" handler="on_test_signal"/>
</template>
</interface> </interface>

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
Label {
label: _("Hello, world!");
}

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkLabel">
<property name="label" translatable="true">Hello, world!</property>
</object>
</interface>

View file

@ -94,15 +94,24 @@ class TestSamples(unittest.TestCase):
self.assert_sample("flags") self.assert_sample("flags")
self.assert_sample("layout") self.assert_sample("layout")
self.assert_sample("menu") self.assert_sample("menu")
self.assert_sample("object_prop")
self.assert_sample("property") self.assert_sample("property")
self.assert_sample("signal") self.assert_sample("signal")
self.assert_sample("strings") self.assert_sample("strings")
self.assert_sample("style") self.assert_sample("style")
self.assert_sample("template") self.assert_sample("template")
self.assert_sample("translated")
self.assert_sample("using") self.assert_sample("using")
def test_sample_errors(self): def test_sample_errors(self):
self.assert_sample_error("class_dne")
self.assert_sample_error("duplicate_obj_id") self.assert_sample_error("duplicate_obj_id")
self.assert_sample_error("enum_member_dne")
self.assert_sample_error("invalid_bool")
self.assert_sample_error("ns_not_imported")
self.assert_sample_error("not_a_class")
self.assert_sample_error("property_dne")
self.assert_sample_error("signal_dne")
self.assert_sample_error("two_templates") self.assert_sample_error("two_templates")
self.assert_sample_error("using_invalid_namespace") self.assert_sample_error("using_invalid_namespace")