Test the var operations. Args: TestObj: The test object.
(TestObj)
| 298 | |
| 299 | |
| 300 | def test_basic_operations(TestObj): |
| 301 | """Test the var operations. |
| 302 | |
| 303 | Args: |
| 304 | TestObj: The test object. |
| 305 | """ |
| 306 | assert str(v(1) == v(2)) == "(1?.valueOf?.() === 2?.valueOf?.())" |
| 307 | assert str(v(1) != v(2)) == "(1?.valueOf?.() !== 2?.valueOf?.())" |
| 308 | assert str(LiteralNumberVar.create(1) < 2) == "(1 < 2)" |
| 309 | assert str(LiteralNumberVar.create(1) <= 2) == "(1 <= 2)" |
| 310 | assert str(LiteralNumberVar.create(1) > 2) == "(1 > 2)" |
| 311 | assert str(LiteralNumberVar.create(1) >= 2) == "(1 >= 2)" |
| 312 | assert str(LiteralNumberVar.create(1) + 2) == "(1 + 2)" |
| 313 | assert str(LiteralNumberVar.create(1) - 2) == "(1 - 2)" |
| 314 | assert str(LiteralNumberVar.create(1) * 2) == "(1 * 2)" |
| 315 | assert str(LiteralNumberVar.create(1) / 2) == "(1 / 2)" |
| 316 | assert str(LiteralNumberVar.create(1) // 2) == "Math.floor(1 / 2)" |
| 317 | assert str(LiteralNumberVar.create(1) % 2) == "(1 % 2)" |
| 318 | assert str(LiteralNumberVar.create(1) ** 2) == "(1 ** 2)" |
| 319 | assert str(LiteralNumberVar.create(1) & v(2)) == "pyAnd(1, () => (2))" |
| 320 | assert str(LiteralNumberVar.create(1) | v(2)) == "pyOr(1, () => (2))" |
| 321 | assert str(LiteralArrayVar.create([1, 2, 3])[0]) == "[1, 2, 3]?.at?.(0)" |
| 322 | assert ( |
| 323 | str(LiteralObjectVar.create({"a": 1, "b": 2})["a"]) |
| 324 | == '({ ["a"] : 1, ["b"] : 2 })?.["a"]' |
| 325 | ) |
| 326 | assert str(v("foo") == v("bar")) == '("foo"?.valueOf?.() === "bar"?.valueOf?.())' |
| 327 | assert ( |
| 328 | str(Var(_js_expr="foo") == Var(_js_expr="bar")) |
| 329 | == "(foo?.valueOf?.() === bar?.valueOf?.())" |
| 330 | ) |
| 331 | assert ( |
| 332 | str(LiteralVar.create("foo") == LiteralVar.create("bar")) |
| 333 | == '("foo"?.valueOf?.() === "bar"?.valueOf?.())' |
| 334 | ) |
| 335 | print(Var(_js_expr="foo").to(ObjectVar, TestObj)._var_set_state("state")) |
| 336 | assert ( |
| 337 | str( |
| 338 | Var(_js_expr="foo").to(ObjectVar, TestObj)._var_set_state("state").bar |
| 339 | == LiteralVar.create("bar") |
| 340 | ) |
| 341 | == '(state.foo?.["bar"]?.valueOf?.() === "bar"?.valueOf?.())' |
| 342 | ) |
| 343 | assert ( |
| 344 | str(Var(_js_expr="foo").to(ObjectVar, TestObj)._var_set_state("state").bar) |
| 345 | == 'state.foo?.["bar"]' |
| 346 | ) |
| 347 | assert str(abs(LiteralNumberVar.create(1))) == "Math.abs(1)" |
| 348 | assert str(LiteralArrayVar.create([1, 2, 3]).length()) == "[1, 2, 3].length" |
| 349 | assert ( |
| 350 | str(LiteralArrayVar.create([1, 2]) + LiteralArrayVar.create([3, 4])) |
| 351 | == "[...[1, 2], ...[3, 4]]" |
| 352 | ) |
| 353 | |
| 354 | # Tests for reverse operation |
| 355 | assert ( |
| 356 | str(LiteralArrayVar.create([1, 2, 3]).reverse()) |
| 357 | == "[1, 2, 3].slice().reverse()" |