무선 링크 문서의 검증 코드다. if __name__ == "__main__": 아래가 자체 테스트다.

"""무선 링크의 수치 검증.

문서: 34.무선 링크 (다중 경로 예, 고정 무선 가입자망 예, 카드 C2)
주장 1: 반사파가 직접파보다 d 미터 더 돌아오면 d / 3.0e8 초 늦는다.
        이 늦음이 비트 폭(1 / 전송률)과 비슷하거나 크면 앞 비트가 뒤 비트에 겹친다.
주장 2: 72도 섹터 5개, 섹터당 30 Mbit/s -> 기지국당 150 Mbit/s, 반경 8 km 면적 약 201 km^2.
"""
import math
from fractions import Fraction as F

C = 300_000_000


def main():
    delay_us = F(300 * 10**6, C)  # 300 m 더 돌아옴
    assert delay_us == 1
    for rate_mbps, width_us in [(F(1, 10), 10), (1, 1), (10, F(1, 10))]:
        assert F(1, rate_mbps) == width_us
    # 늦음 1 us: 0.1 Mbps에서는 비트 폭의 10%, 1 Mbps에서 100%, 10 Mbps에서 10비트에 걸침
    assert delay_us / 10 == F(1, 10)
    assert delay_us / 1 == 1
    assert delay_us / F(1, 10) == 10
    print("[OK] 다중 경로: 300 m 더 돌면 1 us 늦음 -> 0.1 Mbps 10%, 1 Mbps 1비트, 10 Mbps 10비트에 겹침")

    assert 360 // 72 == 5 and 5 * 30 == 150
    assert round(math.pi * 8**2) == 201
    print("[OK] 섹터 5개 x 30 Mbit/s = 150 Mbit/s, 면적 약 201 km^2")
    print("ALL CHECKS PASSED")


if __name__ == "__main__":
    main()