use planetsfactory::config::parameters::*;
use planetsfactory::engine::evolution::PlanetEvolution;
use planetsfactory::engine::formation::FormationModel;
use planetsfactory::engine::generator::{GeneratedPlanet, SystemGeneratorConfig, generate_system};
use std::process;
fn main() {
let config = SystemGeneratorConfig::solar_like(8);
let system = generate_system(&config);
let mut count = 0_u64;
for p in &system {
match p {
GeneratedPlanet::Terrestrial(_)
| GeneratedPlanet::SuperEarth(_)
| GeneratedPlanet::SubNeptune(_)
| GeneratedPlanet::GasGiant(_)
| GeneratedPlanet::IceGiant(_)
| GeneratedPlanet::LavaWorld(_)
| GeneratedPlanet::OceanWorld(_)
| GeneratedPlanet::Rogue(_) => count += 1,
}
}
let formation = FormationModel::solar_like();
let iso_1au = formation.isolation_mass(1.0);
let iso_5au = formation.isolation_mass(5.0);
let crit = formation.critical_core_mass();
let snow = formation.snow_line_radius();
let evo = PlanetEvolution::new(JUPITER_MASS, JUPITER_RADIUS, 5.2 * AU, SOLAR_LUMINOSITY);
let cooling = evo.cooling_luminosity();
let xuv_loss = evo.xuv_mass_loss_rate(1e-3);
let ok = system.len() == 8
&& count == 8
&& iso_1au > 0.0
&& iso_5au > iso_1au
&& crit > 0.0
&& snow > AU
&& cooling > 0.0
&& xuv_loss > 0.0;
if ok {
process::exit(0);
} else {
process::exit(1);
}
}