@@ -982,6 +982,23 @@ class TestNSGeometry : XCTestCase {
982982 XCTAssertTrue ( NSMouseInRect ( p3, r1, true ) )
983983 }
984984
985+ func test_NSMouseInRect_FlippedUsesMinY( ) {
986+ // Regression: in flipped coordinates the Y checks must use minY/maxY, not minX.
987+ let r = NSMakeRect ( CGFloat ( 10.0 ) , CGFloat ( 1.0 ) , CGFloat ( 2.0 ) , CGFloat ( 4.0 ) ) // y ∈ [1,5)
988+
989+ let topEdge = NSMakePoint ( CGFloat ( 10.0 ) , CGFloat ( 1.0 ) )
990+ XCTAssertTrue ( NSMouseInRect ( topEdge, r, true ) )
991+
992+ let bottomEdge = NSMakePoint ( CGFloat ( 10.0 ) , CGFloat ( 5.0 ) )
993+ XCTAssertFalse ( NSMouseInRect ( bottomEdge, r, true ) )
994+
995+ let inside = NSMakePoint ( CGFloat ( 11.0 ) , CGFloat ( 3.0 ) )
996+ XCTAssertTrue ( NSMouseInRect ( inside, r, true ) )
997+
998+ let outsideX = NSMakePoint ( CGFloat ( 13.0 ) , CGFloat ( 3.0 ) )
999+ XCTAssertFalse ( NSMouseInRect ( outsideX, r, true ) )
1000+ }
1001+
9851002 func test_NSContainsRect( ) {
9861003 let r1 = NSMakeRect ( CGFloat ( 1.2 ) , CGFloat ( 3.1 ) , CGFloat ( 10.0 ) , CGFloat ( 10.0 ) )
9871004 let r2 = NSMakeRect ( CGFloat ( - 2.3 ) , CGFloat ( - 1.5 ) , CGFloat ( 1.0 ) , CGFloat ( 1.0 ) )
0 commit comments