|
|
@@ -35,18 +35,78 @@ class AssemblyStreamTest extends \Test\TestCase { |
|
|
|
$this->assertEquals($expected, $content); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @dataProvider providesNodes() |
|
|
|
*/ |
|
|
|
public function testGetContentsFread($expected, $nodes) { |
|
|
|
$stream = \OCA\DAV\Upload\AssemblyStream::wrap($nodes); |
|
|
|
|
|
|
|
$content = ''; |
|
|
|
while (!feof($stream)) { |
|
|
|
$content .= fread($stream, 3); |
|
|
|
} |
|
|
|
|
|
|
|
$this->assertEquals($expected, $content); |
|
|
|
} |
|
|
|
|
|
|
|
function providesNodes() { |
|
|
|
$data8k = $this->makeData(8192); |
|
|
|
$dataLess8k = $this->makeData(8191); |
|
|
|
return[ |
|
|
|
'one node only' => ['1234567890', [ |
|
|
|
'one node zero bytes' => [ |
|
|
|
'', [ |
|
|
|
$this->buildNode('0', '') |
|
|
|
]], |
|
|
|
'one node only' => [ |
|
|
|
'1234567890', [ |
|
|
|
$this->buildNode('0', '1234567890') |
|
|
|
]], |
|
|
|
'two nodes' => ['1234567890', [ |
|
|
|
'one node buffer boundary' => [ |
|
|
|
$data8k, [ |
|
|
|
$this->buildNode('0', $data8k) |
|
|
|
]], |
|
|
|
'two nodes' => [ |
|
|
|
'1234567890', [ |
|
|
|
$this->buildNode('1', '67890'), |
|
|
|
$this->buildNode('0', '12345') |
|
|
|
]] |
|
|
|
]], |
|
|
|
'two nodes end on buffer boundary' => [ |
|
|
|
$data8k . $data8k, [ |
|
|
|
$this->buildNode('1', $data8k), |
|
|
|
$this->buildNode('0', $data8k) |
|
|
|
]], |
|
|
|
'two nodes with one on buffer boundary' => [ |
|
|
|
$data8k . $dataLess8k, [ |
|
|
|
$this->buildNode('1', $dataLess8k), |
|
|
|
$this->buildNode('0', $data8k) |
|
|
|
]], |
|
|
|
'two nodes on buffer boundary plus one byte' => [ |
|
|
|
$data8k . 'X' . $data8k, [ |
|
|
|
$this->buildNode('1', $data8k), |
|
|
|
$this->buildNode('0', $data8k . 'X') |
|
|
|
]], |
|
|
|
'two nodes on buffer boundary plus one byte at the end' => [ |
|
|
|
$data8k . $data8k . 'X', [ |
|
|
|
$this->buildNode('1', $data8k . 'X'), |
|
|
|
$this->buildNode('0', $data8k) |
|
|
|
]], |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
|
private function makeData($count) { |
|
|
|
$data = ''; |
|
|
|
$base = '1234567890'; |
|
|
|
$j = 0; |
|
|
|
for ($i = 0; $i < $count; $i++) { |
|
|
|
$data .= $base[$j]; |
|
|
|
$j++; |
|
|
|
if (!isset($base[$j])) { |
|
|
|
$j = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
return $data; |
|
|
|
} |
|
|
|
|
|
|
|
private function buildNode($name, $data) { |
|
|
|
$node = $this->getMockBuilder('\Sabre\DAV\File') |
|
|
|
->setMethods(['getName', 'get', 'getSize']) |