MCPcopy Index your code
hub / github.com/python/cpython / test_binary_op

Method test_binary_op

Lib/test/test_opcache.py:1366–1497  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1364 @cpython_only
1365 @requires_specialization
1366 def test_binary_op(self):
1367 def binary_op_add_int():
1368 for _ in range(_testinternalcapi.SPECIALIZATION_THRESHOLD):
1369 a, b = 1, 2
1370 c = a + b
1371 self.assertEqual(c, 3)
1372
1373 binary_op_add_int()
1374 self.assert_specialized(binary_op_add_int, "BINARY_OP_ADD_INT")
1375 self.assert_no_opcode(binary_op_add_int, "BINARY_OP")
1376
1377 def binary_op_int_non_compact():
1378 for _ in range(_testinternalcapi.SPECIALIZATION_THRESHOLD):
1379 a, b = 10000000000, 1
1380 c = a + b
1381 self.assertEqual(c, 10000000001)
1382 c = a - b
1383 self.assertEqual(c, 9999999999)
1384 c = a * b
1385 self.assertEqual(c, 10000000000)
1386
1387 binary_op_int_non_compact()
1388 self.assert_no_opcode(binary_op_int_non_compact, "BINARY_OP_ADD_INT")
1389 self.assert_no_opcode(binary_op_int_non_compact, "BINARY_OP_SUBTRACT_INT")
1390 self.assert_no_opcode(binary_op_int_non_compact, "BINARY_OP_MULTIPLY_INT")
1391
1392 def binary_op_add_unicode():
1393 for _ in range(_testinternalcapi.SPECIALIZATION_THRESHOLD):
1394 a, b = "foo", "bar"
1395 c = a + b
1396 self.assertEqual(c, "foobar")
1397
1398 binary_op_add_unicode()
1399 self.assert_specialized(binary_op_add_unicode, "BINARY_OP_ADD_UNICODE")
1400 self.assert_no_opcode(binary_op_add_unicode, "BINARY_OP")
1401
1402 def binary_op_add_extend():
1403 for _ in range(_testinternalcapi.SPECIALIZATION_THRESHOLD):
1404 a, b = 6, 3.0
1405 c = a + b
1406 self.assertEqual(c, 9.0)
1407 c = b + a
1408 self.assertEqual(c, 9.0)
1409 c = a - b
1410 self.assertEqual(c, 3.0)
1411 c = b - a
1412 self.assertEqual(c, -3.0)
1413 c = a * b
1414 self.assertEqual(c, 18.0)
1415 c = b * a
1416 self.assertEqual(c, 18.0)
1417 c = a / b
1418 self.assertEqual(c, 2.0)
1419 c = b / a
1420 self.assertEqual(c, 0.5)
1421
1422 binary_op_add_extend()
1423 self.assert_specialized(binary_op_add_extend, "BINARY_OP_EXTEND")

Callers

nothing calls this directly

Calls 2

assert_specializedMethod · 0.80
assert_no_opcodeMethod · 0.80

Tested by

no test coverage detected