def test_open_only():
    """Test only open parens."""
    assert check_parens('(((') == 1
def test_open():
    """Test its open."""
    assert check_parens('((())') == 1
def test_broken_start_with_close():
    """Test equal number but wrong order."""
    assert check_parens(')))(((') == -1
def test_check_parens_open2():
    assert check_parens(u'((((((text') == 1
def test_broken():
    """Test that its broken with one too many closing."""
    assert check_parens('(()))') == -1
def test_no_parens_returns_error():
    """Test that if string isnt just parens error."""
    with pytest.raises(ValueError):
        check_parens('hello')
def test_check_parens_balanced1():
    assert check_parens(u'') == 0
def test_check_parens_broken2():
    assert check_parens(u'(text))') == -1
def test_check_parens_broken3():
    assert check_parens(u'(text(text(text(text)text)text)text)text)') == -1
def test_check_parens_open1():
    assert check_parens(u'(((text))') == 1
def test_check_parens_broken1():
    assert check_parens(u')') == -1
def test_check_parens_balanced4():
    assert check_parens(u'()') == 0
def test_check_parens_balanced3():
    assert check_parens(u'(text(text(text())))') == 0
def test_check_parens_balanced2():
    assert check_parens(u'(text)') == 0
def test_closed_only():
    """Test only closed parens."""
    assert check_parens(')))') == -1
def test_check_parens_invalid1():
    assert check_parens(u')(') == -1
def test_balance_large():
    """Test large balanced."""
    assert check_parens('(())()(()())') == 0
def test_check_parens_invalid2():
    assert check_parens(u'(dog(cat)),(foo(bar(baz)bar)foo))') == -1
def test_balanced():
    """Test for a simple balanced case."""
    assert check_parens('()') == 0
def test_check_parens_open3():
    assert check_parens(u'(') == 1