@@ -372,6 +372,49 @@ class LabelNodeTests: XCTestCase {
372372 expect ( textView? . lineBreakMode) == . byTruncatingTail
373373 }
374374
375+ // MARK: - User Interaction
376+
377+ func test_userInteraction( ) {
378+ var textView : BaseTextView ?
379+ let view = ComposeView {
380+ LabelNode ( " Hello World " )
381+ . onInsert { renderable, _ in
382+ textView = renderable. view as? BaseTextView
383+ }
384+ }
385+
386+ view. frame = CGRect ( x: 0 , y: 0 , width: 100 , height: 100 )
387+ view. refresh ( )
388+
389+ // by default, the label is not interactive
390+ expect ( textView? . isSelectable) == false
391+ #if canImport(AppKit)
392+ expect ( textView? . ignoreHitTest) == true
393+ #endif
394+ #if canImport(UIKit)
395+ expect ( textView? . isUserInteractionEnabled) == false
396+ #endif
397+
398+ // when set to selectable
399+ view. setContent {
400+ LabelNode ( " Hello World " )
401+ . selectable ( )
402+ . onInsert { renderable, _ in
403+ textView = renderable. view as? BaseTextView
404+ }
405+ }
406+ view. refresh ( )
407+
408+ // the label is now interactive
409+ expect ( textView? . isSelectable) == true
410+ #if canImport(AppKit)
411+ expect ( textView? . ignoreHitTest) == false
412+ #endif
413+ #if canImport(UIKit)
414+ expect ( textView? . isUserInteractionEnabled) == true
415+ #endif
416+ }
417+
375418 // MARK: - Modifiers
376419
377420 func test_modifiers( ) throws {
@@ -417,6 +460,13 @@ class LabelNodeTests: XCTestCase {
417460 expect ( paragraphStyle. lineBreakMode) == . byWordWrapping
418461 expect ( textView? . lineBreakMode) == . byTruncatingMiddle
419462 expect ( textView? . isSelectable) == true
463+
464+ #if canImport(AppKit)
465+ expect ( textView? . ignoreHitTest) == false
466+ #endif
467+ #if canImport(UIKit)
468+ expect ( textView? . isUserInteractionEnabled) == true
469+ #endif
420470 }
421471
422472 func test_modifiers_resetNode( ) throws {
0 commit comments