code: def test_bind_tableref(self, mock_bind_table_info):
      with patch.object(
          StatementBinderContext, "add_table_alias"
      ) as mock:
          catalog = MagicMock()
          binder = StatementBinder(StatementBinderContext(catalog))
          tableref = MagicMock()
          tableref.is_table_atom.return_value = True
          binder._bind_tableref(tableref)
          mock.assert_called_with(
              tableref.alias.alias_name,
              tableref.table.database_name,
              tableref.table.table_name,
          )
          mock_bind_table_info.assert_called_once_with(
              catalog(), tableref.table
          )
  
      with patch.object(StatementBinder, "bind") as mock_binder:
          with patch.object(
              StatementBinderContext, "add_derived_table_alias"
          ) as mock_context:
              binder = StatementBinder(
                  StatementBinderContext(MagicMock())
              )
              tableref = MagicMock()
              tableref.is_table_atom.return_value = False
              tableref.is_select.return_value = True
              binder._bind_tableref(tableref)
              mock_context.assert_called_with(
                  tableref.alias.alias_name,
                  tableref.select_statement.target_list,
              )
              mock_binder.assert_called_with(tableref.select_statement)
  
imports: import unittest
  from unittest.mock import MagicMock, Mock, patch
  from evadb.binder.binder_utils import BinderError
  from evadb.binder.statement_binder import StatementBinder
  from evadb.binder.statement_binder_context import StatementBinderContext
  from evadb.catalog.catalog_type import ColumnType, NdArrayType
  from evadb.catalog.models.utils import ColumnCatalogEntry
  from evadb.catalog.sql_config import IDENTIFIER_COLUMN
  from evadb.expression.function_expression import FunctionExpression
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.alias import Alias
  from evadb.parser.create_statement import ColumnDefinition
label_desc: Use image node_id 3 for calling the StatementBinderTests obj's underlying member method code with example usage: obj.test_bind_tableref(mock_bind_table_info) without return types