|
1 | 1 | """Tests for operators.""" |
2 | 2 |
|
| 3 | +from typing import cast |
| 4 | + |
3 | 5 | import astx |
| 6 | +import pytest |
4 | 7 |
|
5 | 8 | from astx.literals.numeric import LiteralInt32 |
6 | | -from astx.operators import AssignmentExpr, VariableAssignment |
| 9 | +from astx.operators import ( |
| 10 | + AssignmentExpr, |
| 11 | + AugAssign, |
| 12 | + OpCodeAugAssign, |
| 13 | + VariableAssignment, |
| 14 | +) |
7 | 15 | from astx.variables import Variable |
8 | 16 | from astx.viz import visualize |
9 | 17 |
|
@@ -116,3 +124,31 @@ def test_not_op() -> None: |
116 | 124 | assert op.get_struct() |
117 | 125 | assert op.get_struct(simplified=True) |
118 | 126 | visualize(op.get_struct()) |
| 127 | + |
| 128 | + |
| 129 | +@pytest.mark.parametrize( |
| 130 | + "operator, value", |
| 131 | + [ |
| 132 | + (cast(OpCodeAugAssign, "+="), 10), |
| 133 | + (cast(OpCodeAugAssign, "-="), 5), |
| 134 | + (cast(OpCodeAugAssign, "*="), 3), |
| 135 | + (cast(OpCodeAugAssign, "/="), 2), |
| 136 | + (cast(OpCodeAugAssign, "//="), 2), |
| 137 | + (cast(OpCodeAugAssign, "%="), 4), |
| 138 | + (cast(OpCodeAugAssign, "**="), 2), |
| 139 | + (cast(OpCodeAugAssign, "&="), 6), |
| 140 | + (cast(OpCodeAugAssign, "|="), 3), |
| 141 | + (cast(OpCodeAugAssign, "^="), 1), |
| 142 | + (cast(OpCodeAugAssign, "<<="), 1), |
| 143 | + (cast(OpCodeAugAssign, ">>="), 2), |
| 144 | + ], |
| 145 | +) |
| 146 | +def test_aug_assign_operations(operator: OpCodeAugAssign, value: int) -> None: |
| 147 | + """Test all augmented assignment operators using parametrize.""" |
| 148 | + var_x = astx.Identifier(value="x") |
| 149 | + literal_value = LiteralInt32(value) |
| 150 | + aug_assign = AugAssign(var_x, operator, literal_value) |
| 151 | + |
| 152 | + assert str(aug_assign) == f"AugAssign[{operator}]" |
| 153 | + assert aug_assign.get_struct() |
| 154 | + assert aug_assign.get_struct(simplified=True) |
0 commit comments