public void TimeSectionValuesRoundTrip() { var ms = new MemoryStream(); var fio = new FileIO(ms); var fw = new FormattedWriter(fio); var wc = new WriteContext(fw); wc.Description = new TeaFileDescription(); wc.Description.ItemDescription = ItemDescription.FromAnalysis <Event <C> >(); Time.Scale = Timescale.FromEpoch(33, 77); wc.Description.Timescale = Time.Scale; ISectionFormatter f = new TimeSectionFormatter(); f.Write(wc); ms.Position = 0; var fr = new FormattedReader(fio); var rc = new ReadContext(fr); rc.Description.Should().Not.Be.Null(); rc.Description.ItemDescription = wc.Description.ItemDescription; f.Read(rc); rc.Description.Timescale.Value.Epoch.Should().Be(33); rc.Description.Timescale.Value.TicksPerDay.Should().Be(77); Executing.This(() => f.Read(rc)).Should().Throw <EndOfStreamException>(); }
public void FirstTimeFieldIsAutomaticallyEventTime() { var ms = new MemoryStream(); var fio = new FileIO(ms); var fw = new FormattedWriter(fio); var wc = new WriteContext(fw); wc.Description = new TeaFileDescription(); wc.Description.ItemDescription = ItemDescription.FromAnalysis <C2>(); wc.Description.Timescale = Time.Scale; ISectionFormatter f = new TimeSectionFormatter(); f.Write(wc); ms.Position = 0; var fr = new FormattedReader(fio); var rc = new ReadContext(fr); rc.Description.Should().Not.Be.Null(); rc.Description.ItemDescription = ItemDescription.FromAnalysis <C2>(); f.Read(rc); var fields = rc.Description.ItemDescription.Fields; fields[0].IsEventTime.Should().Be.True(); fields[1].IsEventTime.Should().Be.False(); }
public void EventTimeAttributeRoundTrip() { Time.Scale = Timescale.Net; var ms = new MemoryStream(); var fio = new FileIO(ms); var fw = new FormattedWriter(fio); var wc = new WriteContext(fw); wc.Description = new TeaFileDescription(); wc.Description.ItemDescription = ItemDescription.FromAnalysis <Event <C> >(); wc.Description.Timescale = Time.Scale; ISectionFormatter f = new TimeSectionFormatter(); f.Write(wc); ms.Position = 0; var fr = new FormattedReader(fio); var rc = new ReadContext(fr); rc.Description.Should().Not.Be.Null(); rc.Description.ItemDescription = wc.Description.ItemDescription; rc.Description.ItemDescription.Fields.ForEach(ff => ff.IsEventTime = ff.IsTime = false); // reset flags f.Read(rc); rc.Description.ItemDescription.Fields.Count(ff => ff.IsTime).Should().Be(1); rc.Description.ItemDescription.Fields.Count(ff => ff.IsEventTime).Should().Be(1); rc.Description.Timescale.Value.Epoch.Should().Be(0); rc.Description.Timescale.Value.TicksPerDay.Should().Be(TimeSpan.TicksPerDay); }
public void TimeSectionRoundTrip() { var ms = new MemoryStream(); var fio = new FileIO(ms); var fw = new FormattedWriter(fio); var wc = new WriteContext(fw); wc.Description = new TeaFileDescription(); wc.Description.ItemDescription = ItemDescription.FromAnalysis <Event <C> >(); wc.Description.Timescale = Time.Scale; ISectionFormatter f = new TimeSectionFormatter(); f.Write(wc); ms.Position = 0; ms.Length.Should().Be(24); // epoch(8) ticksperday(8) fieldcount(4) + timefieldoffset(4) = 24 var fr = new FormattedReader(fio); var rc = new ReadContext(fr); rc.Description.Should().Not.Be.Null(); rc.Description.ItemDescription = wc.Description.ItemDescription; // this makes the test a bit weaker, but we need some item description here f.Read(rc); rc.Description.Should().Not.Be.Null(); rc.Description.Timescale.HasValue.Should().Be.True(); }
private static void WriteUserData(UserdataFileFormat udf) { using (FormattedWriter fw = new FormattedWriter("sites.info")) { fw.Write(udf); } }
public void ItemSectionRoundTrip() { var ms = new MemoryStream(); var fio = new FileIO(ms); var fw = new FormattedWriter(fio); var wc = new WriteContext(fw); wc.Description = new TeaFileDescription(); var writeID = wc.Description.ItemDescription = ItemDescription.FromAnalysis <Event <OHLCV> >(); ISectionFormatter f = new ItemSectionFormatter(); f.Write(wc); ms.Position = 0; var fr = new FormattedReader(fio); var rc = new ReadContext(fr); rc.Description.Should().Not.Be.Null(); f.Read(rc); rc.Description.Should().Not.Be.Null(); var id = rc.Description.ItemDescription; id.ItemTypeName.Should().Be(typeof(Event <OHLCV>).GetLanguageName()); id.ItemSize.Should().Be(wc.Description.ItemDescription.ItemSize); id.Fields.Select(ff => ff.Name).Should().Have.SameValuesAs("Time", "Open", "High", "Low", "Close", "Volume"); id.Fields.Select(ff => ff.Index).Should().Have.SameValuesAs(0, 1, 2, 3, 4, 5); id.Fields.Select(ff => ff.FieldType).Should().Have.SameValuesAs(FieldType.Int64, FieldType.Double, FieldType.Double, FieldType.Double, FieldType.Double); id.Fields.Select(ff => ff.Offset).Should().Have.SameValuesAs(writeID.Fields.Select(ff => ff.Offset)); ms.Position.Should().Be(ms.Length); // very important, all bytes must have been read }
public void NameValueSectionRoundTrip1EntryTest() { var ms = new MemoryStream(); var fio = new FileIO(ms); var fw = new FormattedWriter(fio); var wc = new WriteContext(fw); ISectionFormatter f = new NameValueSectionFormatter(); wc.Description = new TeaFileDescription(); wc.Description.NameValues = new NameValueCollection(); wc.Description.NameValues.Add(new NameValue("someName", 1.23)); f.Write(wc); ms.Position = 0; var fr = new FormattedReader(fio); var rc = new ReadContext(fr); f.Read(rc); rc.Description.Should().Not.Be.Null(); rc.Description.NameValues.Should().Not.Be.Null(); rc.Description.NameValues.Should().Have.Count.EqualTo(1); rc.Description.NameValues.First().Name.Should().Be("someName"); rc.Description.NameValues.First().GetValue <double>().Should().Be(1.23); }
public void NameValueSectionRoundTrip3EntriesTest() { var ms = new MemoryStream(); var fio = new FileIO(ms); var fw = new FormattedWriter(fio); var wc = new WriteContext(fw); ISectionFormatter f = new NameValueSectionFormatter(); wc.Description = new TeaFileDescription(); wc.Description.NameValues = new NameValueCollection(); wc.Description.NameValues.Add(new NameValue("someName", 1.23)); wc.Description.NameValues.Add(new NameValue("someName2", "second value")); wc.Description.NameValues.Add(new NameValue("someName3", 333)); f.Write(wc); ms.Position = 0; var fr = new FormattedReader(fio); var rc = new ReadContext(fr); f.Read(rc); rc.Description.Should().Not.Be.Null(); rc.Description.NameValues.Should().Not.Be.Null(); rc.Description.NameValues.Should().Have.Count.EqualTo(3); rc.Description.NameValues.Select(nv => nv.Name).Should().Have.SameSequenceAs("someName", "someName2", "someName3"); rc.Description.NameValues.Select(nv => nv.GetValue <object>()).Should().Have.SameSequenceAs(1.23, "second value", 333); }
public void Save(string filename) { Dictionary <ILinkable, int> linkable = new Dictionary <ILinkable, int>(); foreach (var o in objects) { linkable[o] = linkable.Count; } GraphFileFormat gff = new GraphFileFormat(); gff.numVertices = linkable.Count; gff.vertices = ArrayUtils.ConvertAll(ArrayUtils.ToArray(linkable.Keys), x => new VertexFormat() { edges = ArrayUtils.ConvertAll(ArrayUtils.ToArray(x.Edges), y => linkable[y.Key]), x = x.TopLeft.X, y = x.TopLeft.Y, numEdges = x.Edges.Count, color = x.MainControl.BackColor.ToArgb() }); using (FormattedWriter fw = new FormattedWriter(filename)) { fw.Write(gff); } }
private void btn_Save_Click(object sender, EventArgs e) { SaveFileDialog sfd = new SaveFileDialog(); sfd.ShowDialog(); sfd.Filter = "Neuron State Files (*.neuron)|*.neuron"; if (sfd.FileName != null) { using (FormattedWriter fw = new FormattedWriter(sfd.FileName)) { ProgramStateFile psf = new ProgramStateFile(); psf.version = 0; psf.nodes = inputs.Concat(hiddens).Concat(outputs).Select(x => new Node() { x = x.MainControl.Location.X, y = x.MainControl.Location.Y, size = x.Data.size, name = new StringData() { Contents = x.Data.name }, type = x.Data.fvt, numlinks = x.Edges.Count, links = x.Edges.Select(edge => new Link() { matrix = new MatrixFormat(edge.Value.Data.weights.CopyToArray()), nodename = new StringData() { Contents = edge.Key.Data.name } }).ToArray() }).ToArray(); psf.numNodes = psf.nodes.Length; psf.configurations = new StringData[data_configurations.Rows.Count]; for (int i = 0; i < psf.configurations.Length; i++) { psf.configurations[i].Contents = data_configurations.Rows[i].Cells[2].Value.ToString(); } psf.numConfigurations = psf.configurations.Length; psf.trainings = new StringData[data_training.Rows.Count]; for (int i = 0; i < psf.trainings.Length; i++) { psf.trainings[i].Contents = data_training.Rows[i].Cells[2].Value.ToString(); } psf.numTrainings = psf.trainings.Length; psf.crossValidations = new StringData[data_crossValidationData.Rows.Count]; for (int i = 0; i < psf.crossValidations.Length; i++) { psf.crossValidations[i].Contents = data_crossValidationData.Rows[i].Cells[2].Value.ToString(); } psf.numCrossValidations = psf.crossValidations.Length; fw.Write(psf); } } }
/// <summary> /// Creates the header's sections from the descriptions found in the context. Computes their positions /// and sets the FirstItemPosition property in the context. /// </summary> internal byte[] CreateSections(WriteContext wc) { var saved = wc.Writer; using (var sectionStream = new MemoryStream()) // see noop-Dispose comment below { var sectionWriter = new FormattedWriter(new FileIO(sectionStream)); int pos = 32; // sections start at byte position 32 foreach (var formatter in this.sectionFormatters) { // payload using (var payloadStream = new MemoryStream()) // actually MemoryStream.Dispose() is a noop here, but for the code analysers pleasure we wrap these usings around { wc.Writer = new FormattedWriter(new FileIO(payloadStream)); formatter.Write(wc); var size = (int)payloadStream.Length; if (size > 0) { // section id sectionWriter.WriteInt32(formatter.Id); pos += 4; // nextSectionOffset sectionWriter.WriteInt32(size); pos += 4; // payload sectionWriter.WriteRaw(payloadStream.ToArray()); pos += size; // no padding or spacing done here wc.SectionCount++; } } } // padding int paddingBytes = (8 - pos % 8); if (paddingBytes == 8) { paddingBytes = 0; } sectionWriter.WriteRaw(new byte[paddingBytes]); wc.ItemAreaStart = pos + paddingBytes; // first item starts padded on 8 byte boundary. wc.Writer = saved; return(sectionStream.ToArray()); } }
public void ContentSectionFormatterRoundTrip() { const string testValue = "Météo pour Paris, France. @€"; var ms = new MemoryStream(); var fio = new FileIO(ms); var fw = new FormattedWriter(fio); var wc = new WriteContext(fw); wc.Description = new TeaFileDescription(); wc.Description.ContentDescription = testValue; ISectionFormatter f = new ContentSectionFormatter(); f.Write(wc); ms.Position = 0; var fr = new FormattedReader(fio); var rc = new ReadContext(fr); f.Read(rc); rc.Description.Should().Not.Be.Null(); rc.Description.ContentDescription.Should().Be(testValue); }
public void TimeSectionRoundTripFieldIsNotInItemDescriptionError() { var ms = new MemoryStream(); var fio = new FileIO(ms); var fw = new FormattedWriter(fio); var wc = new WriteContext(fw); wc.Description = new TeaFileDescription(); wc.Description.ItemDescription = ItemDescription.FromAnalysis <Event <C> >(); wc.Description.Timescale = Time.Scale; ISectionFormatter f = new TimeSectionFormatter(); f.Write(wc); ms.Position = 0; var fr = new FormattedReader(fio); var rc = new ReadContext(fr); rc.Description.Should().Not.Be.Null(); rc.Description.ItemDescription = ItemDescription.FromAnalysis <C2>(); Executing.This(() => f.Read(rc)).Should().Throw <FileFormatException>(); }
public static void SerializeDirToPak(string dir, string pakfile) { string[] allFiles = recursiveGetFiles(dir, ""); List <Dir> dirEntryList = new List <Dir>(); using (FormattedWriter fw = new FormattedWriter(pakfile)) { // Write files foreach (var file in allFiles) { fw.Write(new Signature() { signature = stringFileHeader2 }); File f = new File(); byte[] bytes = System.IO.File.ReadAllBytes(Path.Combine(dir, file)); byte[] compressed = decryptBytesWithTable(ZlibCodecCompress(bytes), 0x3ff, 1, table2); f.compressedSize = (uint)compressed.Length; f.compressionMethod = 8; CRC32 dataCheckSum = new CRC32(); f.crc = dataCheckSum.GetCrc32(new MemoryStream(bytes)); f.data = compressed; f.extractSystem = 0; f.extractVersion = 20; f.extraField = new byte[0]; f.extraFieldLength = 0; f.filename = Encoding.UTF8.GetBytes(file); f.filenameLength = (ushort)f.filename.Length; f.generalPurposeFlagBits = 0; f.lastModDate = 0; f.lastModTime = 0; f.uncompressedSize = (uint)bytes.Length; fw.Write(f); Dir d = new Dir(); d.comment = new byte[0]; d.commentLength = 0; d.compressedSize = f.compressedSize; d.compressType = f.compressionMethod; d.crc = f.crc; d.createSystem = f.extractSystem; d.createVersion = f.extractVersion; d.date = f.lastModDate; d.diskNumberStart = 0; d.externalFileAttributes = 33; d.extractSystem = f.extractSystem; d.extractVersion = f.extractVersion; d.extraField = new byte[0]; d.extraFieldLength = 0; d.filename = f.filename; d.filenameLength = f.filenameLength; d.flagBits = f.generalPurposeFlagBits; d.internalFileAttributes = 0; d.localHeaderOffset = 0; d.time = f.lastModTime; d.uncompressedSize = f.uncompressedSize; dirEntryList.Add(d); } var dirEntryListStartPos = fw.BaseStream.BaseStream.Position; foreach (var d in dirEntryList) { fw.Write(new Signature() { signature = stringCentralDir2 }); fw.Write(d); } var dirEntryListEndPos = fw.BaseStream.BaseStream.Position; End e = new End(); e.byteSizeOfCentralDirectory = (uint)(dirEntryListEndPos - dirEntryListStartPos); e.centralDirRecordsOnDisk = (short)dirEntryList.Count; e.centralDirStartDisk = 0; e.comment = new byte[0]; e.commentLength = 0; e.diskNumber = 0; e.offsetOfStartOfCentralDirectory = (uint)dirEntryListStartPos; e.totalNumOfCentralDirRecords = (short)dirEntryList.Count; fw.Write(new Signature() { signature = stringEndArchive2 }); fw.Write(e); } }