Merge pull request #3886 from nextcloud/downstream-26995

Chunking NG: Assemble in natural sort order of files
This commit is contained in:
Joas Schilling 2017-03-17 10:05:25 +01:00 committed by GitHub
commit 5a8129f8ef
2 changed files with 13 additions and 1 deletions

View File

@ -67,7 +67,7 @@ class AssemblyStream implements \Icewind\Streams\File {
$nodes = $this->nodes;
// http://stackoverflow.com/a/10985500
@usort($nodes, function(IFile $a, IFile $b) {
return strcmp($a->getName(), $b->getName());
return strnatcmp($a->getName(), $b->getName());
});
$this->nodes = $nodes;

View File

@ -52,6 +52,15 @@ class AssemblyStreamTest extends \Test\TestCase {
function providesNodes() {
$data8k = $this->makeData(8192);
$dataLess8k = $this->makeData(8191);
$tonofnodes = [];
$tonofdata = "";
for ($i = 0; $i < 101; $i++) {
$thisdata = rand(0,100); // variable length and content
$tonofdata .= $thisdata;
array_push($tonofnodes, $this->buildNode($i,$thisdata));
}
return[
'one node zero bytes' => [
'', [
@ -90,6 +99,9 @@ class AssemblyStreamTest extends \Test\TestCase {
$this->buildNode('1', $data8k . 'X'),
$this->buildNode('0', $data8k)
]],
'a ton of nodes' => [
$tonofdata, $tonofnodes
]
];
}