code: def test_unshuffle_one_table_basic(self, vocab, dim, num_sc):
      # input vocab should be multiple of num_sc
      self.assertEqual(vocab % num_sc, 0)
      x, shards = create_test_table_shards(
          TestTable(vocab=vocab, dim=dim, shift=0), num_sc
      )
      x_sharded = array_ops.concat(shards, axis=0)
      self.assertAllEqual(
          v3_utils.unshuffle_from_sc_to_cpu(
              t=x_sharded,
              num_sparse_cores=num_sc,
              offset_in_shard=0,
              size_in_shard=vocab // num_sc,
              shard_rotation=0,
          ),
          x,
      )
  
file_path: tensorflow-upstream/tensorflow/python/tpu/tpu_embedding_v3_utils_test.py
imports: import collections
  from absl.testing import parameterized
  from tensorflow.python.compat import v2_compat
  from tensorflow.python.framework.constant_op import constant
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.platform import test
  from tensorflow.python.tpu import tpu_embedding_v3_utils
label_desc: Use image node_id 2 for calling the TpuEmbeddingV3UtilsTest obj's underlying member method code with example usage: obj.test_unshuffle_one_table_basic(vocab, dim, num_sc) without return types