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; }
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 ; }