public void DeserializeTest() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.test11.yaml"); var childrenAdded = 0; var tracker = new YamlNodeTracker(); tracker.TrackerEvent += (sender, args) => { if (args.EventType == TrackerEventType.MappingPairAdded || args.EventType == TrackerEventType.SequenceElementAdded || args.EventType == TrackerEventType.StreamDocumentAdded) { childrenAdded++; } }; var fileStream = new StreamReader(file); YamlStream.Load(fileStream, tracker); Assert.AreEqual(9, childrenAdded); }
public void DeepClone() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.test11.yaml"); var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream); var serialized = new StringBuilder(); stream.WriteTo(new StringWriter(serialized), true); var clone = (YamlStream)stream.DeepClone(); ((YamlMapping)((YamlMapping)clone[0].Contents)[2].Value)[new YamlValue("key 2")] = new YamlValue("value 3"); var serialized2 = new StringBuilder(); stream.WriteTo(new StringWriter(serialized2), true); Assert.AreEqual(serialized.ToString(), serialized2.ToString()); var serialized3 = new StringBuilder(); clone.WriteTo(new StringWriter(serialized3), true); Assert.AreNotEqual(serialized.ToString(), serialized3.ToString()); }
public void DisposeTest() { // In .NET versions higher than 3.5, the parents dictionary is replaced with // ConditionalWeakTable, allowing tracked YAML nodes to be freed properly. var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.test4.yaml"); var childrenAdded = 0; var tracker = new YamlNodeTracker(); tracker.TrackerEvent += (sender, args) => { if (args.EventType == TrackerEventType.MappingPairAdded || args.EventType == TrackerEventType.SequenceElementAdded || args.EventType == TrackerEventType.StreamDocumentAdded) { childrenAdded++; } }; var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream, tracker); var weakRef = new System.WeakReference(stream); stream = null; System.GC.Collect(); System.GC.WaitForFullGCComplete(); System.GC.WaitForPendingFinalizers(); Assert.AreEqual(null, stream); Assert.IsFalse(weakRef.IsAlive); }
public void ReadYamlReference() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.YamlReferenceCard.yaml"); var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream); var collectionIndicators = ((YamlMapping)((YamlMapping)stream[0].Contents)["Collection indicators"]); var firstCollectionIndicator = collectionIndicators.Keys.First(); Assert.AreEqual("? ", firstCollectionIndicator.ToObject <string>()); var firstCollectionIndicatorValue = collectionIndicators[firstCollectionIndicator]; collectionIndicators[0] = new KeyValuePair <YamlElement, YamlElement>( new YamlValue(":-)"), firstCollectionIndicatorValue ); var serialized = new StringBuilder(); stream.WriteTo(new StringWriter(serialized)); stream = YamlStream.Load(new StringReader(serialized.ToString())); collectionIndicators = ((YamlMapping)((YamlMapping)stream[0].Contents)["Collection indicators"]); firstCollectionIndicator = collectionIndicators.Keys.First(); Assert.AreEqual(":-)", firstCollectionIndicator.ToObject <string>()); }
public void AllowMissingKeyLookup() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.test11.yaml"); var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream); Assert.IsNull(((YamlMapping)stream[0].Contents)["Bla"]); }
public void ToStringTest() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.test8.yaml"); var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream); Assert.AreEqual("[item 1, item 2, item 3]", stream.ToString()); Assert.AreEqual("[item 1, item 2, item 3]", stream[0].Contents.ToString()); Assert.AreEqual("item 1", ((YamlSequence)stream[0].Contents)[0].ToString()); }
public void MappingStringKey() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.test11.yaml"); var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream); Assert.AreEqual("value 2", ((YamlMapping)((YamlMapping)stream[0].Contents)[2].Value)["key 2"].ToObject <string>()); ((YamlMapping)((YamlMapping)stream[0].Contents)[2].Value)["key 3"] = new YamlValue("value 3"); Assert.AreEqual("key 3", ((YamlMapping)((YamlMapping)stream[0].Contents)[2].Value)[2].Key.ToObject <string>()); Assert.AreEqual("value 3", ((YamlMapping)((YamlMapping)stream[0].Contents)[2].Value)[2].Value.ToObject <string>()); }
public void ScalarStyleTest() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.test6.yaml"); var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream); var value = ((YamlValue)stream[0].Contents); Assert.AreEqual(ScalarStyle.DoubleQuoted, value.Style); value.Style = ScalarStyle.Plain; var serialized = new StringBuilder(); stream.WriteTo(new StringWriter(serialized), true); Assert.IsTrue(serialized.ToString().StartsWith("!!float 3.14")); }
public void TagTest() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.dictionaryExplicit.yaml"); var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream); var dict = stream[0].Contents.ToObject <object>(); Assert.AreEqual(typeof(Dictionary <string, int>), dict.GetType()); Assert.AreEqual("!System.Collections.Generic.Dictionary`2[System.String,System.Int32],mscorlib", stream[0].Contents.Tag); stream[0].Contents.Tag = "!System.Collections.Generic.Dictionary`2[System.String,System.Double],mscorlib"; var dict2 = stream[0].Contents.ToObject <object>(); Assert.AreEqual(typeof(Dictionary <string, double>), dict2.GetType()); }
public void IsCanonicalTest() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("SharpYaml.Tests.files.test6.yaml"); var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream); var value = ((YamlValue)stream[0].Contents); Assert.IsTrue(value.IsCanonical); value.IsPlainImplicit = true; value.Style = ScalarStyle.Plain; var serialized = new StringBuilder(); stream.WriteTo(new StringWriter(serialized), true); Assert.IsTrue(serialized.ToString().StartsWith("3.14")); }
public void ValueSetTest() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.test4.yaml"); var childrenAdded = 0; var tracker = new YamlNodeTracker(); tracker.TrackerEvent += (sender, args) => { if (args.EventType == TrackerEventType.MappingPairAdded || args.EventType == TrackerEventType.SequenceElementAdded || args.EventType == TrackerEventType.StreamDocumentAdded) { childrenAdded++; } }; var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream, tracker); Assert.AreEqual(3, childrenAdded); ScalarValueChanged valueChanged = null; tracker.TrackerEvent += (sender, args) => { if (args is ScalarValueChanged) { valueChanged = (ScalarValueChanged)args; } }; ((YamlValue)stream[0].Contents).Value = "a silly scalar"; Assert.AreEqual("a scalar", valueChanged.OldValue); Assert.AreEqual("a silly scalar", valueChanged.NewValue); Assert.AreEqual(stream[0].Contents, valueChanged.Node); Assert.AreEqual(1, valueChanged.ParentPaths.Count); Assert.AreEqual(new SharpYaml.Model.Path(stream, new[] { new ChildIndex(0, false), new ChildIndex(-1, false) }), valueChanged.ParentPaths[0]); }
public void SubscriberTest() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("SharpYaml.Tests.files.test12.yaml"); var childrenAdded = 0; var tracker = new YamlNodeTracker(); var fileStream = new StreamReader(file); var yaml = YamlStream.Load(fileStream, tracker); var mapping1 = (YamlMapping)((YamlSequence)yaml[0].Contents)[1]; var mapping2 = (YamlMapping)((YamlSequence)yaml[0].Contents)[2]; var handler = new SubscriberHandler(); tracker.Subscribe(handler, null, "A"); tracker.Subscribe(handler, tracker.GetPaths(yaml[0].Contents)[0], "B"); tracker.Subscribe(handler, tracker.GetPaths(mapping1)[0], "C"); mapping1["key 1"] = new YamlValue("Bla"); Assert.AreEqual(1, handler.ACalls); Assert.AreEqual(1, handler.BCalls); Assert.AreEqual(1, handler.CCalls); mapping2[0] = new KeyValuePair <YamlElement, YamlElement>(new YamlValue("K"), new YamlValue("V")); Assert.AreEqual(2, handler.ACalls); Assert.AreEqual(2, handler.BCalls); Assert.AreEqual(1, handler.CCalls); ((YamlSequence)yaml[0].Contents).Add(new YamlValue("5")); Assert.AreEqual(3, handler.ACalls); Assert.AreEqual(3, handler.BCalls); Assert.AreEqual(1, handler.CCalls); }
public void StyleTest() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.test10.yaml"); var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream); var seq = (YamlSequence)(YamlContainer)stream[0].Contents; Assert.AreEqual(YamlStyle.Block, seq.Style); Assert.AreEqual(YamlStyle.Block, ((YamlContainer)seq[2]).Style); Assert.AreEqual(YamlStyle.Block, ((YamlContainer)seq[3]).Style); seq.Style = YamlStyle.Flow; ((YamlContainer)seq[2]).Style = YamlStyle.Flow; ((YamlContainer)seq[3]).Style = YamlStyle.Flow; var serialized = new StringBuilder(); stream.WriteTo(new StringWriter(serialized), true); Assert.AreEqual(1, serialized.ToString().Split(new[] { "\r\n" }, System.StringSplitOptions.RemoveEmptyEntries).Length); }
public void YamlValue() { var file = System.Reflection.Assembly.GetExecutingAssembly() .GetManifestResourceStream("Evergine.Yaml.Tests.files.test6.yaml"); var fileStream = new StreamReader(file); var stream = YamlStream.Load(fileStream); var value = ((YamlValue)stream[0].Contents); Assert.AreEqual(3.14f, value.ToObject <float>()); stream[0].Contents = new YamlValue(double.PositiveInfinity); var serialized = new StringBuilder(); stream.WriteTo(new StringWriter(serialized)); stream = YamlStream.Load(new StringReader(serialized.ToString())); value = ((YamlValue)stream[0].Contents); Assert.AreEqual(float.PositiveInfinity, value.ToObject <float>()); }