def test_rect_pure_split(): pure_square = [0., 0., 1., 1.] # division in two equal pieces from the perfect square h_2split = [(0.0, 0.0, 0.5, 1.0), (0.5, 0.0, 0.5, 1.0)] conf_h = dict(proportion=[1, 1], gap=0.0, horizontal=True) eq(_split_rect(*pure_square, **conf_h), h_2split) v_2split = [(0.0, 0.0, 1.0, 0.5), (0.0, 0.5, 1.0, 0.5)] conf_v = dict(proportion=[1, 1], gap=0.0, horizontal=False) eq(_split_rect(*pure_square, **conf_v), v_2split) # division in two non-equal pieces from the perfect square h_2split = [(0.0, 0.0, 1 / 3, 1.0), (1 / 3, 0.0, 2 / 3, 1.0)] conf_h = dict(proportion=[1, 2], gap=0.0, horizontal=True) eq(_split_rect(*pure_square, **conf_h), h_2split) v_2split = [(0.0, 0.0, 1.0, 1 / 3), (0.0, 1 / 3, 1.0, 2 / 3)] conf_v = dict(proportion=[1, 2], gap=0.0, horizontal=False) eq(_split_rect(*pure_square, **conf_v), v_2split) # division in three equal pieces from the perfect square h_2split = [(0.0, 0.0, 1 / 3, 1.0), (1 / 3, 0.0, 1 / 3, 1.0), (2 / 3, 0.0, 1 / 3, 1.0)] conf_h = dict(proportion=[1, 1, 1], gap=0.0, horizontal=True) eq(_split_rect(*pure_square, **conf_h), h_2split) v_2split = [(0.0, 0.0, 1.0, 1 / 3), (0.0, 1 / 3, 1.0, 1 / 3), (0.0, 2 / 3, 1.0, 1 / 3)] conf_v = dict(proportion=[1, 1, 1], gap=0.0, horizontal=False) eq(_split_rect(*pure_square, **conf_v), v_2split) # division in three non-equal pieces from the perfect square h_2split = [(0.0, 0.0, 1 / 4, 1.0), (1 / 4, 0.0, 1 / 2, 1.0), (3 / 4, 0.0, 1 / 4, 1.0)] conf_h = dict(proportion=[1, 2, 1], gap=0.0, horizontal=True) eq(_split_rect(*pure_square, **conf_h), h_2split) v_2split = [(0.0, 0.0, 1.0, 1 / 4), (0.0, 1 / 4, 1.0, 1 / 2), (0.0, 3 / 4, 1.0, 1 / 4)] conf_v = dict(proportion=[1, 2, 1], gap=0.0, horizontal=False) eq(_split_rect(*pure_square, **conf_v), v_2split) # splitting on a void rectangle should give multiple void null_square = [0., 0., 0., 0.] conf = dict(proportion=[1, 1], gap=0.0, horizontal=True) eq(_split_rect(*null_square, **conf), [null_square, null_square]) conf = dict(proportion=[1, 2], gap=1.0, horizontal=True) eq(_split_rect(*null_square, **conf), [null_square, null_square])
def test_gap_split(): pure_square = [0., 0., 1., 1.] # null split conf_h = dict(proportion=[1], gap=1.0, horizontal=True) eq(_split_rect(*pure_square, **conf_h), pure_square) # equal split h_2split = [(0.0, 0.0, 0.25, 1.0), (0.75, 0.0, 0.25, 1.0)] conf_h = dict(proportion=[1, 1], gap=1.0, horizontal=True) eq(_split_rect(*pure_square, **conf_h), h_2split) # disequal split h_2split = [(0.0, 0.0, 1 / 6, 1.0), (0.5 + 1 / 6, 0.0, 1 / 3, 1.0)] conf_h = dict(proportion=[1, 2], gap=1.0, horizontal=True) eq(_split_rect(*pure_square, **conf_h), h_2split)
def test_rect_deformed_split(): non_pure_square = [1., -1., 1., 0.5] # division in two equal pieces from the perfect square h_2split = [(1.0, -1.0, 0.5, 0.5), (1.5, -1.0, 0.5, 0.5)] conf_h = dict(proportion=[1, 1], gap=0.0, horizontal=True) eq(_split_rect(*non_pure_square, **conf_h), h_2split) v_2split = [(1.0, -1.0, 1.0, 0.25), (1.0, -0.75, 1.0, 0.25)] conf_v = dict(proportion=[1, 1], gap=0.0, horizontal=False) eq(_split_rect(*non_pure_square, **conf_v), v_2split) # division in two non-equal pieces from the perfect square h_2split = [(1.0, -1.0, 1 / 3, 0.5), (1 + 1 / 3, -1.0, 2 / 3, 0.5)] conf_h = dict(proportion=[1, 2], gap=0.0, horizontal=True) eq(_split_rect(*non_pure_square, **conf_h), h_2split) v_2split = [(1.0, -1.0, 1.0, 1 / 6), (1.0, 1 / 6 - 1, 1.0, 2 / 6)] conf_v = dict(proportion=[1, 2], gap=0.0, horizontal=False) eq(_split_rect(*non_pure_square, **conf_v), v_2split)
def test_false_split(): # if you ask it to be divided in only one piece, just return the original # one pure_square = [0., 0., 1., 1.] conf_h = dict(proportion=[1], gap=0.0, horizontal=True) conf_v = dict(proportion=[1], gap=0.0, horizontal=False) eq(_split_rect(*pure_square, **conf_h), pure_square) eq(_split_rect(*pure_square, **conf_v), pure_square) conf_h = dict(proportion=[1], gap=0.5, horizontal=True) conf_v = dict(proportion=[1], gap=0.5, horizontal=False) eq(_split_rect(*pure_square, **conf_h), pure_square) eq(_split_rect(*pure_square, **conf_v), pure_square) # identity on a void rectangle should not give anything strange null_square = [0., 0., 0., 0.] conf = dict(proportion=[1], gap=0.0, horizontal=True) eq(_split_rect(*null_square, **conf), null_square) conf = dict(proportion=[1], gap=1.0, horizontal=True) eq(_split_rect(*null_square, **conf), null_square) # splitting a negative rectangle should raise error neg_square = [0., 0., -1., 0.] conf = dict(proportion=[1], gap=0.0, horizontal=True) assert_raises(ValueError, _split_rect, *neg_square, **conf) conf = dict(proportion=[1, 1], gap=0.0, horizontal=True) assert_raises(ValueError, _split_rect, *neg_square, **conf) conf = dict(proportion=[1], gap=0.5, horizontal=True) assert_raises(ValueError, _split_rect, *neg_square, **conf) conf = dict(proportion=[1, 1], gap=0.5, horizontal=True) assert_raises(ValueError, _split_rect, *neg_square, **conf)