from stack.parentheses import par_match
from stack.number_conversion import decimal_to_any
from stack.infix_conversion import infix_to_prefix, infix_to_postfix


def test_par_match1():
    parentheses = '((()))(()()'
    assert not par_match(parentheses)


def test_par_match2():
    parentheses = '((()))(())'
    assert par_match(parentheses)


def test_par_match3():
    parentheses = '(((5+3)))*((4-2))'
    assert par_match(parentheses)


def test_to_binary1():
    num = 5
    assert decimal_to_any(num, 2) == '101'


def test_to_binary2():
    num = 10
    assert decimal_to_any(num, 2) == '1010'


def test_infix_to_prefix():
    infix = 'a+b*c'
    assert infix_to_prefix(infix) == '+a*bc'


def test_infix_to_prefix_with_parentheses1():
    infix = '(a+b)*c'
    assert infix_to_prefix(infix) == '*+abc'


def test_infix_to_prefix_with_parentheses2():
    infix = '(a+b)*(c-d)'
    assert infix_to_prefix(infix) == '*+ab-cd'


def test_infix_to_postfix():
    infix = 'a+b*c'
    assert infix_to_postfix(infix) == 'abc*+'


def test_infix_to_postfix_with_parentheses1():
    infix = '(a+b)*c'
    assert infix_to_postfix(infix) == 'ab+c*'


def test_infix_to_postfix_with_parentheses2():
    infix = '(a+b)/(c-d)'
    assert infix_to_postfix(infix) == 'ab+cd-/'