[lang-ref] ( what_is_true_in_if_statement ) ( python )

@pytest.mark.parametrize(
    'v, expected',
    [
        (True    , True),
        (False   , False),
        (None    , False),
        (''      , False),
        ('True'  , True),
        ('False' , True),
        ('0'     , True),
        (-2      , True),
        (-1      , True),
        (0       , False),
        (1       , True),
        (2       , True),
        ([]      , False),
        ([True]  , True),
        ([False] , True),
    ],
)
def test_what_is_true_in_if_statement(v, expected):
    # empty and 0 is False, else True
    # What values `if v:` treats as true...
    is_true = False
    if v:
        is_true = True
    assert is_true == expected

    # Equivalent check using bool(v)
    assert bool(v) == expected