public function testCartesianProduct()
 {
     $a = new FixturePaths();
     static::assertFalse($a->hasPaths());
     $a->addPaths('/root/one/', '/root/two/');
     static::assertTrue($a->hasPaths());
     $b = new FixturePaths();
     static::assertFalse($b->hasPaths());
     $b->addPaths('some/random/path', 'another/random/path', 'one/last/one');
     static::assertTrue($b->hasPaths());
     $product = $a->cartesianProduct($b);
     $result = $product->getPaths();
     $expect = ['/root/one/some/random/path', '/root/two/some/random/path', '/root/one/another/random/path', '/root/two/another/random/path', '/root/one/one/last/one', '/root/two/one/last/one'];
     static::assertTrue($product->hasPaths());
     static::assertEquals($expect, $result);
     static::assertCount(6, $product);
 }