"""
Assertion helpers for offsets tests
"""


def assert_offset_equal(offset, base, expected):
    actual = offset + base
    actual_swapped = base + offset
    actual_apply = offset.apply(base)
    try:
        assert actual == expected
        assert actual_swapped == expected
        assert actual_apply == expected
    except AssertionError:
        raise AssertionError(
            "\nExpected: {expected}\nActual: {actual}\nFor Offset: {offset})"
            "\nAt Date: {base}".format(
                expected=expected, actual=actual, offset=offset, base=base
            )
        )


def assert_onOffset(offset, date, expected):
    actual = offset.onOffset(date)
    assert actual == expected, (
        "\nExpected: {expected}\nActual: {actual}\nFor Offset: {offset})"
        "\nAt Date: {date}".format(
            expected=expected, actual=actual, offset=offset, date=date
        )
    )
