diff --git a/core/modules/system/src/Tests/Entity/EntityChangedConstraintValidatorTest.php b/core/modules/system/src/Tests/Entity/EntityChangedConstraintValidatorTest.php
new file mode 100644
index 0000000..05a8c06
--- /dev/null
+++ b/core/modules/system/src/Tests/Entity/EntityChangedConstraintValidatorTest.php
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\Tests\Entity\EntityChangedConstraintValidatorTest.
+ */
+
+namespace Drupal\system\Tests\Entity;
+
+use Drupal\system\Tests\TypedData;
+use Drupal\Core\TypedData\DataDefinition;
+
+/**
+ * Tests validation constraints for EntityChangedConstraintValidator.
+ *
+ * @group Validation
+ */
+class EntityChangedConstraintValidatorTest extends EntityUnitTestBase {
+
+  /**
+   * The typed data manager to use.
+   *
+   * @var \Drupal\Core\TypedData\TypedDataManager
+   */
+  protected $typedData;
+
+  public function setUp() {
+    parent::setUp();
+    $this->typedData = $this->container->get('typed_data_manager');
+    $this->installEntitySchema('entity_test_constraints');
+  }
+
+  /**
+   * Tests the EntityChangedConstraintValidator.
+   */
+  public function testValidation() {
+    // Test the validation.
+    $account = $this->createUser();
+    $entity = entity_create('entity_test_constraints', array('user_id' => $account->id()));
+
+    $entity->save();
+    $violations = $entity->validate();
+    $this->assertEqual($violations->count(), 0, 'Validation passed for correct value.');
+    // Set a changed date in the future.
+    $entity->set('changed', REQUEST_TIME + 100000);
+    // Run validation on the changed field.
+    $violations = $entity->validate();
+    $this->assertEqual($violations->count(), 0, 'Validation passed for correct value.');
+
+    // Test the validation when an invalid value is passed.
+    // Set a changed date in the past.
+    $entity->set('changed', 433918800);
+    // Run validation on the changed field.
+    $violations = $entity->validate();
+    $this->assertEqual($violations->count(), 1, 'Validation failed for incorrect value.');
+
+    // Make sure the information provided by a violation is correct.
+    $violation = $violations[0];
+    // The property path is an empty string as the validator is being run on the entity.
+    $this->assertEqual($violation->getPropertyPath(), '');
+    $this->assertEqual($violation->getMessage(), t('The content has either been modified by another user, or you have already submitted modifications. As a result, your changes cannot be saved.'));
+  }
+}
