code: def testExpandDimsScalar(self):
      # Note that if we expand_dims for the final dimension and there are scalar
      # fields, then the shape is (2, None, None, 1), whereas if it is constructed
      # from pyval it is (2, None, None, None).
      st = [[[{"x": 1}, {"x": 2}], [{"x": 3}]], [[{"x": 4}]]]
      st = StructuredTensor.from_pyval(st)
      result = array_ops.expand_dims(st, 3)
      expected_shape = tensor_shape.TensorShape([2, None, None, 1])
      self.assertEqual(repr(expected_shape), repr(result.shape))
  
imports: from absl.testing import parameterized
  from tensorflow.python.eager import def_function
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import random_seed
  from tensorflow.python.framework import tensor
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import random_ops
  from tensorflow.python.ops.ragged import ragged_factory_ops
  from tensorflow.python.ops.ragged import ragged_tensor
  from tensorflow.python.ops.ragged import row_partition
  from tensorflow.python.ops.ragged.dynamic_ragged_shape import DynamicRaggedShape
  from tensorflow.python.ops.structured import structured_array_ops
  from tensorflow.python.ops.structured import structured_tensor
  from tensorflow.python.ops.structured.structured_tensor import StructuredTensor
  from tensorflow.python.platform import googletest
  from tensorflow.python.util import nest
label_desc: Use image node_id 6 for calling the StructuredArrayOpsTest obj's underlying member method code with example usage: obj.testExpandDimsScalar() without return types