code: def test_should_return_only_frames_satisfy_predicate(self):
      dataframe = create_dataframe(3)
      batch = Batch(frames=dataframe)
      expression = type(
          "AbstractExpression",
          (),
          {
              "evaluate": lambda x: Batch(
                  pd.DataFrame([False, False, True])
              ),
              "find_all": lambda expr: [],
          },
      )
  
      plan = type(
          "ScanPlan",
          (),
          {"predicate": expression, "columns": None, "alias": None},
      )
      predicate_executor = SequentialScanExecutor(MagicMock(), plan)
      predicate_executor.append_child(DummyExecutor([batch]))
  
      expected = Batch(
          batch.frames[batch.frames.index == 2].reset_index(drop=True)
      )
      filtered = list(predicate_executor.exec())[0]
      self.assertEqual(expected, filtered)
  
file_path: evadb/test/unit_tests/executor/test_seq_scan_executor.py
imports: import unittest
  from test.unit_tests.executor.utils import DummyExecutor
  from test.util import create_dataframe
  import pandas
  from mock import MagicMock
  from evadb.executor.seq_scan_executor import SequentialScanExecutor
  from evadb.models.storage.batch import Batch
label_desc: Use image node_id 1 for calling the SeqScanExecutorTest obj's underlying member method code with example usage: obj.test_should_return_only_frames_satisfy_predicate() without return types