code: def __test_texts_standard(self, trn, val, preproc):
      self.assertFalse(U.is_iter(trn))
      self.assertEqual(trn[0].shape, (4, 10))
      self.assertEqual(trn[1].shape, (4, 2))
      self.assertEqual(val[0].shape, (4, 10))
      self.assertEqual(val[1].shape, (4, 2))
      self.assertFalse(U.is_multilabel(trn))
      self.assertEqual(U.shape_from_data(trn), (4, 10))
      self.assertFalse(U.ondisk(trn))
      self.assertEqual(U.nsamples_from_data(trn), 4)
      self.assertEqual(U.nclasses_from_data(trn), 2)
      self.assertEqual(U.y_from_data(trn).shape, (4, 2))
      self.assertFalse(U.bert_data_tuple(trn))
      self.assertEqual(preproc.get_classes(), preproc.get_classes())
      self.assertEqual(preproc.ngram_count(), 3)
      self.assertEqual(preproc.preprocess(["hello book"])[0][-1], 1)
      self.assertEqual(
          preproc.preprocess(["hello book"]).shape, (1, 10)
      )
      self.assertEqual(preproc.undo(val[0][0]), "the book is bad")
  
imports: import os.path
  from unittest import TestCase, main, skip
  import testenv
  import ktrain
  from ktrain import text
  from ktrain import utils
  from ktrain import vision
label_desc: Use image node_id 9 for calling the TestTextData obj's underlying member method code with example usage: obj.__test_texts_standard(trn, val, preproc) without return types