Ejemplo n.º 1
0
        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>();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
 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
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
            }
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 13
0
        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>();
        }
Ejemplo n.º 14
0
        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);
            }
        }