void TestRRegion::TestSubRect() { TRect rect1(-rect[0].iBr.iX,-rect[0].iBr.iY,rect[0].iBr.iX,rect[0].iBr.iY); RRegion rgn; RRegion subRgn; RRegion rgn2; TInt index; if (!rect[0].IsEmpty()) { rgn.AddRect(rect1); for(index=0;index<4;index++) rgn.SubRect(rect[index],&subRgn); if (rect[0].iTl.iX==0) // Special case region, all rects join in the middle { test(rgn.Count()==0); test(subRgn.Count()==4); } else { test(rgn.Count()==3); test(subRgn.Count()==4); test(rgn.BoundingRect()==subRgn.BoundingRect()); rgn.SubRect(xrect); test(rgn.Count()==4); rgn2.Copy(rgn); subRgn.Clear(); rgn.SubRect(rgn.BoundingRect(),&subRgn); test(rgn.Count()==0); rgn2.SubRegion(subRgn,&rgn); test(rgn2.Count()==0); subRgn.SubRegion(rgn); test(subRgn.Count()==0); } } rgn.Close(); rgn2.Close(); subRgn.Close(); }