Forráskód Böngészése

[php] Implement haxe.zip.Uncompress.execute() (#6854)

* [php] Implement haxe.zip.Uncompress.execute()

* [php] Add unit tests for execute in haxe.zip.Compress/Uncompress
Alfredo Beaumont 7 éve
szülő
commit
42fc22254a

+ 9 - 2
std/php/_std/haxe/zip/Uncompress.hx

@@ -24,11 +24,18 @@ package haxe.zip;
 class Uncompress {
 
 	public function new( ?windowBits : Int ) {
-		throw "Not implemented for this platform";
 	}
 
 	public function execute( src : haxe.io.Bytes, srcPos : Int, dst : haxe.io.Bytes, dstPos : Int ) : { done : Bool, read : Int, write : Int } {
-		return null;
+		var input = src.sub( srcPos, src.length - srcPos );
+		var data = run( input );
+		dst.blit( dstPos, data, 0, data.length );
+
+		return {
+			done: true,
+			read: input.length,
+			write: data.length
+		};
 	}
 
 	public function setFlushMode( f : FlushMode ) {

+ 19 - 0
tests/unit/src/unitstd/haxe/zip/Compress.unit.hx

@@ -29,5 +29,24 @@ c.get(4) == 0;
 c.get(5) == 0;
 c.get(6) == 0;
 c.get(7) == 1;
+#end
+
+#if php
+var b = haxe.io.Bytes.alloc(0);
+var c = haxe.io.Bytes.alloc(8);
+var d = new haxe.zip.Compress(9);
+var r = d.execute(b, 0, c, 0);
 
+r.done == true;
+r.read == 0;
+r.write == 8;
+c.length == 8;
+c.get(0) == 120;
+c.get(1) == 218;
+c.get(2) == 3;
+c.get(3) == 0;
+c.get(4) == 0;
+c.get(5) == 0;
+c.get(6) == 0;
+c.get(7) == 1;
 #end

+ 30 - 0
tests/unit/src/unitstd/haxe/zip/Uncompress.unit.hx

@@ -0,0 +1,30 @@
+// not supported in js/python/cs yet
+#if (cpp || php || java || neko || flash)
+var d = [120, 218, 43, 73, 45, 46, 1, 0, 4, 93, 1, 193];
+var b = haxe.io.Bytes.alloc(d.length);
+for (i in 0...d.length) b.set(i, d[i]);
+var c = haxe.zip.Uncompress.run(b);
+
+c.toString() == "test";
+
+var d = [120, 218, 3, 0, 0, 0, 0, 1];
+var b = haxe.io.Bytes.alloc(d.length);
+for (i in 0...d.length) b.set(i, d[i]);
+var c = haxe.zip.Uncompress.run(b);
+
+c.length == 0;
+#end
+
+#if php
+var d = [120, 218, 43, 73, 45, 46, 1, 0, 4, 93, 1, 193];
+var b = haxe.io.Bytes.alloc(d.length);
+for (i in 0...d.length) b.set(i, d[i]);
+var c = haxe.io.Bytes.alloc(4);
+var d = new haxe.zip.Uncompress();
+var r = d.execute(b, 0, c, 0);
+
+r.done == true;
+r.read == 12;
+r.write == 4;
+c.toString() == "test";
+#end