public void WriteObjectWithAnnotations(int annotationCount)
        {
            using (var stream = new MemoryStream())
            {
                IIonWriter writer;
                using (writer = new ManagedBinaryWriter(BinaryConstants.EmptySymbolTablesArray))
                {
                    writer.StepIn(IonType.Struct);

                    writer.SetFieldName("FieldName");
                    for (var i = 0; i < annotationCount; i++)
                    {
                        writer.AddTypeAnnotation($"annot_{i}");
                    }

                    writer.WriteString("FieldValue");

                    writer.StepOut();
                    writer.Flush(stream);
                }

                var annotReader = new SaveAnnotationsReaderRoutine();
                var reader      = new UserBinaryReader(new MemoryStream(stream.ToArray()), annotReader);
                reader.MoveNext();
                reader.StepIn();
                reader.MoveNext();
                //load the value
                reader.StringValue();
                for (var i = 0; i < annotationCount; i++)
                {
                    Assert.IsTrue(annotReader.Symbols.Contains($"annot_{i}"));
                }
            }
        }
Exemple #2
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);
        }
        public static void ReadAnnotations_SingleField(IIonReader reader, SaveAnnotationsReaderRoutine converter)
        {
            // a singlefield structure with annotations
            // {withannot:years::months::days::hours::minutes::seconds::18}
            var symbols = new[] { "years", "months", "days", "hours", "minutes", "seconds" };

            reader.MoveNext();
            reader.StepIn();
            reader.MoveNext();
            Assert.AreEqual(IonType.Int, reader.CurrentType);
            Assert.AreEqual("withannot", reader.CurrentFieldName);
            Assert.AreEqual(18, reader.IntValue());
            Assert.IsTrue(symbols.SequenceEqual(converter.Symbols));

            foreach (var s in symbols)
            {
                Assert.IsTrue(converter.Symbols.Contains(s));
            }
        }