コード例 #1
0
ファイル: test_rpn.py プロジェクト: vaporon4a/rpn_calc
def test_drop():
    rpn = Rpn()
    with pytest.raises(InvalidOperationError):
        rpn.drop()  # Error
        assert rpn.stack == []
    rpn.push("1 2")
    rpn.drop()
    assert rpn.stack == [1.0]
    rpn.drop()
    assert rpn.stack == []
コード例 #2
0
ファイル: test_rpn.py プロジェクト: vaporon4a/rpn_calc
def test_minus():
    rpn = Rpn()
    rpn.push("-")  # Error
    assert rpn.stack == []
    rpn.push("12 3 -")
    assert rpn.stack == [9.0]
    rpn.push("-")  # Error
    assert rpn.stack == [9.0]

    # Chained operations
    rpn.clear()
    rpn.push("12 3 - 4 5 -")
    assert rpn.stack == [9.0, -1.0]
コード例 #3
0
ファイル: test_rpn.py プロジェクト: vaporon4a/rpn_calc
def test_plus():
    rpn = Rpn()
    rpn.push("+")  # Error
    assert rpn.stack == []
    rpn.push("12 3 +")
    assert rpn.stack == [15.0]
    rpn.push("+")  # Error
    assert rpn.stack == [15.0]

    # Chained operations
    rpn.clear()
    rpn.push("12 3 + 4 5 +")
    assert rpn.stack == [15.0, 9.0]
コード例 #4
0
ファイル: test_rpn.py プロジェクト: vaporon4a/rpn_calc
def test_push_simple():
    rpn = Rpn()
    assert rpn.stack == []
    rpn.push("12")
    assert rpn.stack == [12.0]
    rpn.push("12 3")
    assert rpn.stack == [12.0, 12.0, 3.0]
    rpn.push("-4")
    assert rpn.stack == [12.0, 12.0, 3.0, -4.0]
    rpn = Rpn()
    # Commas are interpreted as dots
    rpn.push("0 -1.3333 1,4444 0.0001")
    assert rpn.stack == [0, -1.3333, 1.4444, 0.0001]
コード例 #5
0
ファイル: test_rpn.py プロジェクト: vaporon4a/rpn_calc
def test_cos():
    rpn = Rpn()
    rpn.push('cos')  #error
    assert rpn.stack == []
    rpn.clear()
    rpn.push('360 cos')
    assert rpn.stack == [1.0]
    rpn.clear()
    rpn.push('0 cos')
    assert rpn.stack == [1.0]
コード例 #6
0
ファイル: test_rpn.py プロジェクト: vaporon4a/rpn_calc
def test_sin():
    rpn = Rpn()
    rpn.push('sin')  # error
    assert rpn.stack == []
    rpn.clear()
    rpn.push('90 sin')
    assert rpn.stack == [1.0]
    rpn.clear()
    rpn.push('0 sin')  # error
    assert rpn.stack == [0.0]
コード例 #7
0
ファイル: test_rpn.py プロジェクト: vaporon4a/rpn_calc
def test_multiply():
    rpn = Rpn()
    rpn.push("*")  # Error
    assert rpn.stack == []
    rpn.push("12 3 *")
    assert rpn.stack == [36.0]
    rpn.push("*")  # Error
    assert rpn.stack == [36.0]

    # Chained operations
    rpn.clear()
    rpn.push("12 3 * 4 5 *")
    assert rpn.stack == [36.0, 20.0]

    # Multiply by negative number
    rpn.clear()
    rpn.push("12 -3 *")
    assert rpn.stack == [-36.0]
    rpn.push("-2 *")
    assert rpn.stack == [72.0]
コード例 #8
0
ファイル: test_rpn.py プロジェクト: vaporon4a/rpn_calc
def test_get_status():
    rpn = Rpn()
    assert rpn.get_status() == "The stack is empty."
    rpn.push("1 2 3 4")
    assert rpn.get_status() == "4.0"
コード例 #9
0
ファイル: test_rpn.py プロジェクト: vaporon4a/rpn_calc
def test_push_error():
    rpn = Rpn()
    rpn.push('meuh')  # error
    assert rpn.stack == []
コード例 #10
0
ファイル: test_rpn.py プロジェクト: vaporon4a/rpn_calc
def test_clear():
    rpn = Rpn()
    rpn.push("12 3 5 7 8")
    assert rpn.stack == [12.0, 3.0, 5.0, 7.0, 8.0]
    rpn.clear()
    assert rpn.stack == []
コード例 #11
0
ファイル: test_rpn.py プロジェクト: vaporon4a/rpn_calc
def test_divide():
    rpn = Rpn()
    rpn.push("/")  # Error
    assert rpn.stack == []
    rpn.push("12 3 /")
    assert rpn.stack == [4.0]
    rpn.push("/")  # Error
    assert rpn.stack == [4.0]

    # Chained operations
    rpn.clear()
    rpn.push("12 3 / 4 5 /")
    assert rpn.stack == [4.0, .8]

    # Divide by negative number
    rpn.clear()
    rpn.push("12 -3 /")
    assert rpn.stack == [-4.0]
    rpn.push("-2 /")
    assert rpn.stack == [2.0]

    # Division by zero
    rpn.clear()
    rpn.push("42 0 /")
    assert rpn.stack == [42.0, 0.]