From 8120025076f1116fbd1508981c6c8f2d2571b59e Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Thu, 12 Jan 2023 13:43:10 +0200 Subject: [PATCH] [K/N] Add a test for KT-55653 --- .../backend.native/tests/build.gradle | 8 ++ .../tests/interop/objc/kt55653/main.kt | 85 +++++++++++++++++++ .../tests/interop/objc/kt55653/main.out | 1 + 3 files changed, 94 insertions(+) create mode 100644 kotlin-native/backend.native/tests/interop/objc/kt55653/main.kt create mode 100644 kotlin-native/backend.native/tests/interop/objc/kt55653/main.out diff --git a/kotlin-native/backend.native/tests/build.gradle b/kotlin-native/backend.native/tests/build.gradle index db916c1d668..c0770b348b4 100644 --- a/kotlin-native/backend.native/tests/build.gradle +++ b/kotlin-native/backend.native/tests/build.gradle @@ -5226,6 +5226,14 @@ if (PlatformInfo.isAppleTarget(project)) { } } } + + standaloneTest("interop_kt55653") { + // Test depends on macOS-specific AppKit + enabled = (project.testTarget == 'macos_x64' || project.testTarget == 'macos_arm64' || project.testTarget == null) + source = "interop/objc/kt55653/main.kt" + useGoldenData = true + UtilsKt.dependsOnPlatformLibs(it) + } } tasks.register("KT-50983", KonanDriverTest) { diff --git a/kotlin-native/backend.native/tests/interop/objc/kt55653/main.kt b/kotlin-native/backend.native/tests/interop/objc/kt55653/main.kt new file mode 100644 index 00000000000..9989cde7a35 --- /dev/null +++ b/kotlin-native/backend.native/tests/interop/objc/kt55653/main.kt @@ -0,0 +1,85 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +import kotlinx.cinterop.alloc +import kotlinx.cinterop.memScoped +import kotlinx.cinterop.readValue +import platform.AppKit.NSEvent +import platform.AppKit.NSOpenGLPixelFormat +import platform.AppKit.NSOpenGLView +import platform.Foundation.NSRect + +class MyNSOpenGLView( + frame: kotlinx.cinterop.CValue, + pixelFormat: platform.AppKit.NSOpenGLPixelFormat? +) : NSOpenGLView(frame, pixelFormat) { + + init { + this.resetCursorRects() + } + + override fun acceptsFirstResponder(): Boolean = true + override fun becomeFirstResponder(): Boolean = true + + override fun resetCursorRects() { + println("MyNSOpenGLView::resetCursorRects") + } + + + override fun flagsChanged(event: NSEvent) { + + } + + override fun magnifyWithEvent(event: NSEvent) { + + } + + override fun rotateWithEvent(event: NSEvent) { + + } + + override fun swipeWithEvent(event: NSEvent) { + + } + + override fun smartMagnifyWithEvent(event: NSEvent) { + + } + + override fun scrollWheel(event: NSEvent) { + + } + + override fun mouseUp(event: NSEvent): Unit = TODO() + override fun rightMouseUp(event: NSEvent): Unit = TODO() + override fun otherMouseUp(event: NSEvent): Unit = TODO() + + override fun mouseDown(event: NSEvent): Unit = TODO() + override fun rightMouseDown(event: NSEvent): Unit = TODO() + override fun otherMouseDown(event: NSEvent): Unit = TODO() + + override fun mouseDragged(event: NSEvent): Unit = TODO() + override fun rightMouseDragged(event: NSEvent): Unit = TODO() + override fun otherMouseDragged(event: NSEvent): Unit = TODO() + + override fun mouseMoved(event: NSEvent): Unit = TODO() + + + override fun keyDown(event: NSEvent) { + + } + + override fun keyUp(event: NSEvent) { + + } +} + +fun main() { + memScoped { + val frame = alloc() + val pixelFormat = NSOpenGLPixelFormat() + val x = MyNSOpenGLView(frame.readValue(), pixelFormat) + } +} diff --git a/kotlin-native/backend.native/tests/interop/objc/kt55653/main.out b/kotlin-native/backend.native/tests/interop/objc/kt55653/main.out new file mode 100644 index 00000000000..042e948a436 --- /dev/null +++ b/kotlin-native/backend.native/tests/interop/objc/kt55653/main.out @@ -0,0 +1 @@ +MyNSOpenGLView::resetCursorRects