Files
syn-chat-bot/.venv/lib/python3.9/site-packages/icalendar/tests/test_rfc_7529.py
Hyungi Ahn c2257d3a86 fix: 포트 충돌 회피 — note_bridge 8098, intent_service 8099
Jellyfin(8096), OrbStack(8097) 포트 충돌으로 변경.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 13:53:55 +09:00

87 lines
2.4 KiB
Python

"""This tests the compatibility with RFC 7529.
See
- https://github.com/collective/icalendar/issues/655
- https://www.rfc-editor.org/rfc/rfc7529.html
"""
import pytest
from icalendar.prop import vMonth, vRecur, vSkip
@pytest.mark.parametrize(
("uid", "scale"),
[
("4.3.1", "CHINESE"),
("4.3.2", "ETHIOPIC"),
("4.3.3", "HEBREW"),
("4.3.4", "GREGORIAN"),
],
)
def test_rscale(calendars, uid, scale):
"""Check that the RSCALE is parsed correctly."""
event = calendars.rfc_7529.walk(select=lambda c: c.get("UID") == uid)[0]
print(event.errors)
rrule = event["RRULE"]
print(rrule)
assert rrule["RSCALE"] == [scale]
@pytest.mark.parametrize(
("uid", "skip"),
[
("4.3.2", None),
("4.3.3", ["FORWARD"]),
],
)
def test_rscale_with_skip(calendars, uid, skip):
"""Check that the RSCALE is parsed correctly."""
event = calendars.rfc_7529.walk(select=lambda c: c.get("UID") == uid)[0]
recur = event["RRULE"]
assert recur.get("SKIP") == skip
def test_leap_month(calendars):
"""Check that we can parse the leap month."""
event = calendars.rfc_7529.walk(select=lambda c: c.get("UID") == "4.3.3")[0]
recur = event["RRULE"]
assert recur["BYMONTH"][0].leap is True
@pytest.mark.parametrize(
("ty", "recur", "ics"),
[
(
vRecur,
vRecur(rscale="CHINESE", freq="YEARLY"),
b"RSCALE=CHINESE;FREQ=YEARLY",
),
(vRecur, vRecur(bymonth=vMonth(10)), b"BYMONTH=10"),
(vRecur, vRecur(bymonth=vMonth("5L")), b"BYMONTH=5L"),
(vMonth, vMonth(10), b"10"),
(vMonth, vMonth("5L"), b"5L"),
(vSkip, vSkip.OMIT, b"OMIT"),
(vSkip, vSkip.BACKWARD, b"BACKWARD"),
(vSkip, vSkip.FORWARD, b"FORWARD"),
(vSkip, vSkip("OMIT"), b"OMIT"),
(vSkip, vSkip("BACKWARD"), b"BACKWARD"),
(vSkip, vSkip("FORWARD"), b"FORWARD"),
(
vRecur,
vRecur(rscale="GREGORIAN", freq="YEARLY", skip="FORWARD"),
b"RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=FORWARD",
),
(
vRecur,
vRecur(rscale="GREGORIAN", freq="YEARLY", skip=vSkip.FORWARD),
b"RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=FORWARD",
),
],
)
def test_conversion(ty, recur, ics):
"""Test string conversion."""
assert recur.to_ical() == ics
assert ty.from_ical(ics.decode()) == recur
assert ty.from_ical(ics.decode()).to_ical() == ics