def test_empty_option_items_ignored():
    source_line = "urgency::1| 2 || 3"
    option_line = OptionLine(source_line)
    assert option_line.key == "urgency"
    assert option_line.options == set(["1", "2", "3"])
    assert option_line.validates()
    assert option_line.text == "urgency :: 1 | 2 | 3"
def test_valid_option_line():
    source_line = "importance :: a | b | c"
    option_line = OptionLine(source_line)
    assert option_line.indent == 0
    assert option_line.key == "importance"
    assert option_line.options == set(["a", "b", "c"])
    assert option_line.validates()
    assert option_line.text == source_line
    assert str(option_line) == source_line
    assert repr(option_line) == source_line
def test_no_options_ok_to_declare_key():
    source_line = "some_input_any_value_ok ::"
    option_line = OptionLine(source_line)
    assert option_line.key == "some_input_any_value_ok"
    assert option_line.options == set()
    assert option_line.validates()
def test_wrap_options(source_line, max_option_length, expected):
    opt_line = OptionLine()
    opts_gen = (opt.strip() for opt in source_line.split("|"))
    opt_line.options = set(opt for opt in opts_gen if len(opt))
    assert opt_line._wrap_options(max_option_length) == expected
def test_not_an_option_line():
    source_line = "  Continuation line for some task"
    option_line = OptionLine(source_line)
    assert option_line.indent == 0  # Options indents are always 0
    assert option_line.key is None
    assert not option_line.validates()