def testHorizontalRuleMatch_ccw_right(self): leftside = Side("left", self.makeEdgeDict(Edge("X XXX", DIR.RIGHT))) rightside = Side("right", self.makeEdgeDict(Edge(" XX ", DIR.TOP))) rule = HorizontalRule('A', ROT.NONE, 'B', ROT.FROM_CODE['-']) check = rule.check(Arrangement([leftside, rightside])) if not check: dump(leftside, rightside, leftside.getEdge(DIR.RIGHT), rightside.getEdge(DIR.TOP)) self.assertTrue(check)
def makeEdgeDict(self, *special_edge): edges = {} for d in DIR.ALL: edges[d] = Edge(" "*6, d) for edge in special_edge: edges[edge.direction] = edge return edges
def testHorizontalRuleMatch_cw_left(self): leftside = Side("left", self.makeEdgeDict(Edge("X XXX", DIR.TOP))) rightside = Side("right", self.makeEdgeDict(Edge(" XX ", DIR.LEFT))) rule = HorizontalRule('A', ROT.FROM_CODE['+'], 'B', ROT.NONE) check = rule.check(Arrangement([leftside, rightside])) self.assertTrue(check)
def testHorizontalRuleMatch_noRotation(self): leftside = Side("left", self.makeEdgeDict(Edge("X XXX", DIR.RIGHT))) rightside = Side("right", self.makeEdgeDict(Edge(" XX ", DIR.LEFT))) rule = HorizontalRule('A', ROT.NONE, 'B', ROT.NONE) check = rule.check(Arrangement([leftside, rightside])) self.assertTrue(check)
def testVerticalRuleMatch_noRotation(self): topside = Side("top", self.makeEdgeDict(Edge("X XXX", DIR.BOTTOM))) bottomside = Side("bottom", self.makeEdgeDict(Edge(" XX ", DIR.TOP))) rule = VerticalRule('A', 'B') check = rule.check(Arrangement([topside, bottomside])) self.assertTrue(check)
def testEdgeDoesNotMatch_SpaceVsSpace(self): e1 = Edge("XX X ", DIR.TOP) e2 = Edge(" XX ", DIR.BOTTOM) self.assertTrue(e1.matches(e2))
def testEdgeDoesNotMatch_XvsX(self): e1 = Edge("XX XX", DIR.TOP) e2 = Edge(" XX X", DIR.BOTTOM) self.assertFalse(e1.matches(e2))
def testEdgeMatch_orthogonal2(self): e1 = Edge("X XXX", DIR.RIGHT) e2 = Edge(" XX ", DIR.BOTTOM) self.assertTrue(e1.matches(e2))
def testEdgeMatch_parallel(self): e1 = Edge("X XXX", DIR.TOP) e2 = Edge(" XX ", DIR.BOTTOM) self.assertTrue(e1.matches(e2))