Exemplo n.º 1
0
int
main()
{
    k5_response_items *ri;

    check(k5_response_items_new(&ri));
    check_pred(k5_response_items_empty(ri));

    check(k5_response_items_ask_question(ri, TEST_STR1, TEST_STR1));
    check(k5_response_items_ask_question(ri, TEST_STR2, NULL));
    check_pred(nstrcmp(k5_response_items_get_challenge(ri, TEST_STR1),
                       TEST_STR1) == 0);
    check_pred(nstrcmp(k5_response_items_get_challenge(ri, TEST_STR2),
                       NULL) == 0);
    check_pred(!k5_response_items_empty(ri));

    k5_response_items_reset(ri);
    check_pred(k5_response_items_empty(ri));
    check_pred(k5_response_items_get_challenge(ri, TEST_STR1) == NULL);
    check_pred(k5_response_items_get_challenge(ri, TEST_STR2) == NULL);

    check(k5_response_items_ask_question(ri, TEST_STR1, TEST_STR1));
    check_pred(nstrcmp(k5_response_items_get_challenge(ri, TEST_STR1),
                       TEST_STR1) == 0);
    check(k5_response_items_set_answer(ri, TEST_STR1, TEST_STR1));
    check_pred(nstrcmp(k5_response_items_get_answer(ri, TEST_STR1),
                       TEST_STR1) == 0);

    k5_response_items_free(ri);

    return 0;
}
Exemplo n.º 2
0
void CbcTree::validateHeap ()
{
  if (comparison_.test_ == 0) {
    std::cout
      << " Invalid heap (no predicate)!" << std::endl ;
    return ;
  }
  std::vector<CbcNode *>::const_iterator curNode,lastNode ;
  curNode = nodes_.begin() ;
  lastNode = nodes_.end() ;
  int curNdx = 0 ;
  int parNdx = 0 ;
  if (curNode == lastNode) return ;
  if (*curNode == 0) {
    std::cout
      << " Invalid heap[" << curNdx << "] (null entry)!" << std::endl ;
  }
  std::vector<CbcNode *>::const_iterator parent ;
  std::vector<CbcNode*>::const_iterator &child = curNode ;
  for (parent = curNode ; ++curNode != lastNode ; ++parent, ++parNdx) {
    curNdx++ ;
    if (*parent == 0) {
      std::cout
        << " Invalid heap[" << parNdx << "] (parent null entry)!" << std::endl ;
      curNode++ ;
      curNdx++ ;
      continue ;
    }
    if (*curNode == 0) {
      std::cout
        << " Invalid heap[" << curNdx << "] (left child null entry)!"
	<< std::endl ;
    } else {
      if (!check_pred(*comparison_.test_,*parent,*child)) {
        std::cout
          << " Invalid heap (left child better)!" << std::endl ;
        CbcNode *node = *parent ; 
        std::cout
          << "   Parent [" << parNdx << "] (" << std::hex << node << std::dec
          << ") unsat " << node->numberUnsatisfied() << ", depth "
	  << node->depth() << ", obj " << node->objectiveValue() << "."
	  << std::endl ;
        node = *child ;
        std::cout
          << "   Child [" << curNdx << "] (" << std::hex << node << std::dec
          << ") unsat " << node->numberUnsatisfied() << ", depth "
	  << node->depth() << ", obj " << node->objectiveValue() << "."
	  << std::endl ;
      }
    }
    curNode++ ;
    curNdx++ ;
    if (curNode == lastNode) break ;
    if (*curNode == 0) {
      std::cout
        << " Invalid heap[" << curNdx << "] (right child null entry)!"
	<< std::endl ;
    } else {
      if (!check_pred(*comparison_.test_,*parent,*child)) {
        std::cout
          << " Invalid heap (right child better)!" << std::endl ;
        CbcNode *node = *parent ;
        std::cout
          << "   Parent [" << parNdx << "] (" << std::hex << node << std::dec
          << ") unsat " << node->numberUnsatisfied() << ", depth "
	  << node->depth() << ", obj " << node->objectiveValue() << "."
	  << std::endl ;
        node = *child ;
        std::cout
          << "   Child [" << curNdx << "] (" << std::hex << node << std::dec
          << ") unsat " << node->numberUnsatisfied() << ", depth "
	  << node->depth() << ", obj " << node->objectiveValue() << "."
	  << std::endl ;
      }
    }
  }
  return ;
}