/**
 *         parent                       parent
 *           |         successor          \\
 *           v             2               v
 *         2(b)      ------------>         -
 *        /   \
 *       -     - 
 *
 */
void test_removeNextLargerSuccessor_remove_2_from_the_tree_with_2_node(void)
{
  setNode(&node2, NULL, NULL, 'b');
  Node *parent = &node2;
  Node *removeNode;
  
  removeNode = removeNextLargerSuccessor(&parent);
  TEST_ASSERT_NULL(parent);
  TEST_ASSERT_EQUAL(1, isDoubleBlack(&parent, removeNode));
}
void test_isDoubleBlack_given_a_node_with_black_color_should_return_0(void)
{
  int result;
  setNode(&node4, NULL, NULL, 'b');
  setNode(&node3, NULL, NULL, 'r');
  Node *root = &node4;
  Node *removeNode = &node3;
  
  result = isDoubleBlack(&root, removeNode);
  TEST_ASSERT_EQUAL(0, result);
}
Node *removeNextLargerSuccessor(Node **parentPtr){
  Node *parent = *parentPtr, *removeNode;

  if(parent->left == NULL && parent->right == NULL){
    removeNode = *parentPtr;
    *parentPtr = NULL;
  }
  else if(parent->left){
    removeNode = removeNextLargerSuccessor(&(*parentPtr)->left);
    if(isDoubleBlack((*parentPtr)->left, removeNode)) 
      caseSelectForSucessor(&(*parentPtr)); 
  }
  else{
    removeNode = parent;
    *parentPtr = parent->right;
    (*parentPtr)->color = parent->color;
  }
  return removeNode;
}