1
0
Fork 0
gobject-generator/Tests/SwiftGtkGenCoreTests/AnalysisTests.swift
Brendan Szymanski 1330f2bd25 Initial commit: SwiftGtkGen GIR-to-Swift binding generator
Extracted from gtk-swift monorepo. Previous history
contains 38 commits across the full Phase 1 development
including GIR XML parsing, IR model, analysis engine,
code generation, CLI, plugins, and documentation.
2026-07-01 03:27:41 -04:00

40 lines
1.8 KiB
Swift

import Testing
@testable import SwiftGtkGenCore
@Test("Analysis resolves class hierarchy")
func testClassHierarchy() {
let repo = Repository(namespaces: [
Namespace(name: "Gtk", version: "4.0", classes: [
Class(name: "Widget", cType: "GtkWidget", parent: "GObject.Object"),
Class(name: "Window", cType: "GtkWindow", parent: "Widget"),
Class(name: "ApplicationWindow", cType: "GtkApplicationWindow", parent: "Window"),
])
])
let analyzer = Analyzer(config: GenerationConfig(
library: "Gtk", version: "4.0", girsDirectories: [], targetDirectory: "",
externalLibraries: [], generate: ["Gtk.Window"], manual: [], ignore: [], objects: []
))
let result = analyzer.analyze(repository: repo)
#expect(result.classHierarchy["Gtk.Window"] == "Gtk.Widget")
#expect(result.classHierarchy["Gtk.ApplicationWindow"] == "Gtk.Window")
}
@Test("Analysis filters types by generate list")
func testTypeFiltering() {
let repo = Repository(namespaces: [
Namespace(name: "Gtk", version: "4.0", classes: [
Class(name: "Widget", cType: "GtkWidget", parent: "GObject.Object"),
Class(name: "Window", cType: "GtkWindow", parent: "Widget"),
Class(name: "Button", cType: "GtkButton", parent: "Widget"),
])
])
let config = GenerationConfig(library: "Gtk", version: "4.0", girsDirectories: [],
targetDirectory: "", externalLibraries: [],
generate: ["Gtk.Widget", "Gtk.Button"], manual: [], ignore: ["Gtk.Window"], objects: [])
let analyzer = Analyzer(config: config)
let result = analyzer.analyze(repository: repo)
#expect(result.generatedTypes.contains("Gtk.Widget"))
#expect(result.generatedTypes.contains("Gtk.Button"))
#expect(!result.generatedTypes.contains("Gtk.Window"))
#expect(result.manualTypes.isEmpty)
}