@@ -39,6 +39,38 @@ public void Behavior_WhenBehaviorEnabled_ShouldUpdateSelectionBounds()
3939 Assert . Equal ( 100 , lastBounds . Left ) ;
4040 }
4141
42+ [ Fact ]
43+ public void Behavior_WhenBehaviorEnabled_ShouldUpdateSelectionBoundsOnScroll ( )
44+ {
45+ // Arrange
46+ var diagram = new TestDiagram ( ) ;
47+ diagram . BehaviorOptions . DiagramDragBehavior = diagram . GetBehavior < PanBehavior > ( ) ;
48+ diagram . BehaviorOptions . DiagramShiftDragBehavior = diagram . GetBehavior < SelectionBoxBehavior > ( ) ;
49+ diagram . BehaviorOptions . DiagramWheelBehavior = diagram . GetBehavior < ScrollBehavior > ( ) ;
50+ diagram . SetContainer ( new Rectangle ( Point . Zero , new Size ( 100 , 100 ) ) ) ;
51+
52+ var selectionBoxBehavior = diagram . GetBehavior < SelectionBoxBehavior > ( ) ! ;
53+ bool boundsChangedEventInvoked = false ;
54+ Rectangle ? lastBounds = null ;
55+ selectionBoxBehavior . SelectionBoundsChanged += ( _ , newBounds ) =>
56+ {
57+ boundsChangedEventInvoked = true ;
58+ lastBounds = newBounds ;
59+ } ;
60+
61+ // Act
62+ diagram . TriggerPointerDown ( null ,
63+ new PointerEventArgs ( 100 , 100 , 0 , 0 , false , true , false , 0 , 0 , 0 , 0 , 0 , 0 , string . Empty , true ) ) ;
64+ diagram . TriggerWheel ( new WheelEventArgs ( 100 , 100 , 0 , 0 , false , true , false , 200 , 150 , 0 , 0 ) ) ;
65+
66+ // Assert
67+ Assert . True ( boundsChangedEventInvoked ) ;
68+ Assert . Equal ( 200 , lastBounds ! . Width ) ;
69+ Assert . Equal ( 150 , lastBounds . Height ) ;
70+ Assert . Equal ( - 50 , lastBounds . Top ) ;
71+ Assert . Equal ( - 100 , lastBounds . Left ) ;
72+ }
73+
4274 [ Fact ]
4375 public void Behavior_WhenBehaviorDisabled_ShouldNotUpdateSelectionBounds ( )
4476 {
@@ -99,6 +131,39 @@ public void Behavior_WithBoundsChangedDelegate_ShouldSelectNodesInsideArea()
99131 Assert . False ( node . Selected ) ;
100132 }
101133
134+ [ Fact ]
135+ public void Behavior_WithBoundsChangedDelegate_ShouldSelectNodesInsideAreaWhenScrolling ( )
136+ {
137+ // Arrange
138+ var diagram = new TestDiagram ( ) ;
139+ diagram . BehaviorOptions . DiagramDragBehavior = diagram . GetBehavior < PanBehavior > ( ) ;
140+ diagram . BehaviorOptions . DiagramShiftDragBehavior = diagram . GetBehavior < SelectionBoxBehavior > ( ) ;
141+ diagram . BehaviorOptions . DiagramWheelBehavior = diagram . GetBehavior < ScrollBehavior > ( ) ;
142+ diagram . SetContainer ( new Rectangle ( Point . Zero , new Size ( 100 , 100 ) ) ) ;
143+
144+ var selectionBoxBehavior = diagram . GetBehavior < SelectionBoxBehavior > ( ) ! ;
145+ selectionBoxBehavior . SelectionBoundsChanged += ( _ , _ ) => { } ;
146+
147+ var node = new NodeModel ( )
148+ {
149+ Size = new Size ( 100 , 100 ) ,
150+ Position = new Point ( 150 , 150 )
151+ } ;
152+ diagram . Nodes . Add ( node ) ;
153+
154+ // Act
155+ diagram . TriggerPointerDown ( null ,
156+ new PointerEventArgs ( 100 , 100 , 0 , 0 , false , true , false , 0 , 0 , 0 , 0 , 0 , 0 , string . Empty , true ) ) ;
157+ diagram . TriggerWheel ( new WheelEventArgs ( 100 , 100 , 0 , 0 , false , true , false , 200 , 200 , 0 , 0 ) ) ;
158+
159+ // Assert
160+ Assert . True ( node . Selected ) ;
161+
162+ diagram . TriggerWheel ( new WheelEventArgs ( 100 , 100 , 0 , 0 , false , true , false , - 200 , - 200 , 0 , 0 ) ) ;
163+
164+ Assert . False ( node . Selected ) ;
165+ }
166+
102167 [ Fact ]
103168 public void Behavior_WithoutBoundsChangedDelegate_ShouldNotSelectNodesInsideArea ( )
104169 {
@@ -127,5 +192,36 @@ public void Behavior_WithoutBoundsChangedDelegate_ShouldNotSelectNodesInsideArea
127192 new PointerEventArgs ( 100 , 100 , 0 , 0 , false , false , false , 0 , 0 , 0 , 0 , 0 , 0 , string . Empty , true ) ) ;
128193 Assert . False ( node . Selected ) ;
129194 }
195+
196+ [ Fact ]
197+ public void Behavior_WithoutBoundsChangedDelegate_ShouldNotSelectNodesInsideAreaWhenScrolling ( )
198+ {
199+ // Arrange
200+ var diagram = new TestDiagram ( ) ;
201+ diagram . BehaviorOptions . DiagramDragBehavior = diagram . GetBehavior < PanBehavior > ( ) ;
202+ diagram . BehaviorOptions . DiagramShiftDragBehavior = diagram . GetBehavior < SelectionBoxBehavior > ( ) ;
203+ diagram . BehaviorOptions . DiagramWheelBehavior = diagram . GetBehavior < ScrollBehavior > ( ) ;
204+ diagram . SetContainer ( new Rectangle ( Point . Zero , new Size ( 100 , 100 ) ) ) ;
205+
206+ var node = new NodeModel ( )
207+ {
208+ Size = new Size ( 100 , 100 ) ,
209+ Position = new Point ( 150 , 150 )
210+ } ;
211+ diagram . Nodes . Add ( node ) ;
212+
213+ // Act
214+ diagram . TriggerPointerDown ( null ,
215+ new PointerEventArgs ( 100 , 100 , 0 , 0 , false , true , false , 0 , 0 , 0 , 0 , 0 , 0 , string . Empty , true ) ) ;
216+ diagram . TriggerWheel ( new WheelEventArgs ( 100 , 100 , 0 , 0 , false , true , false , 200 , 200 , 0 , 0 ) ) ;
217+
218+
219+ // Assert
220+ Assert . False ( node . Selected ) ;
221+
222+ diagram . TriggerWheel ( new WheelEventArgs ( 100 , 100 , 0 , 0 , false , true , false , - 200 , - 200 , 0 , 0 ) ) ;
223+
224+ Assert . False ( node . Selected ) ;
225+ }
130226 }
131227}
0 commit comments