← back to Paul Conrad Archive

tests/test_normalize.py

36 lines

from conrad.normalize import clean_subject, norm_title, parse_date, person_from_heading, presidents_in_text


def test_parse_date_loc_style():
    d = parse_date("1984 Mar. 13 [publication date]")
    assert d["date_exact"] == "1984-03-13" and d["year"] == 1984


def test_parse_date_iso_month_year_and_ranges():
    assert parse_date("1969-03")["date_end"] == "1969-03-31"
    assert parse_date("1964")["date_start"] == "1964-01-01"
    assert parse_date("Feb 1964")["date_end"] == "1964-02-29"  # leap year
    r = parse_date("[between 1971 and 1980]")
    assert (r["date_start"], r["date_end"], r["year"]) == ("1971-01-01", "1980-12-31", None)
    assert parse_date("1950s–1963")["date_start"] == "1950-01-01"
    assert parse_date(None)["year"] is None


def test_parse_date_estimate_flag():
    assert parse_date("1965?")["estimate"] is True


def test_norm_title():
    assert norm_title('"S&L\'s and HUD"') == norm_title("S&L's and HUD")
    assert norm_title("Untitled") == ""
    assert norm_title("Black teen-agers 40% unemployed.--news item") == "black teen agers 40 unemployed"


def test_people_and_presidents():
    assert person_from_heading("Nixon, Richard M. (Richard Milhous), 1913-1994") == "Nixon, Richard M."
    assert person_from_heading("Khrushchev, Nikita Sergeevich,--1894-1971--Quotations.") == "Khrushchev, Nikita Sergeevich"
    assert person_from_heading("Deficit financing--1980-1990.") is None
    assert person_from_heading("United States. Department of Defense") is None
    assert presidents_in_text("LBJ and Nixon at the Reagan ranch") == ["Johnson, Lyndon B.", "Nixon, Richard M.", "Reagan, Ronald"]
    assert clean_subject("Deficit financing--1980-1990.") == "Deficit financing"