use rdkit::{add_hs, clean_up, remove_hs, set_hybridization, ROMol, RemoveHsParameters};

#[test]
fn test_remove_hs() {
    let ro_mol = ROMol::from_smiles("[2H]C").unwrap();

    let mut remove_hs_parameters = RemoveHsParameters::new();
    remove_hs_parameters.set_remove_and_track_isotopes(true);
    remove_hs_parameters.set_remove_defining_bond_stereo(true);

    let no_hs_mol = remove_hs(&ro_mol, &remove_hs_parameters, true);
    let no_hs_smiles = no_hs_mol.as_smiles();
    assert_eq!(no_hs_smiles, "C");

    let add_hs_mol = add_hs(&no_hs_mol, false, false, false);
    let add_hs_smiles = add_hs_mol.as_smiles();
    assert_eq!(add_hs_smiles, "[H]C([H])([H])[2H]");

    let remove_hs_parameters = RemoveHsParameters::new();
    let mut no_hs_mol2 = remove_hs(&add_hs_mol, &remove_hs_parameters, true);
    let no_hs_smiles2 = no_hs_mol2.as_smiles();
    set_hybridization(&mut no_hs_mol2);
    assert_eq!(no_hs_smiles2, "[2H]C");
}

#[test]
fn test_mol_ops_clean_up() {
    let ro_mol = ROMol::from_smiles("[H]C([H])([H])([H])").unwrap();
    let mut rw_mol = ro_mol.as_rw_mol(true, 0);
    clean_up(&mut rw_mol);
    let new_ro_mol = rw_mol.to_ro_mol();
    let smiles = new_ro_mol.as_smiles();
    assert_eq!(smiles, "C");
}