def test_checkboxLegend_multiple():
    """Test with multiple handlers"""
    ax = plt.gca()
    line, = plt.plot([1, 2], [1, 2], color='r', lw=2)
    text = plt.text(1, 1.5, "text on plot")
    rect = mpatches.Rectangle((1.5, 1.4), 0.5, 0.5, label="rect")
    rect.set_visible(0)
    ax.add_patch(rect)
    legend = plt.legend(
        [text, line, rect], ["text", "line", "rect"],
        handler_map={
            text: VisibilityHandler(),
            line: VisibilityHandler(),
            rect: VisibilityHandler()
        })
    line_handle = legend.get_legend_handler(legend.get_legend_handler_map(),
                                            line)
    line_handler = line_handle.handler
    rect_handle = legend.get_legend_handler(legend.get_legend_handler_map(),
                                            rect)
    rect_handler = rect_handle.handler
    line_checked = line_handle.is_checked()
    rect_checked = rect_handle.is_checked()
    text_handle = legend.get_legend_handler(legend.get_legend_handler_map(),
                                            text)
    text_handler = text_handle.handler
    text_checked = text_handle.is_checked()
    check.is_none(line_handler)
    check.is_none(rect_handler)
    check.is_none(text_handler)
    check.equal(line_checked, True)
    check.equal(rect_checked, False)
    check.equal(text_checked, True)
def test_checkboxLegend_itself():
    """Test legend with handler as itself"""
    ax = plt.gca()
    line, = plt.plot([1, 2], [1, 2], color='r', lw=2)
    itself = VisibilityHandler()
    legend = plt.legend([line], ["line"],
                        handler_map={line: VisibilityHandler(handler=itself)})
    handler = legend.get_legend_handler(legend.get_legend_handler_map(),
                                        line).handler
    check.equal(itself, handler)
def test_checkboxLegend_line():
    """Test legend with lines"""
    line, = plt.plot([1, 2], [1, 2], color='r', lw=2)
    legend = plt.legend([line], ["line"],
                        handler_map={line: VisibilityHandler()})
    line_handle = legend.get_legend_handler(legend.get_legend_handler_map(),
                                            line)
    line_handler = line_handle.handler
    checked = line_handle.is_checked()
    check.is_none(line_handler)
    check.equal(checked, True)
def test_checkboxLegend_visibility_before():
    """Test legend with visibility off before adding to the handler map"""
    rect = mpatches.Rectangle((0, 0), 0.5, 0.5)
    ax = plt.gca()
    ax.add_patch(rect)
    rect.set_visible(0)
    legend = plt.legend([rect], ["rect"],
                        handler_map={rect: VisibilityHandler()})
    handle = legend.get_legend_handler(legend.get_legend_handler_map(), rect)
    checked = handle.is_checked()
    check.equal(checked, False)
def test_checkboxLegend_customHandler():
    """Test legend with custom handler"""
    ax = plt.gca()
    line, = plt.plot([1, 2], [1, 2], color='r', lw=2)
    custom_handler = ExampleHandler()
    legend = plt.legend(
        [line], ["line"],
        handler_map={line: VisibilityHandler(handler=custom_handler)})
    handler = legend.get_legend_handler(legend.get_legend_handler_map(),
                                        line).handler
    check.equal(custom_handler, handler)
def test_checkboxLegend_patch():
    """Test legend with patches"""
    rect = mpatches.Rectangle((0, 0), 0.5, 0.5, label="rect")
    ax = plt.gca()
    ax.add_patch(rect)
    legend = plt.legend([rect], ["rect"],
                        handler_map={rect: VisibilityHandler()})
    rect_handle = legend.get_legend_handler(legend.get_legend_handler_map(),
                                            rect)
    rect_handler = rect_handle.handler
    checked = rect_handle.is_checked()
    check.is_none(rect_handler)
    check.equal(checked, True)
def test_checkboxLegend_text():
    """Test legend with text"""
    ax = plt.gca()
    line, = plt.plot([1, 2], [1, 2], color='r', lw=2)
    text = plt.text(1, 1.5, "text on plot")
    legend = plt.legend([text], ["text"],
                        handler_map={text: VisibilityHandler(handler=None)})
    text_handle = legend.get_legend_handler(legend.get_legend_handler_map(),
                                            text)
    text_handler = text_handle.handler
    checked = text_handle.is_checked()
    check.is_none(text_handler)
    check.equal(checked, True)