code: def test_add_group_expr_cost(self):
      grp = Group(0)
      prpty = Property(PropertyType(1))
  
      grp_expr1 = GroupExpression(MagicMock(), 1)
      grp_expr1.opr.is_logical = lambda: True
  
      grp_expr2 = GroupExpression(MagicMock())
      grp_expr2.opr.is_logical = lambda: False
  
      grp.add_expr(grp_expr1)
      grp.add_expr_cost(grp_expr1, prpty, 1)
  
      grp.add_expr(grp_expr2)
      grp.add_expr_cost(grp_expr2, prpty, 0)
  
      self.assertEqual(grp.get_best_expr(prpty), grp_expr2)
      self.assertEqual(grp.get_best_expr_cost(prpty), 0)
  
file_path: evadb/test/unit_tests/optimizer/test_group.py
imports: import unittest
  from mock import MagicMock
  from evadb.optimizer.group import Group
  from evadb.optimizer.group_expression import GroupExpression
  from evadb.optimizer.property import Property, PropertyType
label_desc: Use image node_id 3 for calling the TestGroup obj's underlying member method code with example usage: obj.test_add_group_expr_cost() without return types