/// <summary> /// 安装游戏 /// </summary> private void InstallationApp() { Debug.LogWarning("开始检查安装"); Action <HotUpdateRessMgr.DecompressionOrDownInfo> checkFileed = a => { AsynTask task = new AsynTask(true, () => { HotUpdateRessMgr.Instance.Save(a, true); HotUpdateRessMgr.Instance.RefreshLocalVerInfo(() => { SceneMgr.Instance.QueueEvent(AppConst.CoreDef.INSTALLATIONED); }); }, this.InstallationFailue); task.taskItemFinished = (it) => { DecompressionTask dt = it as DecompressionTask; ABInfo abDown = dt.downLoadInfo; a.localVer.Save(abDown); HotUpdateRessMgr.Instance.Save(a, false); }; Debug.Log("检查完成需要安装的文件个数为:" + a.comparisonInfo.needDecompressionList.Count); foreach (ABInfo ab in a.comparisonInfo.needDecompressionList) { task.AddTask(new DecompressionTask(ab)); } task.OnExecute(); }; HotUpdateRessMgr.Instance.GetDecompressionTaskList(HotUpdateRessMgr.Instance.verInfo, checkFileed); }
public void ShouldCompressAndDecompressTestStreams(string streamName) { using (var original = new MemoryStream()) { using (var testStream = LoadTestStream(streamName)) { testStream.CopyTo(original); } var blockInfo = new Interfaces.BlockInfo { OriginalBlockSize = original.Length }; var compressionTask = new CompressionTask(() => LoadTestStream(streamName), blockInfo); compressionTask.Process(); using (var compressed = new MemoryStream()) { compressionTask.WriteResult(compressed); ReferenceEquals(compressionTask.BlockInfo, blockInfo).Should().BeTrue(); blockInfo.BlockSize.Should().Be(compressed.Length); var decompressionTask = new DecompressionTask(() => new MemoryStream(compressed.GetBuffer(), 0, (int)compressed.Length, false), blockInfo); decompressionTask.Process(); using (var decompressed = new MemoryStream()) { decompressionTask.WriteResult(decompressed); ReferenceEquals(decompressionTask.BlockInfo, blockInfo).Should().BeTrue(); blockInfo.OriginalBlockSize.Should().Be(decompressed.Length); CollectionAssert.AreEqual(original.ToArray(), decompressed.ToArray()); } } } }
public void TestExecuteDecompressionTaskOnWholeFile() { var inputFile = new FileInfo("input.txt.gz"); var outputFile = new FileInfo("output.txt"); File.Delete(outputFile.Name); var inputHolder = new FileChunkHolder(); var outputHolder = new FileChunkHolder(); var compressor = new GZipCompressor(); var task = new DecompressionTask(0, inputHolder, outputHolder, compressor, inputFile.Name, 0, (int)inputFile.Length, outputFile.Name); task.Start(); Assert.AreEqual(0, inputHolder.Count()); Assert.AreEqual(0, outputHolder.Count()); CollectionAssert.AreEqual(compressor.Decompress(File.ReadAllBytes(inputFile.Name)), File.ReadAllBytes(outputFile.Name)); }