@@ -94,4 +94,67 @@ TEST (RectTest)
9494 ASSERT (IsEqual (r1.Expand (Size (5.0 , 6.0 )), Rect::FromCenterAndSize (r1.GetCenter (), r1.GetSize () + Size (5.0 , 6.0 ))));
9595}
9696
97+ TEST (BoundingRectTest_FromRects)
98+ {
99+ BoundingRect boundingRect;
100+ ASSERT (!boundingRect.IsValid ());
101+
102+ Rect rect1 = Rect::FromPositionAndSize (Point (0 , 0 ), Size (100 , 100 ));
103+ Rect rect2 = Rect::FromPositionAndSize (Point (10 , 10 ), Size (50 , 50 ));
104+ Rect rect3 = Rect::FromPositionAndSize (Point (-10 , -10 ), Size (20 , 20 ));
105+
106+ boundingRect.AddRect (rect1);
107+ ASSERT (boundingRect.IsValid ());
108+ ASSERT (IsEqual (boundingRect.GetRect (), rect1));
109+
110+ boundingRect.AddRect (rect2);
111+ ASSERT (boundingRect.IsValid ());
112+ ASSERT (IsEqual (boundingRect.GetRect (), rect1));
113+
114+ boundingRect.AddRect (rect3);
115+ ASSERT (boundingRect.IsValid ());
116+ ASSERT (IsEqual (boundingRect.GetRect (), Rect::FromPositionAndSize (Point (-10 , -10 ), Size (110 , 110 ))));
117+ }
118+
119+ TEST (BoundingRectTest_FromPoints)
120+ {
121+ BoundingRect boundingRect;
122+ ASSERT (!boundingRect.IsValid ());
123+
124+ boundingRect.AddPoint (Point (10 , 10 ));
125+ ASSERT (boundingRect.IsValid ());
126+ ASSERT (IsEqual (boundingRect.GetRect (), Rect::FromPositionAndSize (Point (10 , 10 ), Size (0 , 0 ))));
127+
128+ boundingRect.AddPoint (Point (20 , 20 ));
129+ ASSERT (boundingRect.IsValid ());
130+ ASSERT (IsEqual (boundingRect.GetRect (), Rect::FromPositionAndSize (Point (10 , 10 ), Size (10 , 10 ))));
131+
132+ boundingRect.AddPoint (Point (-10 , -10 ));
133+ ASSERT (boundingRect.IsValid ());
134+ ASSERT (IsEqual (boundingRect.GetRect (), Rect::FromPositionAndSize (Point (-10 , -10 ), Size (30 , 30 ))));
135+ }
136+
137+ TEST (BoundingRectTest_FromRectAndPoint)
138+ {
139+ {
140+ BoundingRect boundingRect;
141+ ASSERT (!boundingRect.IsValid ());
142+
143+ boundingRect.AddPoint (Point (-10 , -10 ));
144+ boundingRect.AddRect (Rect::FromPositionAndSize (Point (0 , 0 ), Size (20 , 20 )));
145+ ASSERT (boundingRect.IsValid ());
146+ ASSERT (IsEqual (boundingRect.GetRect (), Rect::FromPositionAndSize (Point (-10 , -10 ), Size (30 , 30 ))));
147+ }
148+
149+ {
150+ BoundingRect boundingRect;
151+ ASSERT (!boundingRect.IsValid ());
152+
153+ boundingRect.AddRect (Rect::FromPositionAndSize (Point (0 , 0 ), Size (20 , 20 )));
154+ boundingRect.AddPoint (Point (-10 , -10 ));
155+ ASSERT (boundingRect.IsValid ());
156+ ASSERT (IsEqual (boundingRect.GetRect (), Rect::FromPositionAndSize (Point (-10 , -10 ), Size (30 , 30 ))));
157+ }
158+ }
159+
97160}
0 commit comments