def test_split_pick_both(self): r1 = Rect(Point(10, 10), Size(512, 512)) r2 = Rect(Point(), Size(110, 75)) r3 = Rect(Point(), Size(70, 95)) r4 = Rect(Point(), Size(90, 55)) s, rs1, rs2, r = r1.split(r2, Rect.RULE_PICK_BOTH) self.assertEqual(s, 2) self.assertEqual(rs1, Rect(r1.origin + Point(r2.size.width, 0), Size(r1.size.width - r2.size.width, r1.size.height))) self.assertEqual(rs2, Rect(r1.origin + Point(0, r2.size.height), Size(r1.size.width, r1.size.height - r2.size.height))) self.assertEqual(r, False) s, rs3, rs4, r = rs1.split(r3, Rect.RULE_PICK_BOTH) self.assertEqual(s, 2) self.assertEqual(rs3, Rect(rs1.origin + Point(r3.size.width, 0), Size(rs1.size.width - r3.size.width, rs1.size.height))) self.assertEqual(rs4, Rect(rs1.origin + Point(0, r3.size.height), Size(rs1.size.width, rs1.size.height - r3.size.height))) self.assertEqual(r, False) s, rs5, rs6, r = rs3.split(r4, Rect.RULE_PICK_BOTH) self.assertEqual(s, 2) self.assertEqual(rs5, Rect(rs3.origin + Point(r4.size.width, 0), Size(rs3.size.width - r4.size.width, rs3.size.height))) self.assertEqual(rs6, Rect(rs3.origin + Point(0, r4.size.height), Size(rs3.size.width, rs3.size.height - r4.size.height))) self.assertEqual(r, False)
def test_split_sas(self): r1 = Rect(Point(10, 10), Size(512, 512)) r2 = Rect(Point(), Size(110, 75)) r3 = Rect(Point(), Size(70, 95)) r4 = Rect(Point(), Size(90, 55)) r5 = Rect(Point(), Size(50, 75)) r6 = Rect(Point(), Size(110, 50)) r7 = Rect(Point(), Size(70, 75)) # Плохие примеры r8 = Rect(Point(), Size(512, 512)) s, rs1_, rs2_, r = r1.split(r8, Rect.RULE_SAS) self.assertEqual(s, 0) self.assertEqual(rs1_, Rect()) self.assertEqual(rs2_, Rect()) self.assertEqual(r, False) r9 = Rect(Point(), Size(200, 70)) s, rs1_, rs2_, r = r2.split(r9, Rect.RULE_SAS) self.assertEqual(s, 0) self.assertEqual(rs1_, Rect()) self.assertEqual(rs2_, Rect()) self.assertEqual(r, False) r10 = Rect(Point(), Size(50, 80)) s, rs1_, rs2_, r = r2.split(r10, Rect.RULE_SAS) self.assertEqual(s, 2) self.assertEqual(rs1_, Rect(r2.origin + Point(r10.size.height, 0), Size(r2.size.width - r10.size.height, r2.size.height))) self.assertEqual(rs2_, Rect(r2.origin + Point(0, r10.size.width), Size(r10.size.height, r2.size.height - r10.size.width))) self.assertEqual(r, True) # 1 s, ro1, ro2, r = r2.split(r6, Rect.RULE_SAS) self.assertEqual(s, 1) self.assertEqual(ro1, Rect(Point(r2.origin.x, r2.origin.y + r6.size.height), Size(r2.size.width, r2.size.height - r6.size.height))) self.assertEqual(ro2, Rect()) s, ro1, ro2, r = r2.split(r7, Rect.RULE_SAS) self.assertEqual(s, 1) self.assertEqual(ro1, Rect(Point(r2.origin.x + r7.size.width, r2.origin.y), Size(r2.size.width - r7.size.width, r2.size.height))) self.assertEqual(ro2, Rect()) # test SAS s, rs1, rs2, r = r1.split(r2, Rect.RULE_SAS) self.assertEqual(s, 2) self.assertEqual(rs1, Rect(Point(r1.origin.x + r2.size.width, r1.origin.y), Size(r1.size.width - r2.size.width, r1.size.height))) self.assertEqual(rs2, Rect(Point(r1.origin.x, r1.origin.y + r2.size.height), Size(r2.size.width, r1.size.height - r2.size.height))) s, rs3, rs4, r = rs1.split(r3, Rect.RULE_SAS) self.assertEqual(s, 2) self.assertEqual(rs3, Rect(Point(rs1.origin.x + r3.size.width, rs1.origin.y), Size(rs1.size.width - r3.size.width, r3.size.height))) self.assertEqual(rs4, Rect(Point(rs1.origin.x, rs1.origin.y + r3.size.height), Size(rs1.size.width, rs1.size.height - r3.size.height))) s, rs5, rs6, r = rs3.split(r4, Rect.RULE_SAS) self.assertEqual(s, 2) self.assertEqual(rs5, Rect(Point(rs3.origin.x + r4.size.width, rs3.origin.y), Size(rs3.size.width - r4.size.width, rs3.size.height))) self.assertEqual(rs6, Rect(Point(rs3.origin.x, rs3.origin.y + r4.size.height), Size(r4.size.width, rs3.size.height - r4.size.height)))