void test3() { string smi = "C1COCCNCOCNSCC1"; unsigned char heteros[] = {2, 5, 7, 9, 10}; Mol *m = SmilesToMol(smi); { unsigned int nSeen = 0; for (Mol::HeteroatomIterator heteroIt = m->beginHeteros(); heteroIt != m->endHeteros(); heteroIt++) { CHECK_INVARIANT((*heteroIt)->getIdx() == heteros[nSeen], "bad hetero"); nSeen++; } } { unsigned int nSeen = 0; for (Mol::HeteroatomIterator heteroIt = m->beginHeteros(); heteroIt != m->endHeteros(); ++heteroIt) { CHECK_INVARIANT((*heteroIt)->getIdx() == heteros[nSeen], "bad hetero"); nSeen++; } } { Mol::HeteroatomIterator heteroIt = m->beginHeteros(); heteroIt++; heteroIt++; heteroIt--; CHECK_INVARIANT((*heteroIt)->getIdx() == heteros[1], "bad hetero"); CHECK_INVARIANT((*--heteroIt)->getIdx() == heteros[0], "bad hetero"); CHECK_INVARIANT((*heteroIt)->getIdx() == heteros[0], "bad hetero"); } BOOST_LOG(rdInfoLog) << "test3 done" << endl; };