use super::types::EpsgDatabase;
mod additional_geographic;
mod african;
mod asian_pacific;
mod european;
mod nad83;
mod polar;
mod south_american;
mod vertical;
pub(crate) fn register_extended_crs(db: &mut EpsgDatabase) {
nad83::register_nad83_state_planes(db);
european::register_european_national_grids(db);
asian_pacific::register_asian_pacific_grids(db);
south_american::register_south_american_grids(db);
african::register_african_grids(db);
polar::register_polar_grids(db);
additional_geographic::register_additional_geographic(db);
vertical::register_vertical_crs(db);
}
#[cfg(test)]
#[allow(clippy::expect_used)]
mod tests {
use super::*;
use crate::epsg::types::CrsType;
#[test]
fn test_nad83_state_planes_registered() {
let mut db = EpsgDatabase {
definitions: std::collections::HashMap::new(),
};
register_extended_crs(&mut db);
assert!(db.contains(2225));
assert!(db.contains(2263));
assert!(db.contains(2277));
}
#[test]
fn test_nad83_2011_state_planes() {
let mut db = EpsgDatabase {
definitions: std::collections::HashMap::new(),
};
register_extended_crs(&mut db);
assert!(db.contains(6355));
assert!(db.contains(6401));
}
#[test]
fn test_european_grids_registered() {
let mut db = EpsgDatabase {
definitions: std::collections::HashMap::new(),
};
register_extended_crs(&mut db);
assert!(db.contains(3006));
assert!(db.contains(28992));
assert!(db.contains(5514));
assert!(db.contains(31370));
assert!(db.contains(3763));
}
#[test]
fn test_asian_pacific_grids_registered() {
let mut db = EpsgDatabase {
definitions: std::collections::HashMap::new(),
};
register_extended_crs(&mut db);
assert!(db.contains(4502));
assert!(db.contains(5179));
assert!(db.contains(2193));
assert!(db.contains(3414));
assert!(db.contains(2326));
assert!(db.contains(3826));
}
#[test]
fn test_south_american_grids_registered() {
let mut db = EpsgDatabase {
definitions: std::collections::HashMap::new(),
};
register_extended_crs(&mut db);
assert!(db.contains(31981));
assert!(db.contains(31985));
assert!(db.contains(5343));
assert!(db.contains(5349));
assert!(db.contains(3116));
}
#[test]
fn test_african_grids_registered() {
let mut db = EpsgDatabase {
definitions: std::collections::HashMap::new(),
};
register_extended_crs(&mut db);
assert!(db.contains(2046));
assert!(db.contains(2055));
assert!(db.contains(22992));
assert!(db.contains(26331));
assert!(db.contains(25000));
}
#[test]
fn test_polar_grids_registered() {
let mut db = EpsgDatabase {
definitions: std::collections::HashMap::new(),
};
register_extended_crs(&mut db);
assert!(db.contains(3411));
assert!(db.contains(3413));
assert!(db.contains(3031));
assert!(db.contains(3976));
assert!(db.contains(32661));
assert!(db.contains(32761));
}
#[test]
fn test_vertical_crs_registered() {
let mut db = EpsgDatabase {
definitions: std::collections::HashMap::new(),
};
register_extended_crs(&mut db);
assert!(db.contains(5703));
assert!(db.contains(5773));
assert!(db.contains(3855));
let navd88 = db.lookup(5703).expect("NAVD88 should exist");
assert_eq!(navd88.crs_type, CrsType::Vertical);
assert_eq!(navd88.unit, "metre");
}
#[test]
fn test_additional_geographic_registered() {
let mut db = EpsgDatabase {
definitions: std::collections::HashMap::new(),
};
register_extended_crs(&mut db);
assert!(db.contains(7789));
assert!(db.contains(6668));
assert!(db.contains(7844));
assert!(db.contains(6318));
let jgd2011 = db.lookup(6668).expect("JGD2011 should exist");
assert_eq!(jgd2011.crs_type, CrsType::Geographic);
assert_eq!(jgd2011.unit, "degree");
}
#[test]
fn test_extended_crs_count() {
let mut db = EpsgDatabase {
definitions: std::collections::HashMap::new(),
};
register_extended_crs(&mut db);
assert!(
db.len() >= 300,
"Extended CRS should have at least 300 definitions, got {}",
db.len()
);
}
#[test]
fn test_full_database_above_500() {
let db = EpsgDatabase::new();
assert!(
db.len() >= 500,
"Full database should have 500+ definitions, got {}",
db.len()
);
}
}