code: def test_task_ids(self):
      pipeline_uid = task_lib.PipelineUid(pipeline_id="pipeline")
      node_uid = task_lib.NodeUid(
          pipeline_uid=pipeline_uid, node_id="Trainer"
      )
      exec_node_task = test_utils.create_exec_node_task(node_uid)
      self.assertEqual(
          ("ExecNodeTask", node_uid), exec_node_task.task_id
      )
      cancel_node_task = task_lib.CancelNodeTask(node_uid=node_uid)
      self.assertEqual(
          ("CancelNodeTask", node_uid), cancel_node_task.task_id
      )
  
file_path: tfx/tfx/orchestration/experimental/core/task_test.py
imports: import tensorflow
  from tfx.orchestration.experimental.core import task
  from tfx.orchestration.experimental.core import test_utils
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.utils import test_case_utils
label_desc: Use image node_id 3 for calling the TaskTest obj's underlying member method code with example usage: obj.test_task_ids() without return types