86 lines
2.3 KiB
Python
86 lines
2.3 KiB
Python
import pytest
|
|
from src.basic_data_handling.float_nodes import (
|
|
FloatAdd,
|
|
FloatSubtract,
|
|
FloatMultiply,
|
|
FloatDivide,
|
|
FloatPower,
|
|
FloatRound,
|
|
FloatIsInteger,
|
|
FloatAsIntegerRatio,
|
|
FloatHex,
|
|
FloatFromHex,
|
|
)
|
|
|
|
def test_float_add():
|
|
node = FloatAdd()
|
|
assert node.add(2.2, 2.2) == (4.4,)
|
|
assert node.add(-1.5, 1.5) == (0.0,)
|
|
assert node.add(0.0, 0.0) == (0.0,)
|
|
|
|
|
|
def test_float_subtract():
|
|
node = FloatSubtract()
|
|
assert node.subtract(5.5, 2.2) == (3.3,)
|
|
assert node.subtract(-1.5, 1.5) == (-3.0,)
|
|
assert node.subtract(0.0, 0.0) == (0.0,)
|
|
|
|
|
|
def test_float_multiply():
|
|
node = FloatMultiply()
|
|
assert node.multiply(2.0, 3.5) == (7.0,)
|
|
assert node.multiply(-2.0, 3.0) == (-6.0,)
|
|
assert node.multiply(0.0, 5.0) == (0.0,)
|
|
|
|
|
|
def test_float_divide():
|
|
node = FloatDivide()
|
|
assert node.divide(7.0, 2.0) == (3.5,)
|
|
assert node.divide(-6.0, 3.0) == (-2.0,)
|
|
with pytest.raises(ValueError, match="Cannot divide by zero."):
|
|
node.divide(5.0, 0.0)
|
|
|
|
|
|
def test_float_power():
|
|
node = FloatPower()
|
|
assert node.power(2.0, 3.0) == (8.0,)
|
|
assert node.power(5.0, 0.0) == (1.0,)
|
|
assert node.power(-2.0, 3.0) == (-8.0,)
|
|
|
|
|
|
def test_float_round():
|
|
node = FloatRound()
|
|
assert node.round(3.14159, 2) == (3.14,)
|
|
assert node.round(2.71828, 3) == (2.718,)
|
|
assert node.round(-1.2345, 1) == (-1.2,)
|
|
assert node.round(0.0, 0) == (0.0,)
|
|
|
|
|
|
def test_float_is_integer():
|
|
node = FloatIsInteger()
|
|
assert node.is_integer(3.0) == (True,)
|
|
assert node.is_integer(3.14) == (False,)
|
|
assert node.is_integer(-2.0) == (True,)
|
|
assert node.is_integer(0.0) == (True,)
|
|
|
|
|
|
def test_float_as_integer_ratio():
|
|
node = FloatAsIntegerRatio()
|
|
assert node.as_integer_ratio(3.5) == (7, 2)
|
|
assert node.as_integer_ratio(2.0) == (2, 1)
|
|
assert node.as_integer_ratio(-1.25) == (-5, 4)
|
|
|
|
|
|
def test_float_hex():
|
|
node = FloatHex()
|
|
assert node.to_hex(3.5) == ("0x1.c000000000000p+1",)
|
|
assert node.to_hex(0.0) == ("0x0.0p+0",)
|
|
assert node.to_hex(-2.5) == ("-0x1.4000000000000p+1",)
|
|
|
|
|
|
def test_float_from_hex():
|
|
node = FloatFromHex()
|
|
assert node.from_hex("0x1.c000000000000p+1") == (3.5,)
|
|
assert node.from_hex("0x0.0p+0") == (0.0,)
|
|
assert node.from_hex("-0x1.4000000000000p+1") == (-2.5,)
|