wikibase 0.7.6

A library to access Wikibase
Documentation
extern crate wikibase;

#[test]
fn test_monolingual_text() {
    let mut monolingual_text = wikibase::MonoLingualText::new("Львів", "uk");
    assert_eq!("uk", monolingual_text.language());
    assert_eq!("Львів", monolingual_text.text());

    monolingual_text.set_text("Warszawa");
    monolingual_text.set_language("pl");

    assert_eq!("pl", monolingual_text.language());
    assert_eq!("Warszawa", monolingual_text.text());
}

#[test]
fn test_coordinates() {
    let mut coordinate = wikibase::Coordinate::new(
        Some(100f64),
        "http://www.wikidata.org/entity/Q2".to_string(),
        12f64,
        6f64,
        Some(0f64),
    );
    assert_eq!(100f64, coordinate.altitude().unwrap());
    assert_eq!("http://www.wikidata.org/entity/Q2", coordinate.globe());
    assert_eq!(6f64, *coordinate.longitude());
    assert_eq!(12f64, *coordinate.latitude());
    assert_eq!(0f64, coordinate.precision().unwrap());

    coordinate.set_altitude(Some(200f64));
    coordinate.set_globe("http://www.wikidata.org/entity/Q111");
    coordinate.set_longitude(47.153333333333);
    coordinate.set_latitude(9.8219444444444);
    coordinate.set_precision(Some(10f64));

    assert_eq!(200f64, coordinate.altitude().unwrap());
    assert_eq!("http://www.wikidata.org/entity/Q111", coordinate.globe());
    assert_eq!(47.153333333333, *coordinate.longitude());
    assert_eq!(9.8219444444444, *coordinate.latitude());
    assert_eq!(10f64, coordinate.precision().unwrap());
}

#[test]
fn test_entity_value() {
    let mut item = wikibase::EntityValue::new(
        wikibase::EntityType::new_from_str("item").unwrap(),
        "Q212730",
    );
    assert_eq!("Q212730", item.id());

    item.set_id("P4539");
    item.set_entity_type(wikibase::EntityType::new_from_str("property").unwrap());
    assert_eq!("P4539", item.id());
}

#[test]
fn test_entity_type() {
    let property = wikibase::EntityType::new_from_id("P17");
    assert_eq!(
        wikibase::EntityType::Property.string_value(),
        property.unwrap().string_value()
    );

    let item = wikibase::EntityType::new_from_id("Q9346299");
    assert_eq!(
        wikibase::EntityType::Item.string_value(),
        item.unwrap().string_value()
    );
}

#[test]
fn test_quantity_value() {
    let mut quantity = wikibase::QuantityValue::new(
        3f64,
        Some(1f64),
        "http://www.wikidata.org/entity/Q11574",
        Some(5f64),
    );

    assert_eq!(3f64, *quantity.amount());
    assert_eq!(1f64, quantity.lower_bound().unwrap());
    assert_eq!("http://www.wikidata.org/entity/Q11574", quantity.unit());
    assert_eq!(5f64, quantity.upper_bound().unwrap());

    quantity.set_amount(150f64);
    quantity.set_lower_bound(Some(100f64));
    quantity.set_unit("http://www.wikidata.org/entity/Q11573");
    quantity.set_upper_bound(Some(200f64));

    assert_eq!(150f64, *quantity.amount());
    assert_eq!(100f64, quantity.lower_bound().unwrap());
    assert_eq!("http://www.wikidata.org/entity/Q11573", quantity.unit());
    assert_eq!(200f64, quantity.upper_bound().unwrap());
}

#[test]
fn test_time_value() {
    let mut time = wikibase::TimeValue::new(
        0,
        0,
        "http://www.wikidata.org/entity/Q1985727",
        11,
        "+2017-10-28T00:00:00Z",
        0,
    );

    assert_eq!(0u64, *time.after());
    assert_eq!(0u64, *time.before());
    assert_eq!(
        "http://www.wikidata.org/entity/Q1985727",
        time.calendarmodel()
    );
    assert_eq!(11u64, *time.precision());
    assert_eq!("+2017-10-28T00:00:00Z", time.time());
    assert_eq!(0u64, *time.timezone());

    time.set_after(1u64);
    time.set_before(2u64);
    time.set_calendarmodel("http://www.wikidata.org/entity/Q11184");
    time.set_precision(22u64);
    time.set_time("+2018-10-28T00:00:00Z");
    time.set_timezone(3u64);

    assert_eq!(1u64, *time.after());
    assert_eq!(2u64, *time.before());
    assert_eq!(
        "http://www.wikidata.org/entity/Q11184",
        time.calendarmodel()
    );
    assert_eq!(22u64, *time.precision());
    assert_eq!("+2018-10-28T00:00:00Z", time.time());
    assert_eq!(3u64, *time.timezone());
}

#[test]
fn test_data_value_type() {
    let data_value_type = wikibase::DataValueType::new_from_str("quantity");
    assert_eq!("quantity", data_value_type.unwrap().string_value());
}

#[test]
fn test_data_value() {
    let monolingual_text = wikibase::MonoLingualText::new("Helsinki", "fi");
    let value = wikibase::Value::MonoLingual(monolingual_text);
    let data_value_type = wikibase::DataValueType::new_from_str("monolingualtext").unwrap();
    let mut data_value = wikibase::DataValue::new(data_value_type, value);

    assert_eq!("monolingualtext", data_value.value_type().string_value());

    match data_value.value() {
        &wikibase::Value::MonoLingual(ref returned_monolingual) => {
            assert_eq!("Helsinki", returned_monolingual.text());
            assert_eq!("fi", returned_monolingual.language());
        }
        _ => {}
    };

    let new_value = wikibase::Value::StringValue("София".to_string());
    data_value.set_value(new_value);
    let new_data_value_type = wikibase::DataValueType::new_from_str("string").unwrap();
    data_value.set_value_type(new_data_value_type);

    match data_value.value() {
        &wikibase::Value::StringValue(ref string_value) => {
            assert_eq!("София", string_value);
        }
        _ => {}
    };
}