code: def test_forward(self) -> None:
      tb1_config = EmbeddingConfig(
          name="t1",
          embedding_dim=5,
          num_embeddings=10,
          feature_names=["f1", "f2"],
      )
      tb2_config = EmbeddingConfig(
          name="t2",
          embedding_dim=5,
          num_embeddings=10,
          feature_names=["f2"],
      )
      #     0       1        2  <-- batch
      # 0   [0,1] None    [2]
      # 1   [3]    [4]    [5,6,7]
      # ^
      # feature
      ec = EmbeddingCollection(
          tables=[tb1_config, tb2_config],
      )
  
      id_list_features = KeyedJaggedTensor.from_offsets_sync(
          keys=["f1", "f2"],
          values=torch.tensor([0, 1, 2, 3]),
          offsets=torch.tensor([0, 2, 3, 3, 4]),
      )
  
      sequence_embeddings = ec(
          features=id_list_features,
      )
      self.assertEqual(
          sequence_embeddings["f1"].values().size(), (3, 5)
      )
      self.assertEqual(
          sequence_embeddings["f2@t1"].values().size(), (1, 5)
      )
      self.assertEqual(
          sequence_embeddings["f2@t2"].values().size(), (1, 5)
      )
  
imports: import unittest
  from functools import partial
  import torch
  import torch.fx
  from torchrec.fx import symbolic_trace
  from torchrec.modules.embedding_configs import EmbeddingBagConfig, EmbeddingConfig
  from torchrec.modules.embedding_modules import EmbeddingBagCollection, EmbeddingCollection
  from torchrec.sparse.jagged_tensor import KeyedJaggedTensor
label_desc: Use image node_id 1 for calling the EmbeddingCollectionTest obj's underlying member method code with example usage: obj.test_forward() without return types