Version 1
[yaffs-website] / web / core / modules / serialization / tests / src / Unit / Normalizer / NormalizerBaseTest.php
diff --git a/web/core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php b/web/core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php
new file mode 100644 (file)
index 0000000..f5e8f0f
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Tests\serialization\Unit\Normalizer\NormalizerBaseTest.
+ */
+
+namespace Drupal\Tests\serialization\Unit\Normalizer;
+
+use Drupal\Tests\UnitTestCase;
+use Drupal\serialization\Normalizer\NormalizerBase;
+
+/**
+ * @coversDefaultClass \Drupal\serialization\Normalizer\NormalizerBase
+ * @group serialization
+ */
+class NormalizerBaseTest extends UnitTestCase {
+
+  /**
+   * Tests the supportsNormalization method.
+   *
+   * @dataProvider providerTestSupportsNormalization
+   *
+   * @param bool $expected_return
+   *   The expected boolean return value from supportNormalization.
+   * @param mixed $data
+   *   The data passed to supportsNormalization.
+   * @param string $supported_interface_or_class
+   *   (optional) the supported interface or class to set on the normalizer.
+   */
+  public function testSupportsNormalization($expected_return, $data, $supported_interface_or_class = NULL) {
+    $normalizer_base = $this->getMockForAbstractClass('Drupal\Tests\serialization\Unit\Normalizer\TestNormalizerBase');
+
+    if (isset($supported_interface_or_class)) {
+      $normalizer_base->setSupportedInterfaceOrClass($supported_interface_or_class);
+    }
+
+    $this->assertSame($expected_return, $normalizer_base->supportsNormalization($data));
+  }
+
+  /**
+   * Data provider for testSupportsNormalization.
+   *
+   * @return array
+   *   An array of provider data for testSupportsNormalization.
+   */
+  public function providerTestSupportsNormalization() {
+    return [
+      // Something that is not an object should return FALSE immediately.
+      [FALSE, []],
+      // An object with no class set should return FALSE.
+      [FALSE, new \stdClass()],
+      // Set a supported Class.
+      [TRUE, new \stdClass(), 'stdClass'],
+      // Set a supported interface.
+      [TRUE, new \RecursiveArrayIterator(), 'RecursiveIterator'],
+      // Set a different class.
+      [FALSE, new \stdClass(), 'ArrayIterator'],
+      // Set a different interface.
+      [FALSE, new \stdClass(), 'RecursiveIterator'],
+    ];
+  }
+
+}
+
+/**
+ * Test class for NormalizerBase.
+ */
+abstract class TestNormalizerBase extends NormalizerBase {
+
+  /**
+   * Sets the protected supportedInterfaceOrClass property.
+   *
+   * @param string $supported_interface_or_class
+   *   The class name to set.
+   */
+  public function setSupportedInterfaceOrClass($supported_interface_or_class) {
+    $this->supportedInterfaceOrClass = $supported_interface_or_class;
+  }
+
+}