protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
        {
            serializer.WriteHeader <ITimestampedData>(writer, naming);

            serializer.WriteHeader <EyeData>(writer, naming, "Left");
            serializer.WriteHeader <EyeData>(writer, naming, "Right");
        }
Example #2
0
 protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
 {
     writer.WriteField(naming.Get(nameof(SamplesCount.Filter)));
     writer.WriteField(naming.Get(nameof(SamplesCount.InputSamples)));
     writer.WriteField(naming.Get(nameof(SamplesCount.OutputSamples)));
     writer.WriteField(naming.Get(nameof(SamplesCount.Runtime)));
 }
Example #3
0
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref ValidationPoint result)
        {
            // Validation,Point,X,Y,StartTime,EndTime
            int validation;
            int point;

            Point2 position;

            DateTimeOffset startTime;
            DateTimeOffset endTime;

            if (
                reader.TryGetField <int>(naming.Get(nameof(ValidationPoint.Validation)), out validation) &&
                reader.TryGetField <int>(naming.Get(nameof(ValidationPoint.Point)), out point)

                && TryGetMember <Point2>(reader, serializer, naming, out position)

                && reader.TryGetField <DateTimeOffset>(naming.Get(nameof(ValidationPoint.StartTime)), out startTime) &&
                reader.TryGetField <DateTimeOffset>(naming.Get(nameof(ValidationPoint.EndTime)), out endTime)
                )
            {
                result = new ValidationPoint(validation, point, position, startTime, endTime);

                return(true);
            }

            return(false);
        }
Example #4
0
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref EyeSample result)
        {
            Point2 gazePoint2D;
            Point3 gazePoint3D;
            Point3 eyePosition3D;

            double pupilDiameter;

            if (
                TryGetMember <Point2>(reader, serializer, naming, nameof(EyeData.GazePoint2D), out gazePoint2D) &&
                TryGetMember <Point3>(reader, serializer, naming, nameof(EyeData.GazePoint3D), out gazePoint3D) &&
                TryGetMember <Point3>(reader, serializer, naming, nameof(EyeData.EyePosition3D), out eyePosition3D)

                && reader.TryGetField <double>(naming.Get(nameof(EyeData.PupilDiameter)), out pupilDiameter)
                )
            {
                result = new EyeSample
                         (
                    gazePoint2D,
                    gazePoint3D,
                    eyePosition3D,
                    pupilDiameter
                         );

                return(true);
            }

            return(false);
        }
        protected override void Write(GazeData data, CsvWriter writer, CsvSerializerContext serializer)
        {
            serializer.Serialize <ITimestampedData>(writer, data);

            serializer.Serialize <EyeData>(writer, data.LeftEye);
            serializer.Serialize <EyeData>(writer, data.RightEye);
        }
Example #6
0
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref EyeMovement result)
        {
            ITimestampedData timestampedData;

            EyeMovementType movementType;
            double          durationMilliseconds;

            EyeSample averageSample;

            if (
                TryGetMember <ITimestampedData>(reader, serializer, naming, out timestampedData)

                && reader.TryGetField <EyeMovementType>(naming.Get(nameof(EyeMovement.MovementType)), out movementType) &&
                reader.TryGetField <double>(naming.Get(nameof(EyeMovement.Duration)), out durationMilliseconds)

                && TryGetMember <EyeSample>(reader, serializer, naming, "Average", out averageSample)
                )
            {
                long durationTicks = (long)(durationMilliseconds * 1000 * 10);

                result = new EyeMovement
                         (
                    movementType,
                    averageSample,
                    timestampedData.Timestamp,
                    timestampedData.Timestamp.AddTicks(durationTicks)
                         );

                return(true);
            }

            return(false);
        }
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref EyeValidationPointResult result)
        {
            double?accuracy;
            double?precisionSD;
            double?precisionRMS;
            double validRatio;
            double?distance;
            double?pupilDiameter;

            if (
                reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.Accuracy)), out accuracy) &&
                reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.PrecisionSD)), out precisionSD) &&
                reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.PrecisionRMS)), out precisionRMS) &&
                reader.TryGetField <double>(naming.Get(nameof(EyeValidationPointResult.ValidRatio)), out validRatio) &&
                reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.Distance)), out distance) &&
                reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.PupilDiameter)), out pupilDiameter)
                )
            {
                result = new EyeValidationPointResult
                         (
                    accuracy,
                    precisionSD,
                    precisionRMS,
                    validRatio,
                    distance,
                    pupilDiameter
                         );
                return(true);
            }

            return(false);
        }
Example #8
0
 protected override void Write(SamplesCount data, CsvWriter writer, CsvSerializerContext serializer)
 {
     writer.WriteField(data.Filter);
     writer.WriteField(data.InputSamples);
     writer.WriteField(data.OutputSamples);
     writer.WriteField(data.Runtime);
 }
Example #9
0
        public void WriteCsv_SingleIntValue_NullRecordOnly_EmptyRecord()
        {
            var serializer = new CsvSerializerContext();
            var converter  = new SingleIntValueCsvConverter();

            serializer.Converters.Add(converter);

            var target = new StringWriter();
            var writer = new CsvWriter(target, serializer.Configuration);

            converter.WriteCsvHeader(writer, typeof(SingleIntValue), serializer, new CsvHeaderNamingContext());
            writer.NextRecord();

            converter.WriteCsv(null, writer, serializer);
            writer.NextRecord();

            writer.Dispose();
            target.Close();

            string[] expected = new string[] {
                "Value",    // header
                "",         // empty record
                ""          // empty line after the last record
            };


            Assert.AreEqual(String.Join(Environment.NewLine, expected), target.ToString());
        }
Example #10
0
        public void ReadCsv_CompositeObject_MissingMember_RecordsWithNullValues()
        {
            var serializer = new CsvSerializerContext()
            {
                ThrowOnFailedDeserialize = false
            };
            var converter = new CompositeObjectCsvConverter();

            serializer.Converters.Add(converter);
            serializer.Converters.Add(new SingleIntValueCsvConverter());
            serializer.Converters.Add(new CompositeValueCsvConverter());

            string[] csv = new string[] {
                "Single,Double",    // header
                "15,52.1",          // first record
                ",-15.2",           // second record
                "0,0",              // third record
                ",",                // fourth null record
                ""                  // empty line after the last record
            };

            List <CompositeObject> result = new List <CompositeObject>();

            using (var source = new StringReader(String.Join(Environment.NewLine, csv)))
                using (var reader = new CsvReader(source, serializer.Configuration))
                {
                    var naming = new CsvHeaderNamingContext();

                    if (reader.Read())
                    {
                        converter.ReadCsvHeader(reader, serializer);
                    }

                    while (reader.Read())
                    {
                        result.Add((CompositeObject)converter.ReadCsv(reader, typeof(CompositeObject), serializer, naming));
                    }
                }

            Assert.AreEqual(4, result.Count);

            Assert.IsNotNull(result[0]);
            Assert.IsNotNull(result[0].Single);
            Assert.AreEqual(15, result[0].Single.Value);
            Assert.IsNull(result[0].Composite);
            Assert.AreEqual(52.1, result[0].Double);

            Assert.IsNotNull(result[1]);
            Assert.IsNull(result[1].Single);
            Assert.IsNull(result[1].Composite);
            Assert.AreEqual(-15.2, result[1].Double);

            Assert.IsNotNull(result[2]);
            Assert.IsNotNull(result[2].Single);
            Assert.AreEqual(0, result[2].Single.Value);
            Assert.IsNull(result[2].Composite);
            Assert.AreEqual(0, result[2].Double);

            Assert.IsNull(result[3]);
        }
Example #11
0
        public void ReadCsv_SingleIntValue_NullRecords()
        {
            var serializer = new CsvSerializerContext();
            var converter  = new SingleIntValueCsvConverter();

            serializer.Converters.Add(converter);

            string[] csv = new string[] {
                "Value",   // header
                "",        // first record
                "",        // second record
                "",        // third record
                ""         // empty line after the last record
            };

            List <SingleIntValue> result = new List <SingleIntValue>();

            using (var source = new StringReader(String.Join(Environment.NewLine, csv)))
                using (var reader = new CsvReader(source, serializer.Configuration))
                {
                    var naming = new CsvHeaderNamingContext();

                    if (reader.Read())
                    {
                        converter.ReadCsvHeader(reader, serializer);
                    }

                    while (reader.Read())
                    {
                        result.Add((SingleIntValue)converter.ReadCsv(reader, typeof(SingleIntValue), serializer, naming));
                    }
                }

            Assert.AreEqual(0, result.Count);
        }
Example #12
0
        protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
        {
            serializer.WriteHeader <Point2>(writer, naming, nameof(EyeSample.GazePoint2D));
            serializer.WriteHeader <Point3>(writer, naming, nameof(EyeSample.GazePoint3D));
            serializer.WriteHeader <Point3>(writer, naming, nameof(EyeSample.EyePosition3D));

            writer.WriteField(naming.Get(nameof(EyeSample.PupilDiameter)));
        }
Example #13
0
        protected override void Write(EyeSample data, CsvWriter writer, CsvSerializerContext serializer)
        {
            serializer.Serialize(writer, data.GazePoint2D);
            serializer.Serialize(writer, data.GazePoint3D);
            serializer.Serialize(writer, data.EyePosition3D);

            writer.WriteField(data.PupilDiameter);
        }
Example #14
0
        protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
        {
            serializer.WriteHeader <ITimestampedData>(writer, naming);

            writer.WriteField(naming.Get(nameof(EyeMovement.MovementType)));
            writer.WriteField(naming.Get(nameof(EyeMovement.Duration)));

            serializer.WriteHeader <EyeSample>(writer, naming, "Average");
        }
Example #15
0
        protected override void Write(EyeMovement data, CsvWriter writer, CsvSerializerContext serializer)
        {
            serializer.Serialize <ITimestampedData>(writer, data);

            writer.WriteField(data.MovementType);
            writer.WriteField(data.Duration.TotalMilliseconds);

            serializer.Serialize <EyeSample>(writer, data.AverageSample);
        }
 protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
 {
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.Accuracy)));
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.PrecisionSD)));
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.PrecisionRMS)));
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.ValidRatio)));
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.Distance)));
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.PupilDiameter)));
 }
 protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
 {
     writer.WriteField(naming.Get(nameof(TimestampsDiff.Count)));
     writer.WriteField(naming.Get(nameof(TimestampsDiff.Duration)));
     writer.WriteField(naming.Get(nameof(TimestampsDiff.NewDuration)));
     writer.WriteField(naming.Get(nameof(TimestampsDiff.StartOffset)));
     writer.WriteField(naming.Get(nameof(TimestampsDiff.EndOffset)));
     writer.WriteField(naming.Get(nameof(TimestampsDiff.DurationChange)));
 }
 protected override void Write(TimestampsDiff data, CsvWriter writer, CsvSerializerContext serializer)
 {
     writer.WriteField(data.Count);
     writer.WriteField(data.Duration);
     writer.WriteField(data.NewDuration);
     writer.WriteField(data.StartOffset);
     writer.WriteField(data.EndOffset);
     writer.WriteField(data.DurationChange);
 }
Example #19
0
        protected override void Write(ValidationPoint data, CsvWriter writer, CsvSerializerContext serializer)
        {
            writer.WriteField(data.Validation);
            writer.WriteField(data.Point);

            serializer.Serialize(writer, data.Point);

            writer.WriteField(data.StartTime);
            writer.WriteField(data.EndTime);
        }
Example #20
0
        protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
        {
            writer.WriteField(naming.Get(nameof(ValidationPoint.Validation)));
            writer.WriteField(naming.Get(nameof(ValidationPoint.Point)));

            serializer.WriteHeader <Point2>(writer, naming);

            writer.WriteField(naming.Get(nameof(ValidationPoint.StartTime)));
            writer.WriteField(naming.Get(nameof(ValidationPoint.EndTime)));
        }
        protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
        {
            writer.WriteField(naming.Get(nameof(ValidationPoint.Validation)));
            writer.WriteField(naming.Get(nameof(ValidationPoint.Point)));

            serializer.WriteHeader <Point2>(writer, naming);

            serializer.WriteHeader <EyeValidationPointResult>(writer, naming, nameof(ValidationPointResult.LeftEye));
            serializer.WriteHeader <EyeValidationPointResult>(writer, naming, nameof(ValidationPointResult.RightEye));
        }
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref ITimestampedData result)
        {
            DateTimeOffset timestamp;

            if (reader.TryGetField <DateTimeOffset>(naming.Get(_timestampFieldName), out timestamp))
            {
                result = new TimestampedData(timestamp);
                return(true);
            }

            return(false);
        }
Example #23
0
        protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
        {
            // Validation,Point,X,Y,<GazeData>
            writer.WriteField(naming.Get(nameof(ValidationPoint.Validation)));
            writer.WriteField(naming.Get(nameof(ValidationPoint.Point)));

            serializer.WriteHeader <Point2>(writer, naming);

            writer.WriteField(naming.Get("RelativeTimestamp"));

            serializer.WriteHeader <GazeData>(writer, naming);
        }
Example #24
0
        public void ReadCsv_ClassWithNullableCompositeStruct_ObjectsWithNullValues()
        {
            var serializer = new CsvSerializerContext()
            {
                ThrowOnFailedDeserialize = false
            };
            var converter = new SingleNullableStructValueCsvConverter();

            serializer.Converters.Add(converter);
            serializer.Converters.Add(new CompositeStructCsvConverter());

            string[] csv = new string[] {
                "ValueId,ValueDuration",        // header
                "1,15.24",                      // first record
                ",",                            // second empty record
                "2,-99.24",                     // third record
                ""                              // empty line after the last record
            };

            List <SingleNullableStructValue> result = new List <SingleNullableStructValue>();

            using (var source = new StringReader(String.Join(Environment.NewLine, csv)))
                using (var reader = new CsvReader(source, serializer.Configuration))
                {
                    var naming = new CsvHeaderNamingContext();

                    if (reader.Read())
                    {
                        converter.ReadCsvHeader(reader, serializer);
                    }

                    while (reader.Read())
                    {
                        result.Add((SingleNullableStructValue)converter.ReadCsv(reader, typeof(SingleNullableStructValue), serializer, naming));
                    }
                }

            Assert.AreEqual(3, result.Count);

            Assert.IsNotNull(result[0]);
            Assert.IsTrue(result[0].Value.HasValue);
            Assert.AreEqual(1, result[0].Value.Value.Id);
            Assert.AreEqual(15.24, result[0].Value.Value.Duration);

            Assert.IsNotNull(result[1]);
            Assert.IsFalse(result[1].Value.HasValue);

            Assert.IsNotNull(result[2]);
            Assert.IsTrue(result[2].Value.HasValue);
            Assert.AreEqual(2, result[2].Value.Value.Id);
            Assert.AreEqual(-99.24, result[2].Value.Value.Duration);
        }
Example #25
0
        public void WriteCsv_ClassWithNullableCompositeStruct_RecordsWithNullValues()
        {
            var serializer = new CsvSerializerContext();
            var converter  = new SingleNullableStructValueCsvConverter();

            serializer.Converters.Add(converter);
            serializer.Converters.Add(new CompositeStructCsvConverter());

            var target = new StringWriter();
            var writer = new CsvWriter(target, serializer.Configuration);

            converter.WriteCsvHeader(writer, typeof(SingleNullableStructValue), serializer, new CsvHeaderNamingContext());
            writer.NextRecord();

            converter.WriteCsv(new SingleNullableStructValue()
            {
                Value = new CompositeStruct()
                {
                    Id = 1, Duration = 15.24
                }
            }, writer, serializer);
            writer.NextRecord();

            converter.WriteCsv(new SingleNullableStructValue()
            {
                Value = null
            }, writer, serializer);
            writer.NextRecord();

            converter.WriteCsv(new SingleNullableStructValue()
            {
                Value = new CompositeStruct()
                {
                    Id = 2, Duration = -99.24
                }
            }, writer, serializer);
            writer.NextRecord();

            writer.Dispose();
            target.Close();

            string[] expected = new string[] {
                "ValueId,ValueDuration",        // header
                "1,15.24",                      // first record
                ",",                            // second empty record
                "2,-99.24",                     // third record
                ""                              // empty line after the last record
            };

            Assert.AreEqual(String.Join(Environment.NewLine, expected), target.ToString());
        }
Example #26
0
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref SingleIntValue result)
        {
            int value;

            if (reader.TryGetField <int>(naming.GetDefault(nameof(SingleIntValue.Value)), out value))
            {
                result = new SingleIntValue()
                {
                    Value = value
                };
                return(true);
            }

            return(false);
        }
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref SingleStringValue result)
        {
            string value;

            if (reader.TryGetField <string>(naming.GetDefault("Value"), out value))
            {
                result = new SingleStringValue()
                {
                    Value = value
                };

                return(true);
            }

            return(false);
        }
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref SingleEyeGazeData result)
        {
            ITimestampedData timestampedData;
            EyeData          eyeGazeData;

            if (
                TryGetMember <ITimestampedData>(reader, serializer, naming, out timestampedData) &&
                TryGetMember <EyeData>(reader, serializer, naming, out eyeGazeData)
                )
            {
                result = new SingleEyeGazeData(eyeGazeData, timestampedData.Timestamp);
                return(true);
            }

            return(false);
        }
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref Point2 result)
        {
            double x;
            double y;

            if (
                reader.TryGetField <double>(naming.Get(nameof(Point2.X)), out x) &&
                reader.TryGetField <double>(naming.Get(nameof(Point2.Y)), out y)
                )
            {
                result = new Point2(x, y);
                return(true);
            }

            return(false);
        }
Example #30
0
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref EyeVelocity result)
        {
            double            velocity;
            SingleEyeGazeData eye;

            if (
                reader.TryGetField <double>(naming.Get(nameof(EyeVelocity.Velocity)), out velocity) &&
                TryGetMember <SingleEyeGazeData>(reader, serializer, naming, out eye)
                )
            {
                result = new EyeVelocity(velocity, eye);
                return(true);
            }

            return(false);
        }