MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_constant_folding_binop

Method test_constant_folding_binop

Lib/test/test_peepholer.py:331–442  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

329
330 @unittest.expectedFailure # TODO: RUSTPYTHON; BINARY_OP 26 ([])
331 def test_constant_folding_binop(self):
332 tests = [
333 ('1 + 2', 'NB_ADD', True, 'LOAD_SMALL_INT', 3),
334 ('1 + 2 + 3', 'NB_ADD', True, 'LOAD_SMALL_INT', 6),
335 ('1 + ""', 'NB_ADD', False, None, None),
336 ('1 - 2', 'NB_SUBTRACT', True, 'LOAD_CONST', -1),
337 ('1 - 2 - 3', 'NB_SUBTRACT', True, 'LOAD_CONST', -4),
338 ('1 - ""', 'NB_SUBTRACT', False, None, None),
339 ('2 * 2', 'NB_MULTIPLY', True, 'LOAD_SMALL_INT', 4),
340 ('2 * 2 * 2', 'NB_MULTIPLY', True, 'LOAD_SMALL_INT', 8),
341 ('2 / 2', 'NB_TRUE_DIVIDE', True, 'LOAD_CONST', 1.0),
342 ('2 / 2 / 2', 'NB_TRUE_DIVIDE', True, 'LOAD_CONST', 0.5),
343 ('2 / ""', 'NB_TRUE_DIVIDE', False, None, None),
344 ('2 // 2', 'NB_FLOOR_DIVIDE', True, 'LOAD_SMALL_INT', 1),
345 ('2 // 2 // 2', 'NB_FLOOR_DIVIDE', True, 'LOAD_SMALL_INT', 0),
346 ('2 // ""', 'NB_FLOOR_DIVIDE', False, None, None),
347 ('2 % 2', 'NB_REMAINDER', True, 'LOAD_SMALL_INT', 0),
348 ('2 % 2 % 2', 'NB_REMAINDER', True, 'LOAD_SMALL_INT', 0),
349 ('2 % ()', 'NB_REMAINDER', False, None, None),
350 ('2 ** 2', 'NB_POWER', True, 'LOAD_SMALL_INT', 4),
351 ('2 ** 2 ** 2', 'NB_POWER', True, 'LOAD_SMALL_INT', 16),
352 ('2 ** ""', 'NB_POWER', False, None, None),
353 ('2 << 2', 'NB_LSHIFT', True, 'LOAD_SMALL_INT', 8),
354 ('2 << 2 << 2', 'NB_LSHIFT', True, 'LOAD_SMALL_INT', 32),
355 ('2 << ""', 'NB_LSHIFT', False, None, None),
356 ('2 >> 2', 'NB_RSHIFT', True, 'LOAD_SMALL_INT', 0),
357 ('2 >> 2 >> 2', 'NB_RSHIFT', True, 'LOAD_SMALL_INT', 0),
358 ('2 >> ""', 'NB_RSHIFT', False, None, None),
359 ('2 | 2', 'NB_OR', True, 'LOAD_SMALL_INT', 2),
360 ('2 | 2 | 2', 'NB_OR', True, 'LOAD_SMALL_INT', 2),
361 ('2 | ""', 'NB_OR', False, None, None),
362 ('2 & 2', 'NB_AND', True, 'LOAD_SMALL_INT', 2),
363 ('2 & 2 & 2', 'NB_AND', True, 'LOAD_SMALL_INT', 2),
364 ('2 & ""', 'NB_AND', False, None, None),
365 ('2 ^ 2', 'NB_XOR', True, 'LOAD_SMALL_INT', 0),
366 ('2 ^ 2 ^ 2', 'NB_XOR', True, 'LOAD_SMALL_INT', 2),
367 ('2 ^ ""', 'NB_XOR', False, None, None),
368 ('(1, )[0]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 1),
369 ('(1, )[-1]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 1),
370 ('(1 + 2, )[0]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 3),
371 ('(1, (1, 2))[1][1]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 2),
372 ('(1, 2)[2-1]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 2),
373 ('(1, (1, 2))[1][2-1]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 2),
374 ('(1, (1, 2))[1:6][0][2-1]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 2),
375 ('"a"[0]', 'NB_SUBSCR', True, 'LOAD_CONST', 'a'),
376 ('("a" + "b")[1]', 'NB_SUBSCR', True, 'LOAD_CONST', 'b'),
377 ('("a" + "b", )[0][1]', 'NB_SUBSCR', True, 'LOAD_CONST', 'b'),
378 ('("a" * 10)[9]', 'NB_SUBSCR', True, 'LOAD_CONST', 'a'),
379 ('(1, )[1]', 'NB_SUBSCR', False, None, None),
380 ('(1, )[-2]', 'NB_SUBSCR', False, None, None),
381 ('"a"[1]', 'NB_SUBSCR', False, None, None),
382 ('"a"[-2]', 'NB_SUBSCR', False, None, None),
383 ('("a" + "b")[2]', 'NB_SUBSCR', False, None, None),
384 ('("a" + "b", )[0][2]', 'NB_SUBSCR', False, None, None),
385 ('("a" + "b", )[1][0]', 'NB_SUBSCR', False, None, None),
386 ('("a" * 10)[10]', 'NB_SUBSCR', False, None, None),
387 ('(1, (1, 2))[2:6][0][2-1]', 'NB_SUBSCR', False, None, None),
388 ]

Callers

nothing calls this directly

Calls 7

check_lnotabMethod · 0.95
get_binop_argvalFunction · 0.85
subTestMethod · 0.80
assertNotInBytecodeMethod · 0.80
assertInBytecodeMethod · 0.80
assertNotInMethod · 0.80
compileFunction · 0.50

Tested by

no test coverage detected