Exemplo n.º 1
0
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;
};