+
+ /**
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Name cannot be empty
+ */
+ public function testInvalidEmptyString() {
+ new Name('');
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Name cannot be empty
+ */
+ public function testInvalidEmptyArray() {
+ new Name([]);
+ }
+
+ /** @dataProvider provideTestIsSpecialClassName */
+ public function testIsSpecialClassName($name, $expected) {
+ $name = new Name($name);
+ $this->assertSame($expected, $name->isSpecialClassName());
+ }
+
+ public function provideTestIsSpecialClassName() {
+ return [
+ ['self', true],
+ ['PARENT', true],
+ ['Static', true],
+ ['self\not', false],
+ ['not\self', false],
+ ];
+ }
+}