Esempio n. 1
0
 public void OneBoolInStruct()
 {
     //simple datagram: {yolo:true}
     var oneBool = DirStructure.OwnTestFileAsBytes("binary/onebool.bindat");
     var reader = new UserBinaryReader(new MemoryStream(oneBool));
     ReaderTestCommon.OneBoolInStruct(reader);
 }
Esempio n. 2
0
        public void ReadTypeAnnotations_AssertUnknownSymbolException()
        {
            byte[] data = DirStructure.OwnTestFileAsBytes("binary/unknown_symbols.bindat");
            UserBinaryReader reader = new UserBinaryReader(new MemoryStream(data));

            ReaderTestCommon.ReadTypeAnnotations_AssertUnknownSymbolException(reader);
        }
Esempio n. 3
0
 public void TrivialStruct()
 {
     //empty struct {}
     var trivial = DirStructure.OwnTestFileAsBytes("binary/trivial.bindat");
     var reader = new UserBinaryReader(new MemoryStream(trivial));
     ReaderTestCommon.TrivialStruct(reader);
 }
Esempio n. 4
0
        public void CascadingSymtab_TestCorrectSymbolDecoding()
        {
            var file     = DirStructure.OwnFile("text/cascading_symtabs.ion");
            var datagram = IonLoader.Default.Load(file);

            Assert.AreEqual(3, datagram.Count);

            //the first value $13 should be unknown text
            Assert.AreEqual(IonType.Symbol, datagram[0].Type);
            var token = ((IonSymbol)datagram[0]).SymbolValue;

            Assert.AreEqual(13, token.Sid);
            Assert.IsNull(token.Text);

            //2nd value $10 should be rock:10
            Assert.AreEqual(IonType.Symbol, datagram[1].Type);
            token = ((IonSymbol)datagram[1]).SymbolValue;
            Assert.AreEqual(10, token.Sid);
            Assert.AreEqual("rock", token.Text);

            //3rd value $10 should be unknown text
            Assert.AreEqual(IonType.Symbol, datagram[0].Type);
            token = ((IonSymbol)datagram[2]).SymbolValue;
            Assert.AreEqual(10, token.Sid);
            Assert.IsNull(token.Text);
        }
Esempio n. 5
0
 public void TwoLayer_TestStepout_Skip()
 {
     const string fileName = "binary/twolayer.bindat";
     var data = DirStructure.OwnTestFileAsBytes(fileName);
     var reader = new UserBinaryReader(new MemoryStream(data));
     ReaderTestCommon.TwoLayer_TestStepoutSkip(reader);
 }
Esempio n. 6
0
        public void Float_zeros()
        {
            var file   = DirStructure.IonTestFile("good/float_zeros.ion");
            var reader = ReaderFromFile(file, InputStyle.FileStream);

            while (reader.MoveNext() != IonType.None)
            {
                Assert.AreEqual(IonType.Float, reader.CurrentType);
                Assert.AreEqual(0d, reader.DoubleValue());

                using (var memoryStream = new MemoryStream())
                {
                    using (var writer = IonBinaryWriterBuilder.Build(memoryStream, forceFloat64: true))
                    {
                        writer.WriteFloat(reader.DoubleValue());
                        writer.Finish();
                    }

                    // Confirm the reader's and writer's byte presentations are the same
                    var readerByte = BitConverter.GetBytes(reader.DoubleValue());
                    Array.Reverse(readerByte);
                    // Get byte reprsentation of value from the stream
                    var writerByte = memoryStream.ToArray().Skip(5).ToArray();

                    Assert.IsTrue(Enumerable.SequenceEqual(writerByte, readerByte));
                }
            }
        }
Esempio n. 7
0
        public void SingleIntList()
        {
            var data   = DirStructure.OwnTestFileAsBytes("binary/single_int_list.bindat");
            var reader = new UserBinaryReader(new MemoryStream(data));

            ReaderTestCommon.SingleIntList(reader);
        }
Esempio n. 8
0
        public void GoodFieldName(string fileName, string fieldName)
        {
            void assertReader(IIonReader reader)
            {
                Assert.AreEqual(IonType.Struct, reader.MoveNext());
                reader.StepIn();
                Assert.AreEqual(IonType.Bool, reader.MoveNext());
                Assert.AreEqual(fieldName, reader.CurrentFieldName);
                Assert.IsFalse(reader.BoolValue());
            }

            void writeFunc(IIonWriter writer)
            {
                writer.StepIn(IonType.Struct);
                writer.SetFieldName(fieldName);
                writer.WriteBool(false);
                writer.StepOut();
                writer.Finish();
            }

            var r = ReaderFromFile(DirStructure.IonTestFile($"good/{fileName}.ion"), InputStyle.FileStream);

            assertReader(r);
            AssertReaderWriter(assertReader, writeFunc);
        }
Esempio n. 9
0
        public void Combined1()
        {
            var data   = DirStructure.OwnTestFileAsBytes("binary/combined1.bindat");
            var reader = new UserBinaryReader(new MemoryStream(data));

            ReaderTestCommon.Combined1(reader);
        }
Esempio n. 10
0
        public void Struct_OneBlob()
        {
            var data   = DirStructure.OwnTestFileAsBytes("binary/struct_oneblob.bindat");
            var reader = new UserBinaryReader(new MemoryStream(data));

            ReaderTestCommon.Struct_OneBlob(reader);
        }
Esempio n. 11
0
        public void Decimal64BitBoundary(InputStyle inputStyle)
        {
            void assertReader(IIonReader reader)
            {
                Assert.AreEqual(IonType.Decimal, reader.MoveNext());
                Assert.AreEqual(18446744073709551615m, reader.DecimalValue().ToDecimal());

                Assert.AreEqual(IonType.Decimal, reader.MoveNext());
                Assert.AreEqual(-18446744073709551615.0m, reader.DecimalValue().ToDecimal());

                Assert.AreEqual(IonType.Decimal, reader.MoveNext());
                Assert.AreEqual(18446744073709551616.0m, reader.DecimalValue().ToDecimal());

                Assert.AreEqual(IonType.Decimal, reader.MoveNext());
                Assert.AreEqual(-18446744073709551616.0m, reader.DecimalValue().ToDecimal());
            }

            void writerFunc(IIonWriter writer)
            {
                writer.WriteDecimal(18446744073709551615m);
                writer.WriteDecimal(-18446744073709551615m);
                writer.WriteDecimal(18446744073709551616m);
                writer.WriteDecimal(-18446744073709551616m);
                writer.Finish();
            }

            var file = DirStructure.IonTestFile("good/decimal64BitBoundary.ion");
            var r    = ReaderFromFile(file, inputStyle);

            assertReader(r);

            AssertReaderWriter(assertReader, writerFunc);
        }
Esempio n. 12
0
        public void Date_2000_11_20_8_20_15_Unknown()
        {
            var        data   = DirStructure.OwnTestFileAsBytes("text/ts_2000_11_20_8_20_15_unknown.ion");
            IIonReader reader = new UserTextReader(new MemoryStream(data));

            ReaderTimestampCommon.Date_2000_11_20_8_20_15_Unknown(reader);
        }
Esempio n. 13
0
        public void FlatIntList()
        {
            //a flat list of ints [123,456,789]
            var flatListInt = DirStructure.OwnTestFileAsBytes("binary/flatlist_int.bindat");

            var reader = new UserBinaryReader(new MemoryStream(flatListInt));
            ReaderTestCommon.FlatIntList(reader);
        }
Esempio n. 14
0
        public void FlatIntList()
        {
            //a flat list of ints [123,456,789]
            var flatListInt = DirStructure.ReadDataFile("text/flatlist_int.ion");

            var reader = new UserTextReader(new MemoryStream(flatListInt));

            ReaderTestCommon.FlatIntList(reader);
        }
Esempio n. 15
0
        public void CommentThenEof(string fileName)
        {
            var fileAsStream = DirStructure.IonTestFileAsStream(fileName);
            var reader       = new UserTextReader(fileAsStream);

            Assert.AreEqual(IonType.Symbol, reader.MoveNext());
            Assert.AreEqual("abc", reader.SymbolValue().Text);
            Assert.AreEqual(IonType.None, reader.MoveNext());
        }
Esempio n. 16
0
        public void SingleSymbol()
        {
            //struct with single symbol
            //{single_symbol:'something'}
            var data = DirStructure.OwnTestFileAsBytes("binary/single_symbol.bindat");

            var reader = new UserBinaryReader(new MemoryStream(data));
            ReaderTestCommon.SingleSymbol(reader);
        }
Esempio n. 17
0
        public void ReadTypeAnnotations_SingleField()
        {
            // a singlefield structure with annotations
            // {withannot:years::months::days::hours::minutes::seconds::18}
            byte[] data = DirStructure.OwnTestFileAsBytes("binary/annot_singlefield.bindat");
            UserBinaryReader reader = new UserBinaryReader(new MemoryStream(data));

            ReaderTestCommon.ReadTypeAnnotations_SingleField(reader);
        }
Esempio n. 18
0
        public void BadFieldName(string fileName)
        {
            var reader = ReaderFromFile(DirStructure.IonTestFile($"bad/{fileName}.ion"), InputStyle.FileStream);

            Assert.AreEqual(IonType.Struct, reader.MoveNext());
            reader.StepIn();
            //should throw here
            reader.MoveNext();
        }
Esempio n. 19
0
        public void HasAnnotationFalse_SingleField()
        {
            // a singlefield structure with annotations
            // {withannot:years::months::days::hours::minutes::seconds::18}
            byte[]         data   = DirStructure.OwnTestFileAsBytes("text/annot_singlefield.ion");
            UserTextReader reader = new UserTextReader(new MemoryStream(data));

            ReaderTestCommon.HasAnnotationFalse_SingleField(reader);
        }
Esempio n. 20
0
        public void FloatWithTerminatingEof()
        {
            var file = DirStructure.IonTestFile("good/floatWithTerminatingEof.ion");
            var r    = ReaderFromFile(file, InputStyle.FileStream);

            Assert.AreEqual(IonType.Float, r.MoveNext());
            ReaderTestCommon.AssertFloatEqual(12.3, r.DoubleValue());

            Assert.AreEqual(IonType.None, r.MoveNext());
        }
Esempio n. 21
0
        public void SingleIntList()
        {
            var data   = DirStructure.OwnTestFileAsBytes("text/single_int_list.ion");
            var reader = new UserTextReader(new MemoryStream(data));

            ReaderTestCommon.SingleIntList(reader);

            reader = new UserTextReader(Encoding.UTF8.GetString(data));
            ReaderTestCommon.SingleIntList(reader);
        }
Esempio n. 22
0
        public void Combined1()
        {
            var data   = DirStructure.OwnTestFileAsBytes("text/combined1.ion");
            var reader = new UserTextReader(new MemoryStream(data));

            ReaderTestCommon.Combined1(reader);

            reader = new UserTextReader(Encoding.UTF8.GetString(data));
            ReaderTestCommon.Combined1(reader);
        }
Esempio n. 23
0
        public void Struct_OneBlob()
        {
            var data   = DirStructure.OwnTestFileAsBytes("text/struct_oneblob.ion");
            var reader = new UserTextReader(new MemoryStream(data));

            ReaderTestCommon.Struct_OneBlob(reader);

            reader = new UserTextReader(Encoding.UTF8.GetString(data));
            ReaderTestCommon.Struct_OneBlob(reader);
        }
Esempio n. 24
0
        public void ReadAnnotations_SingleField()
        {
            // a singlefield structure with annotations
            // {withannot:years::months::days::hours::minutes::seconds::18}
            var annotSingleField = DirStructure.OwnTestFileAsBytes("binary/annot_singlefield.bindat");
            var converter        = new SaveAnnotationsReaderRoutine();
            var reader           = new UserBinaryReader(new MemoryStream(annotSingleField), converter);

            ReaderTestCommon.ReadAnnotations_SingleField(reader, converter);
        }
Esempio n. 25
0
        public void FloatDblMax()
        {
            var file   = DirStructure.IonTestFile("good/floatDblMax.ion");
            var floats = new[]
            {
                1.7976931348623157e308
            };

            AssertReaderWriterPrescision(file, floats);
        }
Esempio n. 26
0
        public void Date_2000_11_20_8_20_15_Unknown()
        {
            var        data   = DirStructure.ReadDataFile("binary/ts_2000_11_20_8_20_15_unknown.bindat");
            IIonReader reader = new UserBinaryReader(new MemoryStream(data));

            Assert.AreEqual(IonType.Timestamp, reader.MoveNext());
            var timeStamp = reader.TimestampValue();
            var datetime  = new DateTime(2000, 11, 20, 8, 20, 15, DateTimeKind.Unspecified);

            Assert.AreEqual(datetime, timeStamp.DateTime);
        }
Esempio n. 27
0
        public void Float_zeros()
        {
            var file   = DirStructure.IonTestFile("good/float_zeros.ion");
            var reader = ReaderFromFile(file, InputStyle.FileStream);

            while (reader.MoveNext() != IonType.None)
            {
                Assert.AreEqual(IonType.Float, reader.CurrentType);
                Assert.AreEqual(0d, reader.DoubleValue());
            }
        }
Esempio n. 28
0
        public void EolComment(string fileName)
        {
            var fileAsStream = DirStructure.IonTestFileAsStream(fileName);
            var reader       = new UserTextReader(fileAsStream);

            Assert.AreEqual(IonType.List, reader.MoveNext());
            reader.StepIn();
            Assert.AreEqual(IonType.None, reader.MoveNext());
            reader.StepOut();
            Assert.AreEqual(IonType.None, reader.MoveNext());
        }
Esempio n. 29
0
        public void OneBoolInStruct()
        {
            //simple datagram: {yolo:true}
            var oneBool = DirStructure.OwnTestFileAsBytes("text/onebool.ion");
            var reader  = new UserTextReader(new MemoryStream(oneBool));

            ReaderTestCommon.OneBoolInStruct(reader);

            reader = new UserTextReader(Encoding.UTF8.GetString(oneBool));
            ReaderTestCommon.OneBoolInStruct(reader);
        }
Esempio n. 30
0
        public void FloatTrappedZeros()
        {
            var file   = DirStructure.IonTestFile("good/float_trapped_zeros.ion");
            var floats = new[]
            {
                1.0000000000000002e0,
                -1.0000000000000002e0
            };

            AssertReaderWriterPrescision(file, floats);
        }