from micrograd.engine import Value def test_value_init(): v = Value(1) assert v.data == 1 def test_value_repr(): v = Value(2.0) assert "Value(data=2.0)" == repr(v) def test_value_add(): v1 = Value(2.0) v2 = Value(4.0) assert (v1 + v2).data == 6.0 assert "Value(data=6.0)" == repr(v1 + v2) def test_value_sub(): v1 = Value(2.0) v2 = Value(4.0) assert (v1 - v2).data == -2.0 assert "Value(data=-2.0)" == repr(v1 - v2) def test_value_mul(): v1 = Value(2.0) v2 = Value(4.0) v3 = Value(-1.0) assert (v1 * v2).data == 8.0 assert (v1 * v3).data == -2.0 def test_value_mul_add(): v1 = Value(2.0) v2 = Value(4.0) v3 = Value(-1.0) assert ((v1 * v3) + v2).data == 2.0 def test_children(): v1 = Value(2.0) v2 = Value(4.0) out = v1 * v2 assert len(out._prev) == 2 assert v1 in out._prev assert v2 in out._prev def test_operations(): v1 = Value(2.0) v2 = Value(4.0) mul = v1 * v2 add = v1 + v2 assert mul._op == '*' assert add._op == '+'