Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,89 @@
|
||||
module main
|
||||
|
||||
import encoding.xml
|
||||
import os
|
||||
|
||||
fn test_large_gtk_file() ! {
|
||||
// Note: If you are contributing to this project, you should download the
|
||||
// GIR file from https://raw.githubusercontent.com/gtk-rs/gir-files/master/Gtk-4.0.gir
|
||||
// and place it in the same directory as this file.
|
||||
path := os.join_path(os.dir(@FILE), 'Gtk-4.0.gir')
|
||||
if !os.exists(path) {
|
||||
println('Skipping test_large_gtk_file because file does not exist.')
|
||||
return
|
||||
}
|
||||
|
||||
actual := xml.XMLDocument.from_file(path) or {
|
||||
return error('Failed to parse large GTK XML file')
|
||||
}
|
||||
|
||||
mut valid := false
|
||||
for elm in actual.get_elements_by_tag('class') {
|
||||
if 'c:type' in elm.attributes && elm.attributes['c:type'] == 'GtkWindow' {
|
||||
assert elm.attributes['parent'] == 'Widget'
|
||||
assert elm.attributes['c:symbol-prefix'] == 'window'
|
||||
valid = true
|
||||
}
|
||||
}
|
||||
assert valid, 'GtkWindow class not found!'
|
||||
|
||||
valid = false
|
||||
for elm in actual.get_elements_by_tag('constructor') {
|
||||
if 'c:identifier' in elm.attributes && elm.attributes['c:identifier'] == 'gtk_window_new' {
|
||||
assert elm == xml.XMLNode{
|
||||
name: 'constructor'
|
||||
attributes: {
|
||||
'name': 'new'
|
||||
'c:identifier': 'gtk_window_new'
|
||||
}
|
||||
children: [
|
||||
xml.XMLNodeContents(xml.XMLNode{
|
||||
name: 'doc'
|
||||
attributes: {
|
||||
'xml:space': 'preserve'
|
||||
}
|
||||
children: [
|
||||
xml.XMLNodeContents('Creates a new `GtkWindow`.
|
||||
|
||||
To get an undecorated window (no window borders), use
|
||||
[method@Gtk.Window.set_decorated].
|
||||
|
||||
All top-level windows created by gtk_window_new() are stored
|
||||
in an internal top-level window list. This list can be obtained
|
||||
from [func@Gtk.Window.list_toplevels]. Due to GTK keeping a
|
||||
reference to the window internally, gtk_window_new() does not
|
||||
return a reference to the caller.
|
||||
|
||||
To delete a `GtkWindow`, call [method@Gtk.Window.destroy].'),
|
||||
]
|
||||
}),
|
||||
xml.XMLNodeContents(xml.XMLNode{
|
||||
name: 'return-value'
|
||||
attributes: {
|
||||
'transfer-ownership': 'none'
|
||||
}
|
||||
children: [
|
||||
xml.XMLNodeContents(xml.XMLNode{
|
||||
name: 'doc'
|
||||
attributes: {
|
||||
'xml:space': 'preserve'
|
||||
}
|
||||
children: [xml.XMLNodeContents('a new `GtkWindow`.')]
|
||||
}),
|
||||
xml.XMLNodeContents(xml.XMLNode{
|
||||
name: 'type'
|
||||
attributes: {
|
||||
'name': 'Widget'
|
||||
'c:type': 'GtkWidget*'
|
||||
}
|
||||
children: []
|
||||
}),
|
||||
]
|
||||
}),
|
||||
]
|
||||
}
|
||||
valid = true
|
||||
}
|
||||
}
|
||||
assert valid, 'gtk_window_new constructor not found!'
|
||||
}
|
||||
Reference in new issue
Block a user