///|
fn main {
  let unknown = @geocodec.parse_location("geo:1,2").unwrap()
  println("unknown_is_none: " + (unknown.uncertainty_m is None).to_string())
  let first = unknown.to_cell(@geocodec.PlusCode, 10).unwrap()
  let second = first.to_cell(@geocodec.GeoHash, 8).unwrap()
  println(
    "chained_unknown_is_none: " + (second.uncertainty_m is None).to_string(),
  )
  println(
    "chained_URI_omits_u: " + (!second.to_geouri().contains(";u=")).to_string(),
  )
  let exact = @geocodec.parse_location("geo:1,2;u=0").unwrap()
  println("explicit_zero: " + (exact.uncertainty_m == Some(0.0)).to_string())
  println(
    "unknown_CRS_rejected: " +
    (@geocodec.geouri_parse("geo:1,2;crs=custom-grid") is None).to_string(),
  )
  let tiny = "geo:1.123456789123,2;u=0.0000001"
  println(
    "tiny_u_preserved: " +
    (@geocodec.geouri_format(@geocodec.geouri_parse(tiny).unwrap()) == tiny).to_string(),
  )
  let uncertain = @geocodec.parse_location("geo:48.198634,16.371648;u=40").unwrap()
  let fine = uncertain.to_cell(@geocodec.PlusCode, 15).unwrap()
  println(
    "fine_grid_keeps_40m_bound: " +
    (fine.uncertainty_m.unwrap() >= 40.0).to_string(),
  )
  println(
    "grid_radius_below_1cm: " + (fine.cell_radius_m.unwrap() < 0.01).to_string(),
  )
}