code: def test_parse_view_configs_threeview(
      self,
      variant,
      expected_patch_size_view0,
      expected_patch_size_view1,
      expected_patch_size_view2,
  ):
      view_configs = config_utils.parse_view_configs(variant)
      self.assertLen(view_configs, 3)
      self.assertDictEqual(
          view_configs[0].to_dict(),
          {
              "hidden_size": 384,
              "num_heads": 6,
              "mlp_dim": 1536,
              "num_layers": 12,
              "patches": {"size": expected_patch_size_view0},
          },
      )
      self.assertDictEqual(
          view_configs[1].to_dict(),
          {
              "hidden_size": 768,
              "num_heads": 12,
              "mlp_dim": 3072,
              "num_layers": 12,
              "patches": {"size": expected_patch_size_view1},
          },
      )
      self.assertDictEqual(
          view_configs[2].to_dict(),
          {
              "hidden_size": 1280,
              "num_heads": 16,
              "mlp_dim": 5120,
              "num_layers": 32,
              "patches": {"size": expected_patch_size_view2},
          },
      )
  
imports: from absl.testing import parameterized
  from scenic.projects.mtv import config_utils
  import tensorflow
label_desc: Use image node_id 2 for calling the ConfigUtilsTest obj's underlying member method code with example usage: obj.test_parse_view_configs_threeview(variant, expected_patch_size_view0, expected_patch_size_view1, expected_patch_size_view2) without return types