use super::super::{Language, TimeUnit};

#[derive(Default)]
pub struct Turkish;
impl Language for Turkish {
    fn clone_boxed(&self) -> super::super::BoxedLanguage {
        Box::new(Self {})
    }
    fn too_low(&self) -> &'static str {
        "şimdi"
    }
    fn too_high(&self) -> &'static str {
        "eski"
    }
    fn ago(&self) -> &'static str {
        "önce"
    }
    fn get_word(&self, tu: TimeUnit, _x: u64) -> &'static str {
        use TimeUnit::*;
        match tu {
            Nanoseconds => "nanosaniye",
            Microseconds => "mikrosaniye",
            Milliseconds => "milisaniye",
            Seconds => "saniye",
            Minutes => "dakika",
            Hours => "saat",
            Days => "gün",
            Weeks => "hafta",
            Months => "ay",
            Years => "yıl",
        }
    }
}

#[test]
fn test() {
    use super::super::Formatter;
    use std::time::Duration;
    let f = Formatter::with_language(Turkish);
    assert_eq!(f.convert(Duration::from_secs(60)), "1 dakika önce");
    assert_eq!(f.convert(Duration::from_secs(2)), "2 saniye önce");
    assert_eq!(f.convert(Duration::from_secs(5)), "5 saniye önce");
    assert_eq!(f.convert(Duration::from_secs(12)), "12 saniye önce");
    assert_eq!(f.convert(Duration::from_secs(1 * 60 * 60)), "1 saat önce");
    assert_eq!(f.convert(Duration::from_secs(2 * 60 * 60)), "2 saat önce");
    assert_eq!(
        f.convert(Duration::from_secs(1 * 24 * 60 * 60)),
        "1 gün önce"
    );
    assert_eq!(
        f.convert(Duration::from_secs(2 * 24 * 60 * 60)),
        "2 gün önce"
    );
    assert_eq!(
        f.convert(Duration::from_secs(1 * 7 * 24 * 60 * 60)),
        "1 hafta önce"
    );
    assert_eq!(
        f.convert(Duration::from_secs(2 * 7 * 24 * 60 * 60)),
        "2 hafta önce"
    );
    assert_eq!(
        f.convert(Duration::from_secs(1 * 3600 * 12 * 366)),
        "6 ay önce"
    );
    assert_eq!(
        f.convert(Duration::from_secs(1 * 3600 * 24 * 366)),
        "1 yıl önce"
    );
    assert_eq!(
        f.convert(Duration::from_secs(2 * 3600 * 24 * 366)),
        "2 yıl önce"
    );
    assert_eq!(
        f.convert(Duration::from_secs(100 * 3600 * 24 * 366)),
        "100 yıl önce"
    );
    assert_eq!(
        f.convert(Duration::from_secs(101 * 3600 * 24 * 366)),
        "101 yıl önce"
    );
    assert_eq!(
        f.convert(Duration::from_secs(111 * 3600 * 24 * 366)),
        "111 yıl önce"
    );
}
