diff --git a/src/LoaderBundle/Exception/Loader/LoadingRebrickableFailedException.php b/src/LoaderBundle/Exception/Loader/LoadingRebrickableFailedException.php
new file mode 100644
index 0000000..e62965c
--- /dev/null
+++ b/src/LoaderBundle/Exception/Loader/LoadingRebrickableFailedException.php
@@ -0,0 +1,7 @@
+output->writeln('Loading file from: '.$url.'');
+ $this->writeOutput(['Loading file from: '.$url.'']);
$temp = tempnam(sys_get_temp_dir(), 'printabrick.');
$ctx = stream_context_create([], [
'notification' => [$this, 'progressCallback'],
]);
- try {
- if (false === file_put_contents($temp, fopen($url, 'r', 0, $ctx))) {
- throw new WriteErrorException($temp);
- }
- } catch (\ErrorException $e) {
- throw new FileNotFoundException($url);
- } catch (\Exception $e) {
- throw new LogicException($e);
+ if (false === file_put_contents($temp, fopen($url, 'r', 0, $ctx))) {
+ throw new WriteErrorException($temp);
}
return $temp;
diff --git a/src/LoaderBundle/Service/ImageLoader.php b/src/LoaderBundle/Service/ImageLoader.php
index 4572d0d..42804e5 100644
--- a/src/LoaderBundle/Service/ImageLoader.php
+++ b/src/LoaderBundle/Service/ImageLoader.php
@@ -5,6 +5,7 @@ namespace LoaderBundle\Service;
use AppBundle\Entity\LDraw\Model;
use Doctrine\ORM\EntityManagerInterface;
use League\Flysystem\FilesystemInterface;
+use LoaderBundle\Exception\FileException;
use LoaderBundle\Service\Stl\StlRendererService;
use Psr\Log\LoggerInterface;
@@ -32,6 +33,8 @@ class ImageLoader extends BaseLoader
* Download ZIP file with part images from rebrickable and unzip file to filesystem.
*
* @param int $color color id used by rebrickable
+ *
+ * @throws FileException
*/
public function loadColorFromRebrickable($color)
{
@@ -41,14 +44,15 @@ class ImageLoader extends BaseLoader
$zip = new \ZipArchive($file);
if ($zip->open($file) === true) {
- $this->output->writeln([
+ $this->writeOutput([
"Extracting ZIP file into {$this->mediaFilesystem->getAdapter()->getPathPrefix()}images/{$color}",
]);
$zip->extractTo($this->mediaFilesystem->getAdapter()->getPathPrefix().'images'.DIRECTORY_SEPARATOR.$color);
$zip->close();
- $this->output->writeln(['Done!']);
+ $this->writeOutput(['Done!']);
} else {
$this->logger->error('Extraction of file failed!');
+ throw new FileException($file);
}
}
@@ -69,7 +73,7 @@ class ImageLoader extends BaseLoader
unset($models);
// Render images
- $this->output->writeln([
+ $this->writeOutput([
'Rendering missing images of models',
]);
$this->initProgressBar(count($missing));
@@ -79,7 +83,7 @@ class ImageLoader extends BaseLoader
try {
$this->loadModelImage($this->mediaFilesystem->getAdapter()->getPathPrefix().$model->getPath());
} catch (\Exception $e) {
- $this->logger->error('Error rendering model '.$model->getId().' image', $e);
+ $this->logger->error('Error rendering model '.$model->getId().' image');
}
$this->progressBar->advance();
}
diff --git a/src/LoaderBundle/Service/ModelLoader.php b/src/LoaderBundle/Service/ModelLoader.php
index 9555e25..55ac9b1 100644
--- a/src/LoaderBundle/Service/ModelLoader.php
+++ b/src/LoaderBundle/Service/ModelLoader.php
@@ -102,27 +102,29 @@ class ModelLoader extends BaseLoader
'------------------------------------------------------------------------------>',
]);
- $libraryZip = $this->downloadFile($url);
+ try {
+ $libraryZip = $this->downloadFile($url);
- $temp_dir = tempnam(sys_get_temp_dir(), 'printabrick.');
- if (file_exists($temp_dir)) {
- unlink($temp_dir);
- }
- mkdir($temp_dir);
+ $temp_dir = tempnam(sys_get_temp_dir(), 'printabrick.');
+ if (file_exists($temp_dir)) {
+ unlink($temp_dir);
+ }
+ mkdir($temp_dir);
- $zip = new \ZipArchive();
- if ($zip->open($libraryZip) != 'true') {
- echo 'Error :- Unable to open the Zip File';
- }
- $zip->extractTo($temp_dir);
- $zip->close();
- unlink($libraryZip);
+ $zip = new \ZipArchive();
+ $zip->open($libraryZip);
+ $zip->extractTo($temp_dir);
+ $zip->close();
+ unlink($libraryZip);
- $this->writeOutput(['LDraw libary downloaded']);
+ $this->writeOutput(['LDraw libary downloaded']);
- // return ldraw directory if in zip file
- if (file_exists($temp_dir.'/ldraw/')) {
- return $temp_dir.'/ldraw/';
+ // return ldraw directory if in zip file
+ if (file_exists($temp_dir.'/ldraw/')) {
+ return $temp_dir.'/ldraw/';
+ }
+ } catch (\Exception $exception) {
+ throw new \LogicException('Falied to open Zip archive');
}
return $temp_dir;
diff --git a/src/LoaderBundle/Service/RebrickableLoader.php b/src/LoaderBundle/Service/RebrickableLoader.php
index 973aaf9..e8a2983 100644
--- a/src/LoaderBundle/Service/RebrickableLoader.php
+++ b/src/LoaderBundle/Service/RebrickableLoader.php
@@ -6,6 +6,7 @@ use AppBundle\Entity\Rebrickable\Part;
use AppBundle\Entity\Rebrickable\Set;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Query\Expr\Join;
+use LoaderBundle\Exception\Loader\LoadingRebrickableFailedException;
use Psr\Log\LoggerInterface;
//TODO Refactor + validate csv files
@@ -30,9 +31,9 @@ class RebrickableLoader extends BaseLoader
}
/**
- * Truncates and loads all rebrickable tables from csv files
+ * Truncates and loads all rebrickable tables from csv files.
*
- * @throws \Exception
+ * @throws LoadingRebrickableFailedException
*/
public function loadAll()
{
@@ -67,19 +68,19 @@ class RebrickableLoader extends BaseLoader
$this->writeOutput(['Rebrickable database loaded successfully!']);
} catch (\Exception $e) {
- $this->writeOutput(['Rollback back']);
- $connection->rollBack();
- throw $e;
+ // $this->writeOutput(['Rollback back']);
+// $connection->rollBack();
+
+ throw new LoadingRebrickableFailedException();
}
}
-
/**
- * Downloads csv files from rebrickable_url specified in config.yml
+ * Downloads csv files from rebrickable_url specified in config.yml.
*/
private function loadCSVFiles()
{
- $array = ['inventories', 'inventory_parts', 'inventory_sets', 'sets', 'themes', 'parts', 'part_categories', 'colors'];
+ $array = ['inventories', 'inventory_parts', 'inventory_sets', 'sets', 'themes', 'parts', 'part_categories'];
$this->writeOutput([
'------------------------------------------------------------------------------>',
@@ -133,6 +134,9 @@ class RebrickableLoader extends BaseLoader
return $this->em->getConnection()->prepare($query)->execute();
}
+ /**
+ * Creates missing Part entites for foreign keys form inventory_parts table.
+ */
private function addMissingParts()
{
$connection = $this->em->getConnection();
@@ -185,8 +189,8 @@ class RebrickableLoader extends BaseLoader
return $this->loadCsvFile($csv, 'rebrickable_category', '(`id`,`name`)');
}
- private function loadColorTable($csv)
- {
- return $this->loadCsvFile($csv, 'color', '(`id`,`name`,`rgb`, @var) SET transparent = IF(@var=\'t\',1,0)');
- }
+// private function loadColorTable($csv)
+// {
+// return $this->loadCsvFile($csv, 'color', '(`id`,`name`,`rgb`, @var) SET transparent = IF(@var=\'t\',1,0)');
+// }
}
diff --git a/src/LoaderBundle/Service/Stl/StlConverterService.php b/src/LoaderBundle/Service/Stl/StlConverterService.php
index f9c5dcb..4c6d498 100644
--- a/src/LoaderBundle/Service/Stl/StlConverterService.php
+++ b/src/LoaderBundle/Service/Stl/StlConverterService.php
@@ -93,65 +93,9 @@ class StlConverterService
return $this->mediaFilesystem->get($newFile);
}
- } else {
- return $this->mediaFilesystem->get($newFile);
}
- throw new ConvertingFailedException($file, 'STL');
- }
-
- /**
- * Convert LDraw model from .dat format to .stl by using LDView
- * stores created file to $stlStorage filesystem.
- *
- * @param string $file
- * @param bool $rewrite
- *
- * @throws ConvertingFailedException
- *
- * @return File
- */
- public function datToPng($file, $rewrite = false)
- {
- if (!$this->ldrawLibraryContext) {
- throw new LDLibraryMissingException();
- }
-
- if (!$this->mediaFilesystem->has('images')) {
- $this->mediaFilesystem->createDir('images');
- }
-
- $newFile = 'images'.DIRECTORY_SEPARATOR.basename($file, '.dat').'.png';
-
- if (!$this->mediaFilesystem->has($newFile) || $rewrite) {
- $this->runLDView([
- $file,
- '-LDrawDir='.$this->ldrawLibraryContext->getAdapter()->getPathPrefix(),
- '-AutoCrop=0',
- '-SaveAlpha=0',
- '-BackgroundColor3=0xFFFFFF',
- '-DefaultColor3=0x136FC3',
- '-SnapshotSuffix=.png',
- '-HiResPrimitives=1',
- '-UseQualityStuds=1',
- '-UseQualityLighting=1',
- '-SaveHeight=600',
- '-SaveWidth=800',
- '-CurveQuality=12',
- '-DefaultLatLong=45,40',
- '-SaveDir='.$this->mediaFilesystem->getAdapter()->getPathPrefix().'images',
- '-SaveSnapshots=1',
- ]);
-
- // Check if file created successfully
- if ($this->mediaFilesystem->has($newFile)) {
- return $this->mediaFilesystem->get($newFile);
- }
- } else {
- return $this->mediaFilesystem->get($newFile);
- }
-
- throw new ConvertingFailedException($file, 'PNG');
+ return $this->mediaFilesystem->get($newFile);
}
/**
diff --git a/src/LoaderBundle/Service/Stl/StlRendererService.php b/src/LoaderBundle/Service/Stl/StlRendererService.php
index fbe54fd..8bd2ce5 100644
--- a/src/LoaderBundle/Service/Stl/StlRendererService.php
+++ b/src/LoaderBundle/Service/Stl/StlRendererService.php
@@ -5,6 +5,7 @@ namespace LoaderBundle\Service\Stl;
use LoaderBundle\Exception\ConvertingFailedException;
use LoaderBundle\Exception\FileNotFoundException;
use LoaderBundle\Exception\RenderFailedException;
+use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Process;
use Symfony\Component\Process\ProcessBuilder;
@@ -101,9 +102,6 @@ class StlRendererService
if (!file_exists($file)) {
throw new FileNotFoundException($file);
}
- if (pathinfo($file, PATHINFO_EXTENSION) != 'stl') {
- throw new ConvertingFailedException($file, 'POV', 'Wrong input filetype');
- }
// Save the current working directory and change directory to tmp dir
// stl2pov outputs converted file to current directory and destination can not be changed
@@ -195,7 +193,8 @@ class StlRendererService
//+AMn - use non-adaptive (n=1) or adaptive (n=2) supersampling
//+A0.n - perform antialiasing (if color change is above n percent)
//-D - Turns graphic display off
- $process = $processBuilder->setPrefix($this->povray)
+ $process = $processBuilder
+ ->setPrefix($this->povray)
->setArguments([
"+I\"{$file}\"",
'+FN',
@@ -207,8 +206,13 @@ class StlRendererService
'+A0.5',
'-D',
])->getProcess();
+
$process->mustRun();
+ if (!$process->isSuccessful()) {
+ throw new ProcessFailedException($process);
+ }
+
if (!file_exists($outputFile)) {
throw new RenderFailedException("{$to}{$filename}.png");
}
diff --git a/src/LoaderBundle/Util/RelationMapper.php b/src/LoaderBundle/Util/RelationMapper.php
index 6a19a2b..76eb5b3 100644
--- a/src/LoaderBundle/Util/RelationMapper.php
+++ b/src/LoaderBundle/Util/RelationMapper.php
@@ -3,10 +3,10 @@
namespace LoaderBundle\Util;
use Doctrine\Common\Cache\CacheProvider;
+use LoaderBundle\Exception\RelationMapper\InvalidDomainException;
use LoaderBundle\Exception\RelationMapper\InvalidResourceException;
use LoaderBundle\Exception\RelationMapper\ResourceNotFoundException;
use Symfony\Component\OptionsResolver\Exception\InvalidArgumentException;
-use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException;
use Symfony\Component\Yaml\Exception\ParseException;
use Symfony\Component\Yaml\Yaml;
@@ -69,6 +69,6 @@ class RelationMapper
if (isset($this->relations[$domain])) {
return isset($this->relations[$domain][$number]) ? $this->relations[$domain][$number] : $number;
}
- throw new InvalidOptionsException();
+ throw new InvalidDomainException();
}
}
diff --git a/tests/LoaderBundle/Service/ImageLoader/ImageLoaderTest.php b/tests/LoaderBundle/Service/ImageLoader/ImageLoaderTest.php
new file mode 100644
index 0000000..58542e0
--- /dev/null
+++ b/tests/LoaderBundle/Service/ImageLoader/ImageLoaderTest.php
@@ -0,0 +1,62 @@
+setUpDb([LoadBaseData::class]);
+
+ $file = $this->createMock(File::class);
+ $file->method('getPath')->willReturn('path');
+
+ $stlRenderer = $this->createMock(StlRendererService::class);
+ $stlRenderer->method('render')->willReturn('image');
+
+ $this->imageLoader = new ImageLoader($this->em, $this->get('monolog.logger.event'), $this->filesystem, __DIR__.'/fixtures/', $stlRenderer);
+ $this->imageLoader->setOutput(new NullOutput());
+ }
+
+ public function testLoadFromRebrickable()
+ {
+ $this->imageLoader->loadColorFromRebrickable(-1);
+
+ $this->assertCount(8, $this->filesystem->listContents('images/-1/'));
+ }
+
+ /**
+ * @expectedException \LoaderBundle\Exception\FileException
+ */
+ public function testLoadCorrupted()
+ {
+ $this->imageLoader->loadColorFromRebrickable(5);
+ }
+
+ public function testLoadMissingImages()
+ {
+ $stlRenderer = $this->createMock(StlRendererService::class);
+ $stlRenderer->method('render')->willReturn('image');
+
+ $stlRenderer->expects($this->exactly(3))->method('render');
+
+ $this->imageLoader = new ImageLoader($this->em, $this->get('monolog.logger.event'), $this->filesystem, __DIR__.'/fixtures/', $stlRenderer);
+ $this->imageLoader->setOutput(new NullOutput());
+
+ $this->imageLoader->loadMissingModelImages();
+ }
+}
diff --git a/tests/LoaderBundle/Service/ImageLoader/fixtures/ldraw/parts_-1.zip b/tests/LoaderBundle/Service/ImageLoader/fixtures/ldraw/parts_-1.zip
new file mode 100644
index 0000000..70d55da
Binary files /dev/null and b/tests/LoaderBundle/Service/ImageLoader/fixtures/ldraw/parts_-1.zip differ
diff --git a/tests/LoaderBundle/Service/ImageLoader/fixtures/ldraw/parts_5.zip b/tests/LoaderBundle/Service/ImageLoader/fixtures/ldraw/parts_5.zip
new file mode 100644
index 0000000..3c232e0
Binary files /dev/null and b/tests/LoaderBundle/Service/ImageLoader/fixtures/ldraw/parts_5.zip differ
diff --git a/tests/LoaderBundle/Service/ModelLoader/ModelLoaderTest.php b/tests/LoaderBundle/Service/ModelLoader/ModelLoaderTest.php
index f7b6709..041561a 100644
--- a/tests/LoaderBundle/Service/ModelLoader/ModelLoaderTest.php
+++ b/tests/LoaderBundle/Service/ModelLoader/ModelLoaderTest.php
@@ -1,16 +1,16 @@
method('find')
->will($this->returnArgument(0));
- $this->modelLoader = new ModelLoader($this->get('doctrine.orm.entity_manager'),$this->get('monolog.logger.event'),$stlConverter,$relationMapper,null);
+ $this->modelLoader = new ModelLoader($this->em, $this->get('monolog.logger.event'), $stlConverter, $relationMapper);
$this->modelLoader->setOutput(new NullOutput());
- $this->setUpDb();
+ $this->setUpDb([LoadColors::class]);
}
public function testLoadOne()
{
- $this->modelLoader->setLDrawLibraryContext(__DIR__ . '/fixtures/librarycontext/');
- $this->modelLoader->loadOne(__DIR__ . '/fixtures/librarycontext/parts/3820.dat');
+ $this->modelLoader->setLDrawLibraryContext(__DIR__.'/fixtures/librarycontext/');
+ $this->modelLoader->loadOne(__DIR__.'/fixtures/librarycontext/parts/3820.dat');
/** @var Model[] $models */
$models = $this->modelRepository->findAll();
@@ -67,33 +67,33 @@ class ModelLoaderTest extends BaseTest
public function testFileContext()
{
- $this->modelLoader->setLDrawLibraryContext(__DIR__ . '/fixtures/librarycontext/');
- $this->modelLoader->loadOne(__DIR__ . '/fixtures/filecontext/parts/999.dat');
+ $this->modelLoader->setLDrawLibraryContext(__DIR__.'/fixtures/librarycontext/');
+ $this->modelLoader->loadOne(__DIR__.'/fixtures/filecontext/parts/999.dat');
/** @var Model[] $models */
$models = $this->modelRepository->findAll();
$this->assertEquals(1, count($models));
$this->assertEquals(3820, $models[0]->getId());
- $this->assertEquals(2,count($models[0]->getAliases()));
+ $this->assertEquals(2, count($models[0]->getAliases()));
}
public function testLoadAlias()
{
- $this->modelLoader->setLDrawLibraryContext(__DIR__ . '/fixtures/librarycontext/');
- $this->modelLoader->loadOne(__DIR__ . '/fixtures/filecontext/parts/999.dat');
+ $this->modelLoader->setLDrawLibraryContext(__DIR__.'/fixtures/librarycontext/');
+ $this->modelLoader->loadOne(__DIR__.'/fixtures/filecontext/parts/999.dat');
/** @var Model[] $models */
$models = $this->modelRepository->findAll();
$this->assertEquals(1, count($models));
$this->assertEquals(3820, $models[0]->getId());
- $this->assertEquals(2,count($models[0]->getAliases()));
+ $this->assertEquals(2, count($models[0]->getAliases()));
}
public function testLicense()
{
- $this->modelLoader->setLDrawLibraryContext(__DIR__ . '/fixtures/license/');
+ $this->modelLoader->setLDrawLibraryContext(__DIR__.'/fixtures/license/');
$this->modelLoader->loadAll();
$models = $this->modelRepository->findAll();
@@ -104,7 +104,7 @@ class ModelLoaderTest extends BaseTest
public function testIsIncluded()
{
- $this->modelLoader->setLDrawLibraryContext(__DIR__ . '/fixtures/included/');
+ $this->modelLoader->setLDrawLibraryContext(__DIR__.'/fixtures/included/');
$this->modelLoader->loadAll();
$models = $this->modelRepository->findAll();
@@ -113,7 +113,7 @@ class ModelLoaderTest extends BaseTest
public function testLoadAll()
{
- $this->modelLoader->setLDrawLibraryContext(__DIR__ . '/fixtures/librarycontext/');
+ $this->modelLoader->setLDrawLibraryContext(__DIR__.'/fixtures/librarycontext/');
$this->modelLoader->loadAll();
$models = $this->modelRepository->findAll();
@@ -124,17 +124,17 @@ class ModelLoaderTest extends BaseTest
public function testUpdate()
{
// Load original model
- $this->modelLoader->setLDrawLibraryContext(__DIR__ . '/fixtures/update/version1/');
+ $this->modelLoader->setLDrawLibraryContext(__DIR__.'/fixtures/update/version1/');
$this->modelLoader->loadAll();
$this->assertEquals(1, count($this->modelRepository->findAll()));
$model = $this->modelRepository->findOneByNumber('983');
$this->assertInstanceOf(Model::class, $model);
- $this->assertEquals('3820',$model->getId());
+ $this->assertEquals('3820', $model->getId());
$this->assertEquals(2, count($model->getAliases()));
// Load new version
- $this->modelLoader->setLDrawLibraryContext(__DIR__ . '/fixtures/update/version2/');
+ $this->modelLoader->setLDrawLibraryContext(__DIR__.'/fixtures/update/version2/');
$this->modelLoader->setRewrite(true);
$this->modelLoader->loadAll();
@@ -151,31 +151,49 @@ class ModelLoaderTest extends BaseTest
public function testUpdate2()
{
// Load original model
- $this->modelLoader->setLDrawLibraryContext(__DIR__ . '/fixtures/update2/version1/');
+ $this->modelLoader->setLDrawLibraryContext(__DIR__.'/fixtures/update2/version1/');
$this->modelLoader->loadAll();
// Load new version
- $this->modelLoader->setLDrawLibraryContext(__DIR__ . '/fixtures/update2/version2/');
+ $this->modelLoader->setLDrawLibraryContext(__DIR__.'/fixtures/update2/version2/');
$this->modelLoader->setRewrite(false);
$this->modelLoader->loadAll();
/** @var Model $model */
$model = $this->modelRepository->find('3820');
$this->assertEquals(1, count($this->modelRepository->findAll()));
- $this->assertEquals(2009,$model->getModified()->format('Y'));
+ $this->assertEquals(2009, $model->getModified()->format('Y'));
$this->modelLoader->setRewrite(true);
$this->modelLoader->loadAll();
- $this->assertEquals(2010,$model->getModified()->format('Y'));
+ $this->assertEquals(2010, $model->getModified()->format('Y'));
}
- public function testLoadOfPrinted() {
- $this->modelLoader->setLDrawLibraryContext(__DIR__ . '/fixtures/printed/');
- $this->modelLoader->loadOne(__DIR__ . '/fixtures/printed/parts/30367bps7.dat');
+ public function testLoadOfPrinted()
+ {
+ $this->modelLoader->setLDrawLibraryContext(__DIR__.'/fixtures/printed/');
+ $this->modelLoader->loadOne(__DIR__.'/fixtures/printed/parts/30367bps7.dat');
$models = $this->modelRepository->findAll();
$this->assertEquals(1, count($models));
$this->assertEquals('30367b', $models[0]->getId());
}
-}
\ No newline at end of file
+
+ public function testDownload()
+ {
+ $library = $this->modelLoader->downloadLibrary(__DIR__.'/fixtures/ldraw.zip');
+
+ $this->assertDirectoryExists($library);
+ }
+
+ /**
+ * @expectedException \LogicException
+ */
+ public function testDownloadFailed()
+ {
+ $library = $this->modelLoader->downloadLibrary(__DIR__.'/fixtures/nofile.zip');
+
+ $this->assertDirectoryExists($library);
+ }
+}
diff --git a/tests/LoaderBundle/Service/ModelLoader/fixtures/ldraw.zip b/tests/LoaderBundle/Service/ModelLoader/fixtures/ldraw.zip
new file mode 100644
index 0000000..639f549
Binary files /dev/null and b/tests/LoaderBundle/Service/ModelLoader/fixtures/ldraw.zip differ
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/RebrickableLoaderTest.php b/tests/LoaderBundle/Service/RebrickableLoader/RebrickableLoaderTest.php
new file mode 100644
index 0000000..a692fee
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/RebrickableLoaderTest.php
@@ -0,0 +1,45 @@
+setUpDb([LoadColors::class]);
+
+ $this->rebrickableLoader = new RebrickableLoader($this->em, $this->get('monolog.logger.event'), __DIR__.'/fixtures/');
+ }
+
+ public function testLoadAll()
+ {
+ $this->assertCount(0, $this->em->getRepository(Set::class)->findAll());
+ $this->rebrickableLoader->loadAll();
+
+ $this->assertCount(1, $this->em->getRepository(Set::class)->findAll());
+ }
+
+// /**
+// * @expectedException LoaderBundle\Exception\Loader\LoadingRebrickableFailedException
+// */
+// public function testRollback() {
+// $this->rebrickableLoader = new RebrickableLoader($this->em,$this->get('monolog.logger.event'),__DIR__.'/corrupt/');
+//
+// $this->assertCount(0,$this->em->getRepository(Set::class)->findAll());
+//
+// $this->rebrickableLoader->loadAll();
+//
+// $this->assertCount(0,$this->em->getRepository(Set::class)->findAll());
+// }
+}
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/corrupt/inventories.csv b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/inventories.csv
new file mode 100644
index 0000000..618f495
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/inventories.csv
@@ -0,0 +1,2 @@
+id,version,set_num
+4609,1,0013-1
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/corrupt/inventory_parts.csv b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/inventory_parts.csv
new file mode 100644
index 0000000..f22053e
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/inventory_parts.csv
@@ -0,0 +1,8 @@
+inventory_id,part_num,color_id,quantity,is_spare
+4609,3626apr0001,14,2,f
+4609,3838,15,2,f
+4609,3842a,15,2,f
+4609,3962a,0,2,f
+4609,970c00,15,2,f
+4609,973p90c05,15,2,f
+4609,255,15,2,f
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/corrupt/inventory_sets.csv b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/inventory_sets.csv
new file mode 100644
index 0000000..43cc546
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/inventory_sets.csv
@@ -0,0 +1 @@
+inventory_id,set_num,quantity
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/corrupt/part_categories.csv b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/part_categories.csv
new file mode 100644
index 0000000..0eef1a1
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/part_categories.csv
@@ -0,0 +1,3 @@
+,id,name,dasd
+,,13,Minifigs,,
+27,Minifig Accessories
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/corrupt/parts.csv b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/parts.csv
new file mode 100644
index 0000000..ce51003
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/parts.csv
@@ -0,0 +1,7 @@
+part_num,name,part_cat_id
+3626apr0001,Minifig Head Standard Grin Print [Solid Stud],13
+3838,Minifig Airtanks,27
+3842a,Minifig Helmet Classic with Thin Chin Guard and Visor Dimples,27
+3962a,Minifig Radio [Compact Handle],27
+970c00,Legs and Hips [Complete Assembly],13
+973p90c05,Torso Space Classic Moon Print / White Arms / White Hands,13
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/corrupt/sets.csv b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/sets.csv
new file mode 100644
index 0000000..4a00468
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/sets.csv
@@ -0,0 +1,2 @@
+set_num,name,year,theme_id,num_parts
+0013-1,Space Mini-Figures,1979,143,12
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/corrupt/themes.csv b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/themes.csv
new file mode 100644
index 0000000..edda4e2
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/corrupt/themes.csv
@@ -0,0 +1,3 @@
+id,name,parent_id
+126,Space,
+143,Supplemental,126
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/fixtures/inventories.csv b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/inventories.csv
new file mode 100644
index 0000000..618f495
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/inventories.csv
@@ -0,0 +1,2 @@
+id,version,set_num
+4609,1,0013-1
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/fixtures/inventory_parts.csv b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/inventory_parts.csv
new file mode 100644
index 0000000..f22053e
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/inventory_parts.csv
@@ -0,0 +1,8 @@
+inventory_id,part_num,color_id,quantity,is_spare
+4609,3626apr0001,14,2,f
+4609,3838,15,2,f
+4609,3842a,15,2,f
+4609,3962a,0,2,f
+4609,970c00,15,2,f
+4609,973p90c05,15,2,f
+4609,255,15,2,f
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/fixtures/inventory_sets.csv b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/inventory_sets.csv
new file mode 100644
index 0000000..43cc546
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/inventory_sets.csv
@@ -0,0 +1 @@
+inventory_id,set_num,quantity
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/fixtures/part_categories.csv b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/part_categories.csv
new file mode 100644
index 0000000..594ce51
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/part_categories.csv
@@ -0,0 +1,3 @@
+id,name
+13,Minifigs
+27,Minifig Accessories
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/fixtures/parts.csv b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/parts.csv
new file mode 100644
index 0000000..ce51003
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/parts.csv
@@ -0,0 +1,7 @@
+part_num,name,part_cat_id
+3626apr0001,Minifig Head Standard Grin Print [Solid Stud],13
+3838,Minifig Airtanks,27
+3842a,Minifig Helmet Classic with Thin Chin Guard and Visor Dimples,27
+3962a,Minifig Radio [Compact Handle],27
+970c00,Legs and Hips [Complete Assembly],13
+973p90c05,Torso Space Classic Moon Print / White Arms / White Hands,13
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/fixtures/sets.csv b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/sets.csv
new file mode 100644
index 0000000..4a00468
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/sets.csv
@@ -0,0 +1,2 @@
+set_num,name,year,theme_id,num_parts
+0013-1,Space Mini-Figures,1979,143,12
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RebrickableLoader/fixtures/themes.csv b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/themes.csv
new file mode 100644
index 0000000..edda4e2
--- /dev/null
+++ b/tests/LoaderBundle/Service/RebrickableLoader/fixtures/themes.csv
@@ -0,0 +1,3 @@
+id,name,parent_id
+126,Space,
+143,Supplemental,126
\ No newline at end of file
diff --git a/tests/LoaderBundle/Service/RelationLoader/RelationLoaderTest.php b/tests/LoaderBundle/Service/RelationLoader/RelationLoaderTest.php
new file mode 100644
index 0000000..0026dd6
--- /dev/null
+++ b/tests/LoaderBundle/Service/RelationLoader/RelationLoaderTest.php
@@ -0,0 +1,54 @@
+setUpDb([LoadUnmappedData::class]);
+
+ $file = $this->createMock(File::class);
+ $file->method('getPath')->willReturn('path');
+
+ $relationMapper = $this->createMock(RelationMapper::class);
+ $relationMapper->method('find')->will($this->returnArgument(0));
+
+ $this->relationLoader = new RelationLoader($this->get('doctrine.orm.entity_manager'), $this->get('monolog.logger.event'), $relationMapper);
+ $this->relationLoader->setOutput(new NullOutput());
+ }
+
+ public function testLoadAll()
+ {
+ $this->relationLoader->loadAll();
+
+ $parts = $this->em->getRepository(Part::class)->findAll();
+ foreach ($parts as $part) {
+ $this->assertNotNull($part->getModel());
+ }
+ }
+
+ public function testLoadNotPaired()
+ {
+ $this->relationLoader->loadNotPaired();
+
+ $parts = $this->em->getRepository(Part::class)->findAll();
+ foreach ($parts as $part) {
+ $this->assertNotNull($part->getModel());
+ }
+ }
+}
diff --git a/tests/LoaderBundle/Service/Stl/StlConverter/StlConverterTest.php b/tests/LoaderBundle/Service/Stl/StlConverter/StlConverterTest.php
index 6a397d9..83f7065 100644
--- a/tests/LoaderBundle/Service/Stl/StlConverter/StlConverterTest.php
+++ b/tests/LoaderBundle/Service/Stl/StlConverter/StlConverterTest.php
@@ -2,10 +2,10 @@
namespace Tests\AppBundle\Service\Stl;
-use LoaderBundle\Service\Stl\StlConverterService;
-use LoaderBundle\Service\Stl\StlFixerService;
use League\Flysystem\Adapter\Local;
use League\Flysystem\Filesystem;
+use LoaderBundle\Service\Stl\StlConverterService;
+use LoaderBundle\Service\Stl\StlFixerService;
use Tests\AppBundle\BaseTest;
class StlConverterTest extends BaseTest
@@ -13,7 +13,6 @@ class StlConverterTest extends BaseTest
/** @var StlConverterService */
private $stlConverter;
-
public function setUp()
{
parent::setUp();
@@ -23,40 +22,70 @@ class StlConverterTest extends BaseTest
$stlFixer = $this->createMock(StlFixerService::class);
$stlFixer->method('fix');
- $this->stlConverter = new StlConverterService($ldview,$this->filesystem,$stlFixer);
+ $this->stlConverter = new StlConverterService($ldview, $this->filesystem, $stlFixer);
}
public function testConvertToStl()
{
- $adapter = new Local(__DIR__ . '/fixtures/ldraw');
+ $adapter = new Local(__DIR__.'/fixtures/ldraw');
$ldrawLibraryContext = new Filesystem($adapter);
$this->stlConverter->setLDrawLibraryContext($ldrawLibraryContext);
- $this->assertNotNull($this->stlConverter->datToStl(__DIR__ . '/fixtures/ldraw/parts/983.dat'));
+ $this->assertNotNull($this->stlConverter->datToStl(__DIR__.'/fixtures/ldraw/parts/983.dat'));
$this->assertTrue($this->filesystem->has('models/983.stl'));
+ }
- $this->filesystem->delete('models/983.stl');
+ public function testRewriteTrue()
+ {
+ $adapter = new Local(__DIR__.'/fixtures/ldraw');
+ $ldrawLibraryContext = new Filesystem($adapter);
+ $this->stlConverter->setLDrawLibraryContext($ldrawLibraryContext);
+
+ $this->filesystem->write('models/983.stl', file_get_contents(__DIR__.'/fixtures/983.stl'));
+ $this->assertTrue($this->filesystem->has('models/983.stl'));
+
+ $this->stlConverter->datToStl(__DIR__.'/fixtures/ldraw/parts/983.dat', true);
+
+ $this->assertEquals(file_get_contents(__DIR__.'/fixtures/expected.stl'), $this->filesystem->read('models/983.stl'));
+ }
+
+ public function testRewriteFalse()
+ {
+ $adapter = new Local(__DIR__.'/fixtures/ldraw');
+ $ldrawLibraryContext = new Filesystem($adapter);
+ $this->stlConverter->setLDrawLibraryContext($ldrawLibraryContext);
+
+ $this->filesystem->write('models/983.stl', file_get_contents(__DIR__.'/fixtures/983.stl'));
+ $this->assertTrue($this->filesystem->has('models/983.stl'));
+
+ $this->stlConverter->datToStl(__DIR__.'/fixtures/ldraw/parts/983.dat');
+
+ $this->assertEquals(file_get_contents(__DIR__.'/fixtures/983.stl'), $this->filesystem->read('models/983.stl'));
}
/**
- * @expectedException LoaderBundle\Exception\Stl\LDLibraryMissingException
+ * @expectedException \LoaderBundle\Exception\Stl\LDLibraryMissingException
*/
public function testLDContextMissing()
{
- $this->stlConverter->datToStl(__DIR__ . '/fixtures/ldraw/parts/983.dat');
+ $this->stlConverter->datToStl(__DIR__.'/fixtures/ldraw/parts/983.dat');
}
- public function testConvertToPng()
+ /**
+ * @expectedException \Symfony\Component\Process\Exception\ProcessFailedException
+ */
+ public function testProcessFailedException()
{
- $adapter = new Local(__DIR__ . '/fixtures/ldraw');
+ $stlFixer = $this->createMock(StlFixerService::class);
+ $stlFixer->method('fix');
+
+ $this->stlConverter = new StlConverterService('', $this->filesystem, $stlFixer);
+
+ $adapter = new Local(__DIR__.'/fixtures/ldraw');
$ldrawLibraryContext = new Filesystem($adapter);
$this->stlConverter->setLDrawLibraryContext($ldrawLibraryContext);
- $this->assertNotNull($this->stlConverter->datToPng(__DIR__ . '/fixtures/ldraw/parts/983.dat'));
-
- $this->assertTrue($this->filesystem->has('images/983.png'));
-
- $this->filesystem->delete('images/983.png');
+ $this->stlConverter->datToStl(__DIR__.'/fixtures/ldraw/parts/983.dat');
}
-}
\ No newline at end of file
+}
diff --git a/tests/LoaderBundle/Service/Stl/StlConverter/fixtures/983.stl b/tests/LoaderBundle/Service/Stl/StlConverter/fixtures/983.stl
new file mode 100644
index 0000000..c4c21f5
Binary files /dev/null and b/tests/LoaderBundle/Service/Stl/StlConverter/fixtures/983.stl differ
diff --git a/tests/LoaderBundle/Service/Stl/StlConverter/fixtures/expected.stl b/tests/LoaderBundle/Service/Stl/StlConverter/fixtures/expected.stl
new file mode 100644
index 0000000..922980b
--- /dev/null
+++ b/tests/LoaderBundle/Service/Stl/StlConverter/fixtures/expected.stl
@@ -0,0 +1,1262 @@
+solid MYSOLID created by LDView, original data in 983.dat
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.240000 0.180092 -0.340716
+ vertex 0.240000 -0.284620 -0.460896
+ vertex 0.221720 -0.261624 -0.549812
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.221720 -0.261624 -0.549812
+ vertex -0.240000 -0.284620 -0.460896
+ vertex -0.240000 0.180092 -0.340716
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.160000 -0.284620 -0.460896
+ vertex 0.160000 0.180092 -0.340716
+ vertex 0.147840 -0.269288 -0.520188
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.147840 -0.269288 -0.520188
+ vertex -0.160000 0.180092 -0.340716
+ vertex -0.160000 -0.284620 -0.460896
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.194440 0.174556 -0.479232
+ vertex -0.169720 0.154544 -0.522628
+ vertex -0.169720 -0.242124 -0.625212
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.169720 -0.242124 -0.625212
+ vertex 0.169720 0.154544 -0.522628
+ vertex 0.194440 0.174556 -0.479232
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.113120 -0.256296 -0.570416
+ vertex -0.113120 0.180976 -0.457328
+ vertex -0.130200 0.185988 -0.429672
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.130200 0.185988 -0.429672
+ vertex 0.113120 0.180976 -0.457328
+ vertex 0.113120 -0.256296 -0.570416
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 0.087024 -0.596236
+ vertex 0.080000 0.114932 -0.572988
+ vertex 0.091840 0.092164 -0.592468
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.091840 0.092164 -0.592468
+ vertex 0.080000 0.114932 -0.572988
+ vertex 0.108480 0.111892 -0.575924
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 0.138908 -0.545880
+ vertex 0.108480 0.111892 -0.575924
+ vertex 0.080000 0.114932 -0.572988
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.108480 0.111892 -0.575924
+ vertex 0.080000 0.138908 -0.545880
+ vertex 0.127480 0.128728 -0.558432
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 0.158600 -0.515464
+ vertex 0.127480 0.128728 -0.558432
+ vertex 0.080000 0.138908 -0.545880
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.127480 0.128728 -0.558432
+ vertex 0.080000 0.158600 -0.515464
+ vertex 0.148120 0.142892 -0.540512
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.113120 0.180976 -0.457328
+ vertex 0.148120 0.142892 -0.540512
+ vertex 0.080000 0.158600 -0.515464
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.113120 0.180976 -0.457328
+ vertex 0.080000 0.158600 -0.515464
+ vertex 0.080000 0.173532 -0.482144
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.148120 0.142892 -0.540512
+ vertex 0.113120 0.180976 -0.457328
+ vertex 0.169720 0.154544 -0.522628
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.130200 0.185988 -0.429672
+ vertex 0.169720 0.154544 -0.522628
+ vertex 0.113120 0.180976 -0.457328
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.169720 0.154544 -0.522628
+ vertex 0.130200 0.185988 -0.429672
+ vertex 0.194440 0.174556 -0.479232
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.147840 0.187736 -0.401992
+ vertex 0.194440 0.174556 -0.479232
+ vertex 0.130200 0.185988 -0.429672
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.194440 0.174556 -0.479232
+ vertex 0.147840 0.187736 -0.401992
+ vertex 0.221720 0.185400 -0.434204
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.153880 0.185888 -0.371092
+ vertex 0.221720 0.185400 -0.434204
+ vertex 0.147840 0.187736 -0.401992
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.221720 0.185400 -0.434204
+ vertex 0.153880 0.185888 -0.371092
+ vertex 0.230680 0.187352 -0.387176
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.230680 0.187352 -0.387176
+ vertex 0.153880 0.185888 -0.371092
+ vertex 0.200000 0.180092 -0.340716
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.160000 0.180092 -0.340716
+ vertex 0.200000 0.180092 -0.340716
+ vertex 0.153880 0.185888 -0.371092
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.230680 0.187352 -0.387176
+ vertex 0.200000 0.180092 -0.340716
+ vertex 0.240000 0.180092 -0.340716
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.148120 0.142892 -0.540512
+ vertex -0.080000 0.158600 -0.515464
+ vertex -0.127480 0.128728 -0.558432
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.127480 0.128728 -0.558432
+ vertex -0.080000 0.138908 -0.545880
+ vertex -0.108480 0.111892 -0.575924
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.108480 0.111892 -0.575924
+ vertex -0.080000 0.114932 -0.572988
+ vertex -0.091840 0.092164 -0.592468
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.113120 0.180976 -0.457328
+ vertex -0.080000 0.158600 -0.515464
+ vertex -0.148120 0.142892 -0.540512
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.113120 0.180976 -0.457328
+ vertex -0.169720 0.154544 -0.522628
+ vertex -0.130200 0.185988 -0.429672
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.169720 0.154544 -0.522628
+ vertex -0.113120 0.180976 -0.457328
+ vertex -0.148120 0.142892 -0.540512
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.194440 0.174556 -0.479232
+ vertex -0.130200 0.185988 -0.429672
+ vertex -0.169720 0.154544 -0.522628
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.130200 0.185988 -0.429672
+ vertex -0.194440 0.174556 -0.479232
+ vertex -0.147840 0.187736 -0.401992
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.221720 0.185400 -0.434204
+ vertex -0.147840 0.187736 -0.401992
+ vertex -0.194440 0.174556 -0.479232
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.147840 0.187736 -0.401992
+ vertex -0.221720 0.185400 -0.434204
+ vertex -0.153880 0.185888 -0.371092
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.153880 0.185888 -0.371092
+ vertex -0.200000 0.180092 -0.340716
+ vertex -0.160000 0.180092 -0.340716
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.200000 0.180092 -0.340716
+ vertex -0.153880 0.185888 -0.371092
+ vertex -0.230680 0.187352 -0.387176
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.230680 0.187352 -0.387176
+ vertex -0.153880 0.185888 -0.371092
+ vertex -0.221720 0.185400 -0.434204
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.240000 0.180092 -0.340716
+ vertex -0.200000 0.180092 -0.340716
+ vertex -0.230680 0.187352 -0.387176
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.080000 -0.228516 -0.677840
+ vertex -0.080000 -0.250748 -0.591868
+ vertex -0.091840 -0.229104 -0.675556
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.091840 -0.229104 -0.675556
+ vertex 0.080000 -0.250748 -0.591868
+ vertex 0.080000 -0.228516 -0.677840
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.091840 0.092164 -0.592468
+ vertex -0.080000 0.114932 -0.572988
+ vertex -0.080000 0.087024 -0.596236
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.080000 0.114932 -0.572988
+ vertex -0.108480 0.111892 -0.575924
+ vertex -0.080000 0.138908 -0.545880
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.080000 0.138908 -0.545880
+ vertex -0.127480 0.128728 -0.558432
+ vertex -0.080000 0.158600 -0.515464
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.080000 0.173532 -0.482144
+ vertex -0.080000 0.158600 -0.515464
+ vertex -0.113120 0.180976 -0.457328
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.084852 -0.084852 0.000000
+ vertex 0.062184 -0.100000 0.000000
+ vertex 0.084852 -0.084852 -0.058564
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.106408 -0.052596 -0.181912
+ vertex 0.110868 -0.045924 -0.183268
+ vertex 0.084852 -0.084852 -0.058564
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.084852 -0.084852 -0.058564
+ vertex -0.062184 -0.100000 0.000000
+ vertex -0.084852 -0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.084852 -0.084852 -0.058564
+ vertex -0.110868 -0.045924 -0.183268
+ vertex -0.106408 -0.052596 -0.181912
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.000000 -0.100000 0.000000
+ vertex -0.038268 -0.092392 0.000000
+ vertex -0.062184 -0.100000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.062184 -0.100000 0.000000
+ vertex 0.038268 -0.092392 0.000000
+ vertex 0.000000 -0.100000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.084852 -0.084852 -0.058564
+ vertex -0.106408 -0.052596 -0.181912
+ vertex -0.091848 -0.055048 -0.172496
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.091848 -0.055048 -0.172496
+ vertex 0.106408 -0.052596 -0.181912
+ vertex 0.084852 -0.084852 -0.058564
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.230680 0.187352 -0.387176
+ vertex 0.240000 0.180092 -0.340716
+ vertex 0.221720 -0.261624 -0.549812
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.230680 0.187352 -0.387176
+ vertex 0.221720 -0.261624 -0.549812
+ vertex 0.221720 0.185400 -0.434204
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.221720 -0.261624 -0.549812
+ vertex -0.240000 0.180092 -0.340716
+ vertex -0.230680 0.187352 -0.387176
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.221720 -0.261624 -0.549812
+ vertex -0.230680 0.187352 -0.387176
+ vertex -0.221720 0.185400 -0.434204
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.153880 0.185888 -0.371092
+ vertex 0.147840 0.187736 -0.401992
+ vertex 0.147840 -0.269288 -0.520188
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.153880 0.185888 -0.371092
+ vertex 0.147840 -0.269288 -0.520188
+ vertex 0.160000 0.180092 -0.340716
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.147840 -0.269288 -0.520188
+ vertex -0.147840 0.187736 -0.401992
+ vertex -0.153880 0.185888 -0.371092
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.147840 -0.269288 -0.520188
+ vertex -0.153880 0.185888 -0.371092
+ vertex -0.160000 0.180092 -0.340716
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.221720 0.185400 -0.434204
+ vertex -0.194440 0.174556 -0.479232
+ vertex -0.169720 -0.242124 -0.625212
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.221720 0.185400 -0.434204
+ vertex -0.169720 -0.242124 -0.625212
+ vertex -0.221720 -0.261624 -0.549812
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.169720 -0.242124 -0.625212
+ vertex 0.194440 0.174556 -0.479232
+ vertex 0.221720 0.185400 -0.434204
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.169720 -0.242124 -0.625212
+ vertex 0.221720 0.185400 -0.434204
+ vertex 0.221720 -0.261624 -0.549812
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.130200 0.185988 -0.429672
+ vertex -0.147840 0.187736 -0.401992
+ vertex -0.147840 -0.269288 -0.520188
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.130200 0.185988 -0.429672
+ vertex -0.147840 -0.269288 -0.520188
+ vertex -0.113120 -0.256296 -0.570416
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.147840 -0.269288 -0.520188
+ vertex 0.147840 0.187736 -0.401992
+ vertex 0.130200 0.185988 -0.429672
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.147840 -0.269288 -0.520188
+ vertex 0.130200 0.185988 -0.429672
+ vertex 0.113120 -0.256296 -0.570416
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 0.173532 -0.482144
+ vertex 0.080000 -0.250748 -0.591868
+ vertex 0.113120 -0.256296 -0.570416
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 0.173532 -0.482144
+ vertex 0.113120 -0.256296 -0.570416
+ vertex 0.113120 0.180976 -0.457328
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.113120 -0.256296 -0.570416
+ vertex -0.080000 -0.250748 -0.591868
+ vertex -0.080000 0.173532 -0.482144
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.113120 -0.256296 -0.570416
+ vertex -0.080000 0.173532 -0.482144
+ vertex -0.113120 0.180976 -0.457328
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.108480 0.111892 -0.575924
+ vertex -0.091840 0.092164 -0.592468
+ vertex -0.091840 -0.229104 -0.675556
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.108480 0.111892 -0.575924
+ vertex -0.091840 -0.229104 -0.675556
+ vertex -0.108480 -0.231880 -0.664828
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.091840 -0.229104 -0.675556
+ vertex 0.091840 0.092164 -0.592468
+ vertex 0.108480 0.111892 -0.575924
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.091840 -0.229104 -0.675556
+ vertex 0.108480 0.111892 -0.575924
+ vertex 0.108480 -0.231880 -0.664828
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.127480 0.128728 -0.558432
+ vertex -0.108480 0.111892 -0.575924
+ vertex -0.108480 -0.231880 -0.664828
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.127480 0.128728 -0.558432
+ vertex -0.108480 -0.231880 -0.664828
+ vertex -0.127480 -0.235064 -0.652512
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.108480 -0.231880 -0.664828
+ vertex 0.108480 0.111892 -0.575924
+ vertex 0.127480 0.128728 -0.558432
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.108480 -0.231880 -0.664828
+ vertex 0.127480 0.128728 -0.558432
+ vertex 0.127480 -0.235064 -0.652512
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.148120 0.142892 -0.540512
+ vertex -0.127480 0.128728 -0.558432
+ vertex -0.127480 -0.235064 -0.652512
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.148120 0.142892 -0.540512
+ vertex -0.127480 -0.235064 -0.652512
+ vertex -0.148120 -0.238520 -0.639152
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.127480 -0.235064 -0.652512
+ vertex 0.127480 0.128728 -0.558432
+ vertex 0.148120 0.142892 -0.540512
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.127480 -0.235064 -0.652512
+ vertex 0.148120 0.142892 -0.540512
+ vertex 0.148120 -0.238520 -0.639152
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.169720 -0.242124 -0.625212
+ vertex -0.169720 0.154544 -0.522628
+ vertex -0.148120 0.142892 -0.540512
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.169720 -0.242124 -0.625212
+ vertex -0.148120 0.142892 -0.540512
+ vertex -0.148120 -0.238520 -0.639152
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.148120 0.142892 -0.540512
+ vertex 0.169720 0.154544 -0.522628
+ vertex 0.169720 -0.242124 -0.625212
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.148120 0.142892 -0.540512
+ vertex 0.169720 -0.242124 -0.625212
+ vertex 0.148120 -0.238520 -0.639152
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.091840 -0.229104 -0.675556
+ vertex -0.091840 0.092164 -0.592468
+ vertex -0.080000 0.087024 -0.596236
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.091840 -0.229104 -0.675556
+ vertex -0.080000 0.087024 -0.596236
+ vertex -0.080000 -0.228516 -0.677840
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.091840 -0.229104 -0.675556
+ vertex 0.080000 -0.228516 -0.677840
+ vertex 0.080000 0.087024 -0.596236
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.091840 -0.229104 -0.675556
+ vertex 0.080000 0.087024 -0.596236
+ vertex 0.091840 0.092164 -0.592468
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.113136 -0.256292 -0.570432
+ vertex -0.147824 -0.269288 -0.520176
+ vertex -0.221732 -0.261624 -0.549812
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.113136 -0.256292 -0.570432
+ vertex -0.221732 -0.261624 -0.549812
+ vertex -0.169704 -0.242128 -0.625196
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.147824 -0.269288 -0.520176
+ vertex -0.160000 -0.284620 -0.460896
+ vertex -0.239996 -0.284620 -0.460896
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.147824 -0.269288 -0.520176
+ vertex -0.239996 -0.284620 -0.460896
+ vertex -0.221732 -0.261624 -0.549812
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.160000 -0.284620 -0.460896
+ vertex 0.147824 -0.269288 -0.520176
+ vertex 0.221732 -0.261624 -0.549812
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.160000 -0.284620 -0.460896
+ vertex 0.221732 -0.261624 -0.549812
+ vertex 0.239996 -0.284620 -0.460896
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.147824 -0.269288 -0.520176
+ vertex 0.113136 -0.256292 -0.570432
+ vertex 0.169704 -0.242128 -0.625196
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.147824 -0.269288 -0.520176
+ vertex 0.169704 -0.242128 -0.625196
+ vertex 0.221732 -0.261624 -0.549812
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.169720 -0.242124 -0.625212
+ vertex -0.091840 -0.229104 -0.675556
+ vertex -0.080000 -0.250748 -0.591868
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.169720 -0.242124 -0.625212
+ vertex -0.080000 -0.250748 -0.591868
+ vertex -0.113120 -0.256296 -0.570416
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 -0.250748 -0.591868
+ vertex 0.091840 -0.229104 -0.675556
+ vertex 0.169720 -0.242124 -0.625212
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 -0.250748 -0.591868
+ vertex 0.169720 -0.242124 -0.625212
+ vertex 0.113120 -0.256296 -0.570416
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.080000 0.064792 -0.510264
+ vertex -0.080000 -0.250748 -0.591868
+ vertex -0.080000 -0.228516 -0.677840
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.080000 0.064792 -0.510264
+ vertex -0.080000 -0.228516 -0.677840
+ vertex -0.080000 0.087024 -0.596236
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 -0.228516 -0.677840
+ vertex 0.080000 -0.250748 -0.591868
+ vertex 0.080000 0.064792 -0.510264
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 -0.228516 -0.677840
+ vertex 0.080000 0.064792 -0.510264
+ vertex 0.080000 0.087024 -0.596236
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.080000 0.087024 -0.596236
+ vertex -0.080000 0.114932 -0.572988
+ vertex -0.080000 0.138908 -0.545880
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.080000 0.087024 -0.596236
+ vertex -0.080000 0.138908 -0.545880
+ vertex -0.080000 0.064792 -0.510264
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.080000 0.173532 -0.482144
+ vertex -0.080000 0.064792 -0.510264
+ vertex -0.080000 0.138908 -0.545880
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.080000 0.173532 -0.482144
+ vertex -0.080000 0.138908 -0.545880
+ vertex -0.080000 0.158600 -0.515464
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 0.138908 -0.545880
+ vertex 0.080000 0.114932 -0.572988
+ vertex 0.080000 0.087024 -0.596236
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 0.138908 -0.545880
+ vertex 0.080000 0.087024 -0.596236
+ vertex 0.080000 0.064792 -0.510264
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 0.138908 -0.545880
+ vertex 0.080000 0.064792 -0.510264
+ vertex 0.080000 0.173532 -0.482144
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.080000 0.138908 -0.545880
+ vertex 0.080000 0.173532 -0.482144
+ vertex 0.080000 0.158600 -0.515464
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.110868 -0.045924 -0.183268
+ vertex 0.110868 -0.045924 0.000000
+ vertex 0.084852 -0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.110868 -0.045924 -0.183268
+ vertex 0.084852 -0.084852 0.000000
+ vertex 0.084852 -0.084852 -0.058564
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.120000 0.000000 -0.177692
+ vertex 0.120000 0.000000 0.000000
+ vertex 0.110868 -0.045924 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.120000 0.000000 -0.177692
+ vertex 0.110868 -0.045924 0.000000
+ vertex 0.110868 -0.045924 -0.183268
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.110868 0.045924 -0.159508
+ vertex 0.110868 0.045924 0.000000
+ vertex 0.120000 0.000000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.110868 0.045924 -0.159508
+ vertex 0.120000 0.000000 0.000000
+ vertex 0.120000 0.000000 -0.177692
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.091848 0.074384 -0.139024
+ vertex 0.091848 0.074384 0.000000
+ vertex 0.110868 0.045924 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.091848 0.074384 -0.139024
+ vertex 0.110868 0.045924 0.000000
+ vertex 0.110868 0.045924 -0.159508
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.084852 0.084852 0.000000
+ vertex 0.091848 0.074384 0.000000
+ vertex 0.091848 0.074384 -0.139024
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.084852 0.084852 0.000000
+ vertex 0.091848 0.074384 -0.139024
+ vertex 0.084852 0.084852 -0.139980
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.045924 0.110868 -0.120156
+ vertex 0.045924 0.110868 0.000000
+ vertex 0.084852 0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.045924 0.110868 -0.120156
+ vertex 0.084852 0.084852 0.000000
+ vertex 0.084852 0.084852 -0.139980
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.000000 0.120000 -0.108376
+ vertex 0.000000 0.120000 0.000000
+ vertex 0.045924 0.110868 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.000000 0.120000 -0.108376
+ vertex 0.045924 0.110868 0.000000
+ vertex 0.045924 0.110868 -0.120156
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.084852 -0.084852 0.000000
+ vertex -0.110868 -0.045924 0.000000
+ vertex -0.110868 -0.045924 -0.183268
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.084852 -0.084852 0.000000
+ vertex -0.110868 -0.045924 -0.183268
+ vertex -0.084852 -0.084852 -0.058564
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.110868 -0.045924 0.000000
+ vertex -0.120000 0.000000 0.000000
+ vertex -0.120000 0.000000 -0.177692
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.110868 -0.045924 0.000000
+ vertex -0.120000 0.000000 -0.177692
+ vertex -0.110868 -0.045924 -0.183268
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.120000 0.000000 0.000000
+ vertex -0.110868 0.045924 0.000000
+ vertex -0.110868 0.045924 -0.159508
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.120000 0.000000 0.000000
+ vertex -0.110868 0.045924 -0.159508
+ vertex -0.120000 0.000000 -0.177692
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.110868 0.045924 0.000000
+ vertex -0.091848 0.074384 0.000000
+ vertex -0.091848 0.074384 -0.139024
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.110868 0.045924 0.000000
+ vertex -0.091848 0.074384 -0.139024
+ vertex -0.110868 0.045924 -0.159508
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.091848 0.074384 -0.139024
+ vertex -0.091848 0.074384 0.000000
+ vertex -0.084852 0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.091848 0.074384 -0.139024
+ vertex -0.084852 0.084852 0.000000
+ vertex -0.084852 0.084852 -0.139980
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.084852 0.084852 0.000000
+ vertex -0.045924 0.110868 0.000000
+ vertex -0.045924 0.110868 -0.120156
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.084852 0.084852 0.000000
+ vertex -0.045924 0.110868 -0.120156
+ vertex -0.084852 0.084852 -0.139980
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.045924 0.110868 0.000000
+ vertex 0.000000 0.120000 0.000000
+ vertex 0.000000 0.120000 -0.108376
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.045924 0.110868 0.000000
+ vertex 0.000000 0.120000 -0.108376
+ vertex -0.045924 0.110868 -0.120156
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.100000 0.000000 0.000000
+ vertex 0.092392 -0.038268 0.000000
+ vertex 0.110868 -0.045920 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.100000 0.000000 0.000000
+ vertex 0.110868 -0.045920 0.000000
+ vertex 0.120000 0.000000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.092392 -0.038268 0.000000
+ vertex 0.070712 -0.070712 0.000000
+ vertex 0.084852 -0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.092392 -0.038268 0.000000
+ vertex 0.084852 -0.084852 0.000000
+ vertex 0.110868 -0.045920 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.070712 -0.070712 0.000000
+ vertex 0.038268 -0.092392 0.000000
+ vertex 0.062184 -0.100000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.070712 -0.070712 0.000000
+ vertex 0.062184 -0.100000 0.000000
+ vertex 0.084852 -0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.038268 -0.092392 0.000000
+ vertex -0.070712 -0.070712 0.000000
+ vertex -0.084852 -0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.038268 -0.092392 0.000000
+ vertex -0.084852 -0.084852 0.000000
+ vertex -0.062184 -0.100000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.070712 -0.070712 0.000000
+ vertex -0.092392 -0.038268 0.000000
+ vertex -0.110868 -0.045920 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.070712 -0.070712 0.000000
+ vertex -0.110868 -0.045920 0.000000
+ vertex -0.084852 -0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.092392 -0.038268 0.000000
+ vertex -0.100000 0.000000 0.000000
+ vertex -0.120000 0.000000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.092392 -0.038268 0.000000
+ vertex -0.120000 0.000000 0.000000
+ vertex -0.110868 -0.045920 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.100000 0.000000 0.000000
+ vertex -0.092392 0.038268 0.000000
+ vertex -0.110868 0.045920 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.100000 0.000000 0.000000
+ vertex -0.110868 0.045920 0.000000
+ vertex -0.120000 0.000000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.092392 0.038268 0.000000
+ vertex -0.070712 0.070708 0.000000
+ vertex -0.084852 0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.092392 0.038268 0.000000
+ vertex -0.084852 0.084852 0.000000
+ vertex -0.110868 0.045920 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.070712 0.070708 0.000000
+ vertex -0.038268 0.092392 0.000000
+ vertex -0.045920 0.110868 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.070712 0.070708 0.000000
+ vertex -0.045920 0.110868 0.000000
+ vertex -0.084852 0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.038268 0.092392 0.000000
+ vertex 0.000000 0.100000 0.000000
+ vertex 0.000000 0.120000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.038268 0.092392 0.000000
+ vertex 0.000000 0.120000 0.000000
+ vertex -0.045920 0.110868 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.000000 0.100000 0.000000
+ vertex 0.038268 0.092392 0.000000
+ vertex 0.045920 0.110868 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.000000 0.100000 0.000000
+ vertex 0.045920 0.110868 0.000000
+ vertex 0.000000 0.120000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.038268 0.092392 0.000000
+ vertex 0.070712 0.070708 0.000000
+ vertex 0.084852 0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.038268 0.092392 0.000000
+ vertex 0.084852 0.084852 0.000000
+ vertex 0.045920 0.110868 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.070712 0.070708 0.000000
+ vertex 0.092392 0.038268 0.000000
+ vertex 0.110868 0.045920 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.070712 0.070708 0.000000
+ vertex 0.110868 0.045920 0.000000
+ vertex 0.084852 0.084852 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.092392 0.038268 0.000000
+ vertex 0.100000 0.000000 0.000000
+ vertex 0.120000 0.000000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.092392 0.038268 0.000000
+ vertex 0.120000 0.000000 0.000000
+ vertex 0.110868 0.045920 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.062184 -0.100000 0.000000
+ vertex -0.084852 -0.084852 -0.058564
+ vertex 0.084852 -0.084852 -0.058564
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex -0.062184 -0.100000 0.000000
+ vertex 0.084852 -0.084852 -0.058564
+ vertex 0.062184 -0.100000 0.000000
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.000000 -0.084852 -0.058564
+ vertex -0.084852 -0.084852 -0.058564
+ vertex -0.091848 -0.055048 -0.172496
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.000000 -0.084852 -0.058564
+ vertex -0.091848 -0.055048 -0.172496
+ vertex 0.000000 -0.059656 -0.154824
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.091848 -0.055048 -0.172496
+ vertex 0.084852 -0.084852 -0.058564
+ vertex 0.000000 -0.084852 -0.058564
+ endloop
+ endfacet
+ facet normal 0.000000 0.000000 0.000000
+ outer loop
+ vertex 0.091848 -0.055048 -0.172496
+ vertex 0.000000 -0.084852 -0.058564
+ vertex 0.000000 -0.059656 -0.154824
+ endloop
+ endfacet
+endsolid MYSOLID
diff --git a/tests/LoaderBundle/Service/Stl/StlFixer/StlFixerTest.php b/tests/LoaderBundle/Service/Stl/StlFixer/StlFixerTest.php
index d088828..d0a9a6e 100644
--- a/tests/LoaderBundle/Service/Stl/StlFixer/StlFixerTest.php
+++ b/tests/LoaderBundle/Service/Stl/StlFixer/StlFixerTest.php
@@ -2,12 +2,7 @@
namespace Tests\AppBundle\Service\Stl;
-use LoaderBundle\Service\Stl\StlConverterService;
use LoaderBundle\Service\Stl\StlFixerService;
-use League\Flysystem\Adapter\Local;
-use League\Flysystem\Filesystem;
-use League\Flysystem\FilesystemInterface;
-use PHPUnit\Framework\TestCase;
use Tests\AppBundle\BaseTest;
class StlFixer extends BaseTest
@@ -22,18 +17,30 @@ class StlFixer extends BaseTest
parent::setUp();
$this->stlFixer = new StlFixerService($this->getParameter('admesh_bin'));
- $this->input = __DIR__ . '/fixtures/ascii.stl';
- }
-
- public function tearDown()
- {
- $this->filesystem->delete('output.stl');
+ $this->input = __DIR__.'/fixtures/ascii.stl';
}
public function testFixing()
{
- $this->stlFixer->fix($this->input,$this->filesystem->getAdapter()->getPathPrefix().'/output.stl');
+ $this->stlFixer->fix($this->input, $this->filesystem->getAdapter()->getPathPrefix().'/output.stl');
$this->assertTrue($this->filesystem->has('output.stl'));
}
-}
\ No newline at end of file
+
+ /**
+ * @expectedException \LoaderBundle\Exception\FileNotFoundException
+ */
+ public function testFileNotFound()
+ {
+ $this->stlFixer->fix('', '');
+ }
+
+ /**
+ * @expectedException \Symfony\Component\Process\Exception\ProcessFailedException
+ */
+ public function testCorruptProcess()
+ {
+ $this->stlFixer = new StlFixerService('');
+ $this->stlFixer->fix($this->input);
+ }
+}
diff --git a/tests/LoaderBundle/Service/Stl/StlRenderer/StlRendererTest.php b/tests/LoaderBundle/Service/Stl/StlRenderer/StlRendererTest.php
index 7b59046..8424009 100644
--- a/tests/LoaderBundle/Service/Stl/StlRenderer/StlRendererTest.php
+++ b/tests/LoaderBundle/Service/Stl/StlRenderer/StlRendererTest.php
@@ -2,13 +2,7 @@
namespace Tests\AppBundle\Service\Stl;
-use LoaderBundle\Service\Stl\StlConverterService;
-use LoaderBundle\Service\Stl\StlFixerService;
use LoaderBundle\Service\Stl\StlRendererService;
-use League\Flysystem\Adapter\Local;
-use League\Flysystem\Filesystem;
-use League\Flysystem\FilesystemInterface;
-use PHPUnit\Framework\TestCase;
use Tests\AppBundle\BaseTest;
class StlRendererTest extends BaseTest
@@ -20,21 +14,37 @@ class StlRendererTest extends BaseTest
{
parent::setUp();
- $layout = __DIR__ . '/fixtures/layout.tmpl';
+ $layout = __DIR__.'/fixtures/layout.tmpl';
$povray = $this->getParameter('povray_bin');
$stl2pov = $this->getParameter('stl2pov_bin');
- $this->stlRenderer = new StlRendererService($layout,$povray,$stl2pov);
- }
-
- public function tearDown()
- {
- $this->filesystem->delete('973c00.png');
+ $this->stlRenderer = new StlRendererService($layout, $povray, $stl2pov);
}
public function testRendering()
{
- $this->stlRenderer->render(__DIR__ . '/fixtures/973c00.stl',$this->filesystem->getAdapter()->getPathPrefix());
+ $this->stlRenderer->render(__DIR__.'/fixtures/973c00.stl', $this->filesystem->getAdapter()->getPathPrefix());
$this->assertTrue($this->filesystem->has('973c00.png'));
}
-}
\ No newline at end of file
+
+ /**
+ * @expectedException \LoaderBundle\Exception\FileNotFoundException
+ */
+ public function testFileNotFound()
+ {
+ $this->stlRenderer->render('abc', $this->filesystem->getAdapter()->getPathPrefix());
+ }
+
+ /**
+ * @expectedException \Symfony\Component\Process\Exception\ProcessFailedException
+ */
+ public function testPovRayMissing()
+ {
+ $layout = __DIR__.'/fixtures/layout.tmpl';
+ $stl2pov = $this->getParameter('stl2pov_bin');
+ $this->stlRenderer = new StlRendererService($layout, '', $stl2pov);
+
+ $this->stlRenderer->render(__DIR__.'/fixtures/973c00.stl', $this->filesystem->getAdapter()->getPathPrefix());
+ $this->assertTrue($this->filesystem->has('973c00.png'));
+ }
+}
diff --git a/tests/LoaderBundle/Util/LDModelParser/LDModelParserTest.php b/tests/LoaderBundle/Util/LDModelParser/LDModelParserTest.php
index 911b367..e454cae 100644
--- a/tests/LoaderBundle/Util/LDModelParser/LDModelParserTest.php
+++ b/tests/LoaderBundle/Util/LDModelParser/LDModelParserTest.php
@@ -2,11 +2,8 @@
namespace Tests\LoaderBundle\Util\LDModelParser;
-use AppBundle\Exception\ErrorParsingLineException;
-use AppBundle\Exception\ParseErrorException;
use LoaderBundle\Util\LDModelParser;
use PHPUnit\Framework\TestCase;
-use Symfony\Component\Validator\Constraints\DateTime;
class LDModelParserTest extends TestCase
{
@@ -22,56 +19,63 @@ class LDModelParserTest extends TestCase
public function testValid()
{
- $resource = file_get_contents(__DIR__ . '/fixtures/valid.dat');
+ $resource = file_get_contents(__DIR__.'/fixtures/valid.dat');
$array = [
- "id" => "1234",
- "name" => "Category Name",
- "category" => "Category!",
- "keywords" => [
- 'keyword1', 'keyword 2', 'keyword3', 'keyword4'
+ 'id' => '1234',
+ 'name' => 'Category Name',
+ 'category' => 'Category!',
+ 'keywords' => [
+ 'keyword1', 'keyword 2', 'keyword3', 'keyword4',
],
- "author" => "Author [nickname]",
- "modified" => new \DateTime('2017-04-01'),
- "type" => "Part",
+ 'author' => 'Author [nickname]',
+ 'modified' => new \DateTime('2017-04-01'),
+ 'type' => 'Part',
'subparts' => [
'submodel' => [
1 => 2,
- 16 => 1
- ]
+ 16 => 1,
+ ],
],
- "parent" => null,
- "license" => "Redistributable under CCAL version 2.0",
+ 'parent' => null,
+ 'license' => 'Redistributable under CCAL version 2.0',
];
$this->assertEquals($array, $this->parser->parse($resource));
}
-
/**
- * @expectedException LoaderBundle\Exception\ErrorParsingLineException
+ * @expectedException \LoaderBundle\Exception\ErrorParsingLineException
*/
public function testInvalid()
{
- $resource = file_get_contents(__DIR__ . '/fixtures/invalid.dat');
+ $resource = file_get_contents(__DIR__.'/fixtures/invalid.dat');
$this->parser->parse($resource);
}
- public function testStickers() {
- $resource = file_get_contents(__DIR__ . '/fixtures/stickers.txt');
+ public function testStickers()
+ {
+ $resource = file_get_contents(__DIR__.'/fixtures/stickers.txt');
foreach (preg_split('/^---DAT/m', $resource) as $dat) {
$this->assertEquals('Sticker', $this->parser->parse($dat)['type']);
}
}
+ public function testColor()
+ {
+ $resource = file_get_contents(__DIR__.'/fixtures/color.dat');
+
+ $this->assertEquals('3705', $this->parser->parse($resource)['parent']);
+ }
+
public function testAlias()
{
- $resource = file_get_contents(__DIR__ . '/fixtures/alias.txt');
+ $resource = file_get_contents(__DIR__.'/fixtures/alias.txt');
foreach (preg_split('/^---DAT/m', $resource) as $dat) {
$this->assertEquals('parent', $this->parser->parse($dat)['parent']);
}
}
-}
\ No newline at end of file
+}
diff --git a/tests/LoaderBundle/Util/LDModelParser/fixtures/color.dat b/tests/LoaderBundle/Util/LDModelParser/fixtures/color.dat
new file mode 100644
index 0000000..4d863d5
--- /dev/null
+++ b/tests/LoaderBundle/Util/LDModelParser/fixtures/color.dat
@@ -0,0 +1,12 @@
+0 _Technic Axle 4 Black
+0 Name: 370526.dat
+0 Author: Michael Heidemann [mikeheide]
+0 !LDRAW_ORG Part Physical_Colour UPDATE 2010-03
+0 !LICENSE Redistributable under CCAL version 2.0 : see CAreadme.txt
+
+0 BFC CERTIFY CCW
+
+0 !HISTORY 2010-12-31 [PTadmin] Official Update 2010-03
+
+1 0 0 0 0 1 0 0 0 1 0 0 0 1 3705.DAT
+0
diff --git a/tests/LoaderBundle/Util/RelationMapper/RelationMapperTest.php b/tests/LoaderBundle/Util/RelationMapper/RelationMapperTest.php
index 5630c66..d92c71a 100644
--- a/tests/LoaderBundle/Util/RelationMapper/RelationMapperTest.php
+++ b/tests/LoaderBundle/Util/RelationMapper/RelationMapperTest.php
@@ -2,25 +2,23 @@
namespace Tests\LoaderBundle\Util\RelationMapper;
-use LoaderBundle\Util\RelationMapper;
use Doctrine\Common\Cache\ArrayCache;
+use LoaderBundle\Util\RelationMapper;
use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Yaml\Yaml;
class RelationMapperTest extends TestCase
{
public function testLoad()
{
$mapper = new RelationMapper(new ArrayCache());
- $mapper->loadResource(__DIR__ . '/fixtures/resources.yml', 'resources');
+ $mapper->loadResource(__DIR__.'/fixtures/resources.yml', 'resources');
- $this->assertEquals('bar', $mapper->find('foo','resources'));
- $this->assertEquals('bar', $mapper->find('bar','resources'));
+ $this->assertEquals('bar', $mapper->find('foo', 'resources'));
+ $this->assertEquals('bar', $mapper->find('bar', 'resources'));
}
/**
- * @expectedException LoaderBundle\Exception\RelationMapper\ResourceNotFoundException
+ * @expectedException \LoaderBundle\Exception\RelationMapper\ResourceNotFoundException
*/
public function testLoadNonExistingResource()
{
@@ -30,12 +28,23 @@ class RelationMapperTest extends TestCase
}
/**
- * @expectedException LoaderBundle\Exception\RelationMapper\InvalidResourceException
+ * @expectedException \LoaderBundle\Exception\RelationMapper\InvalidResourceException
*/
public function testLoadInvalidResource()
{
$mapper = new RelationMapper(new ArrayCache());
- $resource = __DIR__ . '/fixtures/invalid.yml';
+ $resource = __DIR__.'/fixtures/invalid.yml';
$mapper->loadResource($resource, 'resources');
}
-}
\ No newline at end of file
+
+ /**
+ * @expectedException \LoaderBundle\Exception\RelationMapper\InvalidDomainException
+ */
+ public function testLoadInvalidDomain()
+ {
+ $mapper = new RelationMapper(new ArrayCache());
+ $mapper->loadResource(__DIR__.'/fixtures/resources.yml', 'resources');
+
+ $mapper->find('foo', 'incorect');
+ }
+}