code: def testRanked(self, graph_fn, rank):
      num_concats = [2] * rank
      num_inputs = 2 << (rank - 1)
      input_values = [
          np.reshape(i, [1] * rank) for i in range(num_inputs)
      ]
      for dtype in self.numeric_types:
          with self.session() as sess, self.device_scope():
              concat = graph_fn(
                  sess,
                  input_values=input_values,
                  input_dtype=dtype,
                  num_concats=num_concats,
                  output_shape=num_concats,
              )
              result = sess.run(concat)
          expected_output = (
              np.arange(0, num_inputs)
              .reshape(num_concats)
              .astype(dtype)
          )
          self.assertAllClose(result, expected_output)
  
imports: from typing import Any, List, Optional
  from absl.testing import parameterized
  import numpy
  from tensorflow.compiler.tests import xla_test
  from tensorflow.python.client.session import Session
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework.ops import control_dependencies
  from tensorflow.python.framework.ops import Tensor
  from tensorflow.python.ops import gen_tpu_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import resource_variable_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.platform import test
label_desc: Use image node_id 14 for calling the XlaConcatNDOpTest obj's underlying member method code with example usage: obj.testRanked(graph_fn, rank) without return types