1
0
Fork 0
gobject-generator/Tests/SwiftGtkGenCoreTests/ConstructorTests.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

35 lines
1.8 KiB
Swift

import Testing
@testable import SwiftGtkGenCore
@Test("Constructor with no parameters generates convenience init")
func testConstructorNoParams() {
let ctor = Constructor(name: "new", cIdentifier: "gtk_button_new",
parameters: [], returnType: .typeRef("Widget"))
let initMethod = CodeGenerator.generateConstructor(constructor: ctor, className: "Button")
#expect(initMethod.contains("convenience init"))
#expect(initMethod.contains("gtk_button_new()"))
#expect(initMethod.contains("g_object_ref_sink"))
#expect(initMethod.contains("self.init(pointer:"))
}
@Test("Constructor with string parameter")
func testConstructorWithStringParam() {
let ctor = Constructor(name: "newWithLabel", cIdentifier: "gtk_button_new_with_label",
parameters: [
Parameter(name: "label", type: .string, transferOwnership: .none)
], returnType: .typeRef("Widget"))
let initMethod = CodeGenerator.generateConstructor(constructor: ctor, className: "Button")
#expect(initMethod.contains("label: String"))
#expect(initMethod.contains("gtk_button_new_with_label(label)"))
}
@Test("Constructor with GObject parameter uses .pointer")
func testConstructorWithGObjectParam() {
let ctor = Constructor(name: "newFromModel", cIdentifier: "gtk_combo_box_new_from_model",
parameters: [
Parameter(name: "model", type: .typeRef("TreeModel"), transferOwnership: .none)
], returnType: .typeRef("Widget"))
let initMethod = CodeGenerator.generateConstructor(constructor: ctor, className: "ComboBox")
#expect(initMethod.contains("model: TreeModel"))
#expect(initMethod.contains("gtk_combo_box_new_from_model(model.pointer)"))
}