getSupportedFormats(); $this->assertInternalType( 'array', $formats ); $this->assertNotEmpty( $formats ); } public function testGetWriter() { $factory = new RdfWriterFactory(); foreach ( $factory->getSupportedFormats() as $format ) { $writer = $factory->getWriter( $format ); $this->assertInstanceOf( RdfWriter::class, $writer ); } } public function testGivenInvalidFormat_getWriterThrowsException() { $factory = new RdfWriterFactory(); $this->setExpectedException( InvalidArgumentException::class ); $factory->getWriter( 'invalid' ); } public function testGetFormatName() { $factory = new RdfWriterFactory(); foreach ( $factory->getSupportedFormats() as $format ) { $actual = $factory->getFormatName( $format ); // the canonical name should just stay $this->assertEquals( $format, $actual ); } } public function testGivenInvalidFormat_getFormatNameReturnsFalse() { $factory = new RdfWriterFactory(); $this->assertFalse( $factory->getFormatName( 'invalid' ) ); } public function provideFormats() { return [ // N3 (currently falls through to turtle) [ 'N3', 'n3', 'n3', 'text/n3' ], [ 'text/n3', 'n3', 'n3', 'text/n3' ], [ 'text/rdf+n3', 'n3', 'n3', 'text/n3' ], [ 'ttl', 'turtle', 'ttl', 'text/turtle' ], [ 'turtle', 'turtle', 'ttl', 'text/turtle' ], [ 'text/turtle', 'turtle', 'ttl', 'text/turtle' ], [ 'application/x-turtle', 'turtle', 'ttl', 'text/turtle' ], [ 'nt', 'ntriples', 'nt', 'application/n-triples' ], [ 'ntriples', 'ntriples', 'nt', 'application/n-triples' ], [ 'n-triples', 'ntriples', 'nt', 'application/n-triples' ], [ 'text/plain', 'ntriples', 'nt', 'application/n-triples' ], [ 'text/n-triples', 'ntriples', 'nt', 'application/n-triples' ], [ 'application/ntriples', 'ntriples', 'nt', 'application/n-triples' ], [ 'application/n-triples', 'ntriples', 'nt', 'application/n-triples' ], [ 'xml', 'rdfxml', 'rdf', 'application/rdf+xml' ], [ 'rdf', 'rdfxml', 'rdf', 'application/rdf+xml' ], [ 'rdfxml', 'rdfxml', 'rdf', 'application/rdf+xml' ], [ 'application/rdf+xml', 'rdfxml', 'rdf', 'application/rdf+xml' ], [ 'application/xml', 'rdfxml', 'rdf', 'application/rdf+xml' ], [ 'text/xml', 'rdfxml', 'rdf', 'application/rdf+xml' ], ]; } /** * @dataProvider provideFormats */ public function testFormats( $name, $canonicalName, $expectedFileExtension, $expectedMimeType ) { $factory = new RdfWriterFactory(); $this->assertEquals( $canonicalName, $factory->getFormatName( $name ) ); $this->assertEquals( $expectedFileExtension, $factory->getFileExtension( $canonicalName ) ); $this->assertContains( $expectedMimeType, $factory->getMimeTypes( $canonicalName ) ); $writer = $factory->getWriter( $canonicalName ); $this->assertInstanceOf( RdfWriter::class, $writer ); } public function testGetMimeTypes() { $factory = new RdfWriterFactory(); foreach ( $factory->getSupportedFormats() as $format ) { $mimeTypes = $factory->getMimeTypes( $format ); $this->assertInternalType( 'array', $mimeTypes ); $this->assertNotEmpty( $mimeTypes ); } } public function testGivenInvalidFormat_getMimeTypesThrowsException() { $factory = new RdfWriterFactory(); $this->setExpectedException( InvalidArgumentException::class ); $factory->getMimeTypes( 'invalid' ); } public function testGetFileExtensions() { $factory = new RdfWriterFactory(); foreach ( $factory->getSupportedFormats() as $format ) { $extension = $factory->getFileExtension( $format ); $this->assertInternalType( 'string', $extension ); } } public function testGivenInvalidFormat_getFileExtensionsThrowsException() { $factory = new RdfWriterFactory(); $this->setExpectedException( InvalidArgumentException::class ); $factory->getFileExtension( 'invalid' ); } }