"""Functions for the JMU Weather Decision Support System.

Author: CS149 Faculty
Version: 10/30/2024
"""

DANGEROUS_WIND = 70.0
DANGEROUS_RAIN = 6.0

CONCERNING_WIND = 45.0
CONCERNING_RAIN = 4.0


def weather_advice(wind_speed, precipitation):
    """Make a recommendation based on wind and rain predictions.

    Args:
        wind_speed (float): predicted wind speed in miles per hour
        precipitation (float): predicted amount of rain in inches

    Returns:
        str: "ALL CLEAR", "CANCEL", or "WARN", based on the policy.
             "ERROR" if either argument is negative.
    """
    if wind_speed < 0:
        return "ERROR"
    elif precipitation < 0:
        return "ERROR"

    if precipitation > DANGEROUS_RAIN:
        return "CANCEL"
    elif wind_speed > DANGEROUS_WIND:
        return "CANCEL"
    elif precipitation > CONCERNING_RAIN:
        if wind_speed > CONCERNING_WIND:
            return "CANCEL"

    if wind_speed > CONCERNING_WIND:
        return "WARN"
    elif precipitation > CONCERNING_RAIN:
        return "WARN"

    return "ALL CLEAR"
