protected override void MapFile(BrotliFileGroup group, BrotliFile.Compressed file, FileStream output) { using var stream = new StreamWriter(output, Encoding.UTF8) { NewLine = "\n" }; file.WriteMarkers(stream, includeBitCounts, markerLevel); }
protected override IEnumerable <object[]> GenerateRows(BrotliFileGroup group, BrotliFile.Compressed file) { var quality = file.Identifier; var reader = file.Reader; MetaBlock?metaBlock; int index = 0; while ((metaBlock = reader.NextMetaBlock()) != null) { if (metaBlock is MetaBlock.Compressed c) { var rowStart = new List <object> { file.Name, quality, index }; foreach (var category in Categories.LID) { var rowFinal = new List <object>(rowStart) { category.Id() }; var blockID = 0; rowFinal.Add(blockID); rowFinal.Add(0); rowFinal.Add(c.Header.BlockTypes[category].InitialLength); yield return(rowFinal.ToArray()); foreach (var command in c.Data.BlockSwitchCommands[category]) { rowFinal[^ 3] = ++blockID;
protected override IEnumerable <object[]> GenerateRows(BrotliFileGroup group, BrotliFile.Compressed file) { var quality = file.Identifier; var reader = file.Reader; MetaBlock?metaBlock; int index = 0; while ((metaBlock = reader.NextMetaBlock()) != null) { var row = new List <object> { file.Name, quality, index++, GetMetaBlockType(metaBlock), metaBlock.DataLength.UncompressedBytes }; if (metaBlock is MetaBlock.Compressed c) { ExtractMetadata(row, c.Header, c.Data); } else { while (row.Count < Columns.Length) { row.Add(""); } } yield return(row.ToArray()); } }
protected override IEnumerable <object?[]> OnError(BrotliFileGroup group, BrotliFile.Compressed file, Exception ex) { return(new List <object?[]> { new object?[] { file.Name, file.Identifier, file.SizeBytes, null, null } }); }
protected override IEnumerable <object?[]> GenerateRows(BrotliFileGroup group, BrotliFile.Compressed file) { int?originalBytes = file.SizeBytes; var rebuildBytes = group.CountBytesAndValidate(file.Transforming(new TransformRebuild())); return(new List <object?[]> { new object?[] { file.Name, file.Identifier, originalBytes, rebuildBytes, rebuildBytes - originalBytes } // subtraction propagates null }); }
protected override void MapFile(BrotliFileGroup group, BrotliFile.Compressed file, FileStream output) { output.Write(group.SerializeAndValidate(file.Transforming(transformer !)).ToByteArray()); }
protected override IEnumerable <object?[]> OnError(BrotliFileGroup group, BrotliFile.Compressed file, Exception ex) { return(new List <object?[]> { new object?[] { file.Name, file.Identifier, ex is MismatchedOutputBytesException ? "Mismatch" : "Error" } }); }
protected override IEnumerable <object?[]> GenerateRows(BrotliFileGroup group, BrotliFile.Compressed file) { var original = group.Uncompressed.Contents; var reader = file.Reader; var output = new BrotliOutputStored(); reader.AddOutputCallback(output); while (reader.NextMetaBlock() != null) { } reader.RemoveOutputCallback(output); if (!CollectionHelper.Equal(output.AsBytes, original)) { throw new MismatchedOutputBytesException(); } return(new List <object?[]> { new object?[] { file.Name, file.Identifier, "OK" } }); }
protected override IEnumerable <object?[]> GenerateRows(BrotliFileGroup group, BrotliFile.Compressed file) { var checkingTransformer = new ReferenceChecker(file.Reader, file.Transforming(transformer !)); int?originalBytes = file.SizeBytes; int transformedBytes = group.CountBytesAndValidate(checkingTransformer); if (!checkingTransformer.IsDifferent) { return(new List <object[]>()); } int rebuildBytes = group.CountBytesAndValidate(file.Transforming(new TransformRebuild())); return(new List <object?[]> { new object?[] { file.Name, file.Identifier, originalBytes, rebuildBytes, transformedBytes, transformedBytes - originalBytes, transformedBytes - rebuildBytes } // subtraction propagates null }); }
protected override IEnumerable <object[]> GenerateRows(BrotliFileGroup group, BrotliFile.Compressed file) { var quality = file.Identifier; var reader = file.Reader; MetaBlock?metaBlock; int index = 0; while ((metaBlock = reader.NextMetaBlock()) != null) { if (metaBlock is MetaBlock.Compressed c) { var row = new List <object> { file.Name, quality, index, metaBlock.DataLength.UncompressedBytes }; ExtractMetadata(row, c.Header); yield return(row.ToArray()); } ++index; } }