code: def test_ec(
      self,
      data_type: DataType,
      quant_type: torch.dtype,
      output_type: torch.dtype,
      quant_state_dict_split_scale_bias: bool,
  ) -> None:
      eb1_config = EmbeddingConfig(
          name="t1",
          embedding_dim=16,
          num_embeddings=10,
          feature_names=["f1"],
          data_type=data_type,
      )
      eb2_config = EmbeddingConfig(
          name="t2",
          embedding_dim=16,
          num_embeddings=10,
          feature_names=["f2"],
          data_type=data_type,
      )
      features = KeyedJaggedTensor(
          keys=["f1", "f2"],
          values=torch.as_tensor([0, 1]),
          lengths=torch.as_tensor([1, 1]),
      )
      self._test_ec(
          tables=[eb1_config, eb2_config],
          features=features,
          quant_state_dict_split_scale_bias=quant_state_dict_split_scale_bias,
      )
  
imports: import unittest
  from typing import Dict, List, Optional, Type
  import hypothesis.strategies
  import torch
  from hypothesis import given, settings, Verbosity
  from torchrec import inference
  from torchrec.modules.embedding_configs import DataType, EmbeddingBagConfig, EmbeddingConfig, QuantConfig
  from torchrec.modules.embedding_modules import EmbeddingBagCollection, EmbeddingCollection
  from torchrec.quant.embedding_modules import EmbeddingBagCollection, EmbeddingCollection, quant_prep_enable_quant_state_dict_split_scale_bias
  from torchrec.sparse.jagged_tensor import KeyedJaggedTensor, KeyedTensor
label_desc: Use image node_id 2 for calling the EmbeddingCollectionTest obj's underlying member method code with example usage: obj.test_ec(data_type, quant_type, output_type, quant_state_dict_split_scale_bias) without return types