# boundary value analysis : nature of roots of a quadratic equation | bva for nature of roots of a quadratic equation ; if a = 0 , d / 2 a will yield exception hence it is not a valid quadratic equation ; if d > 0 , it will be real roots ; if d == 0 , it will be equal roots ; if d < 0 , it will be imaginary roots ; function to check for all testcases ; 
def nature_of_roots(a, b, c):
    if (a == 0):
        print("Not a Quadratic Equation")
        return
    D = b * b - 4 * a * c
    if (D > 0):
        print("Real Roots")
    elif (D == 0):
        print("Equal Roots")
    else:
        print("Imaginary Roots")


def checkForAllTestCase():
    print("TestcaseTABSYMBOLaTABSYMBOLbTABSYMBOLcTABSYMBOLActual Output")
    print()
    a = b = c = 0
    testcase = 1
    while (testcase <= 13):
        if (testcase == 1):
            a = 0
            b = 50
            c = 50
        elif (testcase == 2):
            a = 1
            b = 50
            c = 50
        elif (testcase == 3):
            a = 50
            b = 50
            c = 50
        elif (testcase == 4):
            a = 99
            b = 50
            c = 50
        elif (testcase == 5):
            a = 100
            b = 50
            c = 50
        elif (testcase == 6):
            a = 50
            b = 0
            c = 50
        elif (testcase == 7):
            a = 50
            b = 1
            c = 50
        elif (testcase == 8):
            a = 50
            b = 99
            c = 50
        elif (testcase == 9):
            a = 50
            b = 100
            c = 50
        elif (testcase == 10):
            a = 50
            b = 50
            c = 0
        elif (testcase == 11):
            a = 50
            b = 50
            c = 1
        elif (testcase == 12):
            a = 50
            b = 50
            c = 99
        elif (testcase == 13):
            a = 50
            b = 50
            c = 100
        print(
            "TABSYMBOL",
            testcase,
            "TABSYMBOL",
            a,
            "TABSYMBOL",
            b,
            "TABSYMBOL",
            c,
            "TABSYMBOL",
            end="")
        nature_of_roots(a, b, c)
        print()
        testcase += 1


if __name__ == '__main__':
    checkForAllTestCase()

# Expected output:
TestcaseTABSYMBOLaTABSYMBOLbTABSYMBOLcTABSYMBOLActual Output

TABSYMBOL 1 TABSYMBOL 0 TABSYMBOL 50 TABSYMBOL 50 TABSYMBOLNot a Quadratic Equation

TABSYMBOL 2 TABSYMBOL 1 TABSYMBOL 50 TABSYMBOL 50 TABSYMBOLReal Roots

TABSYMBOL 3 TABSYMBOL 50 TABSYMBOL 50 TABSYMBOL 50 TABSYMBOLImaginary Roots

TABSYMBOL 4 TABSYMBOL 99 TABSYMBOL 50 TABSYMBOL 50 TABSYMBOLImaginary Roots

TABSYMBOL 5 TABSYMBOL 100 TABSYMBOL 50 TABSYMBOL 50 TABSYMBOLImaginary Roots

TABSYMBOL 6 TABSYMBOL 50 TABSYMBOL 0 TABSYMBOL 50 TABSYMBOLImaginary Roots

TABSYMBOL 7 TABSYMBOL 50 TABSYMBOL 1 TABSYMBOL 50 TABSYMBOLImaginary Roots

TABSYMBOL 8 TABSYMBOL 50 TABSYMBOL 99 TABSYMBOL 50 TABSYMBOLImaginary Roots

TABSYMBOL 9 TABSYMBOL 50 TABSYMBOL 100 TABSYMBOL 50 TABSYMBOLEqual Roots

TABSYMBOL 10 TABSYMBOL 50 TABSYMBOL 50 TABSYMBOL 0 TABSYMBOLReal Roots

TABSYMBOL 11 TABSYMBOL 50 TABSYMBOL 50 TABSYMBOL 1 TABSYMBOLReal Roots

TABSYMBOL 12 TABSYMBOL 50 TABSYMBOL 50 TABSYMBOL 99 TABSYMBOLImaginary Roots

TABSYMBOL 13 TABSYMBOL 50 TABSYMBOL 50 TABSYMBOL 100 TABSYMBOLImaginary Roots