Example #1
0
 public async Task <IHttpActionResult> Post([FromBody] string record)
 {
     string[] entries;
     if (!DelimitedSerializer <Person> .TryParseRecord(record, out entries))
     {
         return(Conflict());
     }
     try
     {
         locker.EnterWriteLock();
         using (TextWriter textWriter = new StreamWriter(filePath, true))
         {
             await textWriter.WriteLineAsync(record);
         }
         return(Ok());
     }
     catch (Exception)
     {
         //log exception in the log file + consider sending email to all interested developers
         //somebody may like rethrow this exception(return it via function parameters) and handle it later + return error in HttpResponse
         //it depends. My preference is to log + send email
         return(InternalServerError());
     }
     finally
     {
         locker.ExitWriteLock();
     }
 }
Example #2
0
        public async Task RecordSet_RoundTrip_Success()
        {
            var delimitedSerializer = new DelimitedSerializer();

            var records = await delimitedSerializer.Deserialize <RecordSet>(_tsvWithHeader);

            var reserialized = await delimitedSerializer.Serialize(records);

            Assert.True(ByteArraysEqual(_tsvWithHeader, reserialized));
        }
Example #3
0
        public async Task EnumerableOfJObject_RoundTrip_Success()
        {
            var delimitedSerializer = new DelimitedSerializer();

            var records = await delimitedSerializer.Deserialize <IEnumerable <JObject> >(_tsvWithHeader);

            var reserialized = await delimitedSerializer.Serialize(records);

            Assert.True(ByteArraysEqual(_tsvWithHeader, reserialized));
        }
Example #4
0
        public async Task ListOfDataClass_RoundTrip_Success()
        {
            var delimitedSerializer = new DelimitedSerializer();

            var records = await delimitedSerializer.Deserialize <IReadOnlyList <TestDataClass> >(_tsvWithHeader);

            var reserialized = await delimitedSerializer.Serialize(records);

            Assert.True(ByteArraysEqual(_tsvWithHeader, reserialized));
        }
Example #5
0
        public async Task EnumerableOfDictionary_RoundTrip_Success()
        {
            var delimitedSerializer = new DelimitedSerializer();

            var records = await delimitedSerializer.Deserialize <IEnumerable <IReadOnlyDictionary <string, string> > >(_tsvWithHeader);

            var reserialized = await delimitedSerializer.Serialize(records);

            Assert.True(ByteArraysEqual(_tsvWithHeader, reserialized));
        }
Example #6
0
 private async Task <IEnumerable <Person> > GetRecordsAsync()
 {
     try
     {
         locker.EnterReadLock();
         using (TextReader textReader = new StreamReader(filePath))
         {
             DelimitedSerializer <Person> serializer = new DelimitedSerializer <Person>();
             return(await serializer.DeserializeAsync(textReader));
         }
     }
     catch (Exception ex)
     {
         //log exception in the log file + consider sending email to all interested developers
         //somebody may like rethrow this exception(return it via function parameters) and handle it later + return error in HttpResponse
         //it depends. My preference is to log + send email
         return(null);
     }
     finally
     {
         locker.ExitReadLock();
     }
 }
        public async Task Serialize_Tsv_IEnumerable_Success()
        {
            var delimitedSerializer = new DelimitedSerializer();

            var records = new[]
        public void DeserializeTest()
        {
            string myTestString = "Ann , JonesComma , Female , 200 , 23/6/1967";
            DelimitedSerializer <Person> deserializer = new DelimitedSerializer <Person>();
            IEnumerable <Person>         result;

            using (TextReader sr = new StringReader(myTestString))//tests comma separators
            {
                result = deserializer.Deserialize(sr);
                Assert.AreEqual(result.Count(), 1);
            }
            myTestString = "Ann JonesSpace Female 200 23/6/1967";//tests space separators
            using (TextReader sr = new StringReader(myTestString))
            {
                result = deserializer.Deserialize(sr);
                Assert.AreEqual(result.Count(), 1);
            }
            myTestString = "Ann | JonesPipe | Female | 200 | 23/6/1967";//tests pipe separators
            using (TextReader sr = new StringReader(myTestString))
            {
                result = deserializer.Deserialize(sr);
                Assert.AreEqual(result.Count(), 1);
            }
            myTestString = "Ann : JonesColon : Female : 200 : 23/6/1967";//tests against invalid separators
            using (TextReader sr = new StringReader(myTestString))
            {
                result = deserializer.Deserialize(sr);
                Assert.AreEqual(result.Count(), 0);
            }
            myTestString = "Ann | JonesComma | Female | 23/6/1967";//tests expression which is missing entry
            using (TextReader sr = new StringReader(myTestString))
            {
                result = deserializer.Deserialize(sr);
                Assert.AreEqual(result.Count(), 0);
            }
            myTestString = "Ann | JonesComma | Female | 200 | Extra entry | 23/6/1967";//tests expression which extra entry
            using (TextReader sr = new StringReader(myTestString))
            {
                result = deserializer.Deserialize(sr);
                Assert.AreEqual(result.Count(), 0);
            }
            myTestString = "Ann JonesComma Female 200 23/6/1967\nAnn JonesSpace Female 200 23/6/1967\nAnn | JonesPipe | Female | 200 | 23/6/1967";
            //tests 3 different separator in one file
            using (TextReader sr = new StringReader(myTestString))
            {
                result = deserializer.Deserialize(sr);
                Assert.AreEqual(result.Count(), 3);
            }
            myTestString = "Ann JonesComma : Female 200 23/6/1967\nAnn JonesSpace Female 200 23/6/1967\nAnn | JonesPipe | Female | 200 | 23/6/1967";
            //tests 3 different separator in one file with one invalid separator
            using (TextReader sr = new StringReader(myTestString))
            {
                result = deserializer.Deserialize(sr);
                Assert.AreEqual(result.Count(), 2);
            }
            myTestString = "Ann JonesSpace Female 200 23/66/1967";//Invalid date format
            using (TextReader sr = new StringReader(myTestString))
            {
                result = deserializer.Deserialize(sr);
                Assert.AreEqual(result, null);
            }
            myTestString = "Ann JonesSpace Female asdd 23/6/1967";//Invalid color format
            using (TextReader sr = new StringReader(myTestString))
            {
                result = deserializer.Deserialize(sr);
                Assert.AreEqual(result, null);
            }
        }