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}")); } } }
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)); } }