code: def test_dense(self, input_shape, channels, momentum, training):
      B, _ = input_shape
      inputs = tf.random.uniform(input_shape)
      layer = PointNetDenseLayer(channels, momentum)
      outputs = layer(inputs, training=training)
      assert outputs.shape == (B, channels)
  
file_path: graphics/tensorflow_graphics/nn/layer/tests/pointnet_test.py
imports: from absl.testing import parameterized
  import tensorflow
  from tensorflow_graphics.nn.layer.pointnet import ClassificationHead
  from tensorflow_graphics.nn.layer.pointnet import PointNetConv2Layer
  from tensorflow_graphics.nn.layer.pointnet import PointNetDenseLayer
  from tensorflow_graphics.nn.layer.pointnet import PointNetVanillaClassifier
  from tensorflow_graphics.nn.layer.pointnet import VanillaEncoder
  from tensorflow_graphics.util import test_case
label_desc: Use image node_id 2 for calling the RandomForwardExecutionTest obj's underlying member method code with example usage: obj.test_dense(input_shape, channels, momentum, training) without return types