code: def test_splits(self):
      try:
          RatioSplit(
              self.data,
              test_size=0.1,
              val_size=0.1,
              seed=123,
              verbose=True,
          )
      except (
          ValueError
      ):  # validation data is empty because unknowns are filtered
          assert True
  
      data = [
          (u, i, random.randint(1, 5))
          for (u, i) in itertools.product(
              ["u1", "u2", "u3", "u4"], ["i1", "i2", "i3", "i4", "i5"]
          )
      ]
      ratio_split = RatioSplit(
          data, test_size=0.1, val_size=0.1, seed=123, verbose=True
      )
  
      self.assertTrue(ratio_split.train_size == 16)
      self.assertTrue(ratio_split.test_size == 2)
      self.assertTrue(ratio_split.val_size == 2)
  
file_path: cornac/tests/cornac/eval_methods/test_ratio_split.py
imports: import unittest
  import itertools
  import random
  from cornac.eval_methods import RatioSplit
  from cornac.data import Reader
  from cornac.models import MF
  from cornac.metrics import MAE, Recall
label_desc: Use image node_id 3 for calling the TestRatioSplit obj's underlying member method code with example usage: obj.test_splits() without return types