code: def test_check_execution(self, tweet_emotion_train_test_textdata):
      # Arrange
      train, test = tweet_emotion_train_test_textdata
      check = TrainTestPerformance()
      # Act
      result = check.run(
          train_dataset=train,
          test_dataset=test,
          train_predictions=list(train.label),
          test_predictions=list(test.label),
      )
      # Assert
      assert isinstance(result.value, pd.DataFrame), type(result.value)
      assert set(result.value["Metric"]) == {
          "F1",
          "Precision",
          "Recall",
      }
      assert set(result.value["Dataset"]) == {"Train", "Test"}
  
      n_of_samples_per_class = (
          result.value[["Class", "Number of samples"]]
          .groupby("Class")
          .sum()
          .to_dict()
      )
      expected_n_of_samples_per_class = {
          "Number of samples": {
              "anger": 5874,
              "happiness": 3123,
              "optimism": 1251,
              "sadness": 3711,
          }
      }
  
      assert n_of_samples_per_class == expected_n_of_samples_per_class
  
file_path: deepchecks/tests/nlp/checks/model_evaluation/train_test_performance_test.py
imports: import typing
  import pandas
  from hamcrest import *
  from deepchecks.core.errors import DeepchecksValueError
  from deepchecks.nlp.checks import TrainTestPerformance
  from deepchecks.nlp.text_data import TextData
label_desc: Use image node_id 1 for calling the TestTextClassification obj's underlying member method code with example usage: obj.test_check_execution(tweet_emotion_train_test_textdata) without return types