diff --git a/core/tests/Drupal/Tests/Core/Render/Element/MachineNameTest.php b/core/tests/Drupal/Tests/Core/Render/Element/MachineNameTest.php
index 7546c27..d7d2303 100644
--- a/core/tests/Drupal/Tests/Core/Render/Element/MachineNameTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/Element/MachineNameTest.php
@@ -5,11 +5,15 @@
  * Contains \Drupal\Tests\Core\Render\Element\MachineNameTest.
  */
 
-namespace Drupal\Tests\Core\Render\Element;
+namespace Drupal\Tests\Core\Render\Element {
 
-use Drupal\Core\Form\FormStateInterface;
+  use Drupal\Core\Form\FormState;
+  use Drupal\Core\Form\FormStateInterface;
+  use Drupal\Core\Language\LanguageInterface;
+  use Drupal\Core\Language\LanguageManagerInterface;
 use Drupal\Core\Render\Element\MachineName;
 use Drupal\Tests\UnitTestCase;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * @coversDefaultClass \Drupal\Core\Render\Element\MachineName
@@ -42,4 +46,76 @@ public function providerTestValueCallback() {
     return $data;
   }
 
+
+  /**
+   * @covers ::processMachineName
+   */
+  public function testProcessMachineName() {
+    /** @var \Drupal\Core\Form\FormStateInterface $form_state */
+    // $form_state = $this->prophesize(FormStateInterface::class)->reveal();
+    $form_state = new FormState();
+
+    $element = [
+      '#id' => 'test',
+      '#field_suffix' => 'test_suffix',
+      '#field_prefix' => 'test_prefix',
+      '#machine_name' => [
+        'source' => [
+          'test_source',
+        ],
+        'maxlength' => 32,
+        'additional_property' => TRUE,
+        '#additional_property_with_hash' => TRUE,
+      ]
+    ];
+
+    $complete_form = [
+      'test_source' => [
+        '#type' => 'textfield',
+        '#id' => 'source',
+      ],
+      'test_machine_name' => $element
+    ];
+
+    $form_state->setCompleteForm($complete_form);
+
+    $language = $this->prophesize(LanguageInterface::class);
+    $language->getId()->willReturn('xx-lolspeak');
+
+    $language_manager = $this->prophesize(LanguageManagerInterface::class);
+    $language_manager->getCurrentLanguage()->willReturn($language);
+
+    $container = $this->prophesize(ContainerInterface::class);
+    $container->get('language_manager')->willReturn($language_manager->reveal());
+    \Drupal::setContainer($container->reveal());
+
+    $element = MachineName::processMachineName($element, $form_state, $complete_form);
+    $settings = $element['#attached']['drupalSettings']['machineName']['#source'];
+
+    $allowed_options = [
+      'replace_pattern',
+      'replace',
+      'maxlength',
+      'target',
+      'label',
+      'field_prefix',
+      'field_suffix',
+      'suffix'
+    ];
+    $this->assertEmpty(array_diff_key($settings, array_flip($allowed_options)));
+    foreach ($allowed_options as $key) {
+      $this->assertArrayHasKey($key, $settings);
+    }
+  }
+
+}
+
+}
+
+namespace {
+  if (!function_exists('t')) {
+    function t($string, array $args = []) {
+      return strtr($string, $args);
+    }
+  }
 }
