0

I have to find the control flow graph and cyclomatic complexity for this code and then suggest some white box test cases and black box test cases. But I am having trouble making a CFG for the code.

Would appreciate some help on test cases as well.

private void downShift(int index)
{
    // index of "child", which will be either index * 2 or index * 2 + 1
    int childIndex;

    // temp storage for item at index where shifting begins
    Comparable temp = theItems[index];

    // shift items, as needed
    while (index * 2 <= theSize)
    {
        // set childIndex to "left" child
        childIndex = index * 2;

        // move to "right" child if "right" child < "left" child
        if (childIndex != theSize && theItems[childIndex + 1].compareTo(theItems[childIndex]) < 0)
            childIndex++;

        if (theItems[childIndex].compareTo(temp) < 0)
        {
        // shift "child" down if child < temp
            theItems[index] = theItems[childIndex];
        }
        else
        {
            // shifting complete
            break;
        }

        // increment index
        index = childIndex;
    }

    // position item that was originally at index where shifting began
    theItems[index] = temp;
}
Cœur
  • 37,241
  • 25
  • 195
  • 267

1 Answers1

1

The basic cyclomatic complexity here is 4: while + if + if + 1. If you consider extended cyclomatic complexity as is done by Understand or CMTJava, you also need to add 1 for the conjuncts, so it will be 5. Unconditional control statements such as break do not affect the cyclomatic complexity value.

Alexander Serebrenik
  • 3,567
  • 2
  • 16
  • 32