def test_creation_via_custom_function(): register_named_date( "CustomDate", custom_func=lambda x: x.day == 25) assert is_named_date(date(2015, 10, 25), "CustomDate") assert is_named_date(date(1999, 12, 25), "CustomDate") assert not is_named_date(date(2015, 10, 26), "CustomDate") def custom_date_function(the_date): return the_date.month == 7 register_named_date( "CustomDate2", custom_func=custom_date_function) assert is_named_date(date(2015, 7, 25), "CustomDate2") assert is_named_date(date(1999, 7, 25), "CustomDate2") assert not is_named_date(date(2015, 10, 25), "CustomDate2")
def test_bad_creation_specifications(): with pytest.raises(MissingArgumentsError): register_named_date("Nope") with pytest.raises(MissingArgumentsError): register_named_date("Nope", 1) with pytest.raises(MissingArgumentsError): register_named_date("Nope", day=1) with pytest.raises(TypeError): register_named_date("Nope", bad_kwarg=1)
def test_named_date_sets(): register_named_date("DateA", 11, 3, nth=4) register_named_date("DateB", 11, 28) register_named_date("DateC", 9, 25) make_named_date_set("GroupC", ["DateC"]) make_named_date_set("GroupAB", ["DateA", "DateB"]) assert in_named_date_set(date(2015, 11, 26), "GroupAB") assert in_named_date_set(date(2015, 11, 28), "GroupAB") assert not in_named_date_set(date(2015, 9, 25), "GroupAB") assert in_named_date_set(date(1937, 9, 25), "GroupC") assert get_named_dates_in_set("GroupC") == {"DateC"} assert get_named_dates_in_set("GroupAB") == {"DateA", "DateB"}
def test_named_date_creation(): register_named_date("MyDate", 11, 3, nth=4) assert is_named_date(date(2015, 11, 26), "MyDate") assert is_named_date(date(2016, 11, 24), "MyDate") assert is_named_date(date(2017, 11, 23), "MyDate") assert not is_named_date(date(2014, 11, 26), "MyDate") assert not is_named_date(date(2015, 11, 25), "MyDate") assert not is_named_date(date(2015, 11, 27), "MyDate") register_named_date("MyDateHard", 11, 26) assert is_named_date(date(2016, 11, 26), "MyDateHard") assert is_named_date(date(2015, 11, 26), "MyDateHard") assert is_named_date(date(2014, 11, 26), "MyDateHard") assert not is_named_date(date(2015, 11, 25), "MyDateHard") assert not is_named_date(date(2016, 11, 24), "MyDateHard") register_named_date("SpecialDate", 9, 25) assert is_named_date(date(1937, 9, 25), "SpecialDate") assert is_named_date(date(2014, 9, 25), "SpecialDate") assert not is_named_date(date(2014, 12, 17), "SpecialDate")