public void CultureTest() { var config = new YamlConfig(); config.Register(new LegacyTypeConverterFactory()); config.LookupAssemblies.Add(typeof(System.Drawing.PointF).Assembly); config.Culture = new System.Globalization.CultureInfo("da-DK"); var serializer = new Serializer(config); object obj = new System.Drawing.PointF(1.2f, 3.1f); var yaml = serializer.Serialize(obj); Assert.AreEqual( BuildResult( "!System.Drawing.PointF", "X: 1,2", "Y: 3,1" ), yaml ); var restore = serializer.Deserialize(yaml)[0]; Assert.AreEqual(obj, restore); obj = new System.Drawing.Point(1, 3); yaml = serializer.Serialize(obj); Assert.AreEqual( BuildResult( "!System.Drawing.Point 1; 3" ), yaml ); restore = serializer.Deserialize(yaml)[0]; Assert.AreEqual(obj, restore); YamlNode.DefaultConfig.Culture = System.Globalization.CultureInfo.CurrentCulture; }
public YamlConstructorTest() { serializer= new Serializer(); }
public void TagResolver() { var serialiser = new Serializer(); var m = ( new Regex(@"([-+]?)([0-9]+)") ).Match("0123"); Assert.AreEqual(123, serialiser.Deserialize("123")[0]); Assert.AreEqual(123, serializer.Deserialize("12_3")[0]); Assert.AreEqual(-123, serializer.Deserialize("-123")[0]); Assert.AreEqual(-123, serializer.Deserialize("-12_3")[0]); Assert.AreEqual(Convert.ToInt32("123", 8), serializer.Deserialize("0123")[0]); Assert.AreEqual(Convert.ToInt32("123", 8), serializer.Deserialize("012_3")[0]); Assert.AreEqual(-Convert.ToInt32("123", 8), serializer.Deserialize("-0123")[0]); Assert.AreEqual(-Convert.ToInt32("123", 8), serializer.Deserialize("-012_3")[0]); Assert.AreEqual(Convert.ToInt32("123", 8), serializer.Deserialize("0o123")[0]); Assert.AreEqual(Convert.ToInt32("123", 8), serializer.Deserialize("0o12_3")[0]); Assert.AreEqual(-Convert.ToInt32("123", 8), serializer.Deserialize("-0o123")[0]); Assert.AreEqual(-Convert.ToInt32("123", 8), serializer.Deserialize("-0o12_3")[0]); Assert.AreEqual(14, serializer.Deserialize("0b1110")[0]); Assert.AreEqual(14, serializer.Deserialize("0b11_10")[0]); Assert.AreEqual(-14, serializer.Deserialize("-0b1110")[0]); Assert.AreEqual(-14, serializer.Deserialize("-0b1_110")[0]); Assert.AreEqual(0xF110, serializer.Deserialize("0xF110")[0]); Assert.AreEqual(0x11A0, serializer.Deserialize("0x11_A0")[0]); Assert.AreEqual(-0x11A0, serializer.Deserialize("-0x11A0")[0]); Assert.AreEqual(-0x1F10, serializer.Deserialize("-0x1_F10")[0]); Assert.AreEqual(0.1, serializer.Deserialize("0.1")[0]); Assert.AreEqual(.01, serializer.Deserialize(".01")[0]); Assert.AreEqual(0.1e2, serializer.Deserialize("0.1E2")[0]); Assert.AreEqual(.1e2, serializer.Deserialize(".1E2")[0]); Assert.AreEqual(0.1e2, serializer.Deserialize("0.1e2")[0]); Assert.AreEqual(.1e2, serializer.Deserialize(".1e2")[0]); Assert.AreEqual(-0.1e2, serializer.Deserialize("-0.1E2")[0]); Assert.AreEqual(-.1e2, serializer.Deserialize("-.1E2")[0]); Assert.AreEqual(-0.1e2, serializer.Deserialize("-0.1e2")[0]); Assert.AreEqual(-.1e2, serializer.Deserialize("-.1e2")[0]); Assert.AreEqual(0.1e-2, serializer.Deserialize("0.1E-2")[0]); Assert.AreEqual(.1e-2, serializer.Deserialize(".1E-2")[0]); Assert.AreEqual(0.1e-2, serializer.Deserialize("0.1e-2")[0]); Assert.AreEqual(.1e-2, serializer.Deserialize(".1e-2")[0]); Assert.AreEqual(-0.1e-2, serializer.Deserialize("-0.1E-2")[0]); Assert.AreEqual(-.1e-2, serializer.Deserialize("-.1E-2")[0]); Assert.AreEqual(-0.1e-2, serializer.Deserialize("-0.1e-2")[0]); Assert.AreEqual(-.1e-2, serializer.Deserialize("-.1e-2")[0]); Assert.AreEqual(0.1e+2, serializer.Deserialize("0.1E+2")[0]); Assert.AreEqual(.1e+2, serializer.Deserialize(".1E+2")[0]); Assert.AreEqual(0.1e+2, serializer.Deserialize("0.1e+2")[0]); Assert.AreEqual(.1e+2, serializer.Deserialize(".1e+2")[0]); Assert.AreEqual(-0.1e+2, serializer.Deserialize("-0.1E+2")[0]); Assert.AreEqual(-.1e+2, serializer.Deserialize("-.1E+2")[0]); Assert.AreEqual(-0.1e+2, serializer.Deserialize("-0.1e+2")[0]); Assert.AreEqual(-.1e+2, serializer.Deserialize("-.1e+2")[0]); Assert.AreEqual(100.1e-2, serializer.Deserialize("10_0.1E-2")[0]); Assert.AreEqual(10.1e-2, serializer.Deserialize("10_.1E-2")[0]); Assert.AreEqual(100.1e-2, serializer.Deserialize("10_0.1e-2")[0]); Assert.AreEqual(10.1e-2, serializer.Deserialize("10_.1e-2")[0]); Assert.AreEqual(-100.1e-2, serializer.Deserialize("-10_0.1E-2")[0]); Assert.AreEqual(-10.1e-2, serializer.Deserialize("-10_.1E-2")[0]); Assert.AreEqual(-100.1e-2, serializer.Deserialize("-10_0.1e-2")[0]); Assert.AreEqual(-10.1e-2, serializer.Deserialize("-10_.1e-2")[0]); Assert.AreEqual(100.1e-2, serializer.Deserialize("10_0._1E-2")[0]); Assert.AreEqual(10.1e-2, serializer.Deserialize("10_._1E-2")[0]); Assert.AreEqual(100.1e-2, serializer.Deserialize("10_0._1e-2")[0]); Assert.AreEqual(10.1e-2, serializer.Deserialize("10_.1_e-2")[0]); Assert.AreEqual(-100.1e-2, serializer.Deserialize("-10_0.1_E-2")[0]); Assert.AreEqual(-10.1e-2, serializer.Deserialize("-10_.1_E-2")[0]); Assert.AreEqual(-100.1e-2, serializer.Deserialize("-10_0._1e-2")[0]); Assert.AreEqual(-10.1e-2, serializer.Deserialize("-10_._1e-2")[0]); Assert.AreEqual("-012.1", serializer.Deserialize("-012.1")[0]); // not float Assert.IsTrue(double.IsNaN((double)serializer.Deserialize(".nan")[0])); Assert.IsTrue(double.IsNaN((double)serializer.Deserialize(".NaN")[0])); Assert.IsTrue(double.IsNaN((double)serializer.Deserialize(".NAN")[0])); Assert.IsTrue(double.IsPositiveInfinity((double)serializer.Deserialize(".inf")[0])); Assert.IsTrue(double.IsPositiveInfinity((double)serializer.Deserialize(".Inf")[0])); Assert.IsTrue(double.IsPositiveInfinity((double)serializer.Deserialize(".INF")[0])); Assert.IsTrue(double.IsPositiveInfinity((double)serializer.Deserialize("+.inf")[0])); Assert.IsTrue(double.IsPositiveInfinity((double)serializer.Deserialize("+.Inf")[0])); Assert.IsTrue(double.IsPositiveInfinity((double)serializer.Deserialize("+.INF")[0])); Assert.IsTrue(double.IsNegativeInfinity((double)serializer.Deserialize("-.inf")[0])); Assert.IsTrue(double.IsNegativeInfinity((double)serializer.Deserialize("-.Inf")[0])); Assert.IsTrue(double.IsNegativeInfinity((double)serializer.Deserialize("-.INF")[0])); var time = DateTime.Now; var utctime = time.ToUniversalTime(); Assert.AreEqual(time, utctime.ToLocalTime()); Assert.AreEqual(new DateTime(1999, 12, 31, 0, 0, 0), serializer.Deserialize("1999-12-31")[0]); Assert.AreEqual(new DateTime(1999, 12, 31, 12, 00, 00), serializer.Deserialize("1999-12-31 12:00:00")[0]); Assert.AreEqual(new DateTime(1999, 12, 31, 12, 00, 00, 010), serializer.Deserialize("1999-12-31 12:00:00.010")[0]); Assert.AreEqual(new DateTime(1999, 12, 31, 12, 00, 00, 010), serializer.Deserialize("1999-12-31T12:00:00.010")[0]); Assert.AreEqual(new DateTime(1999, 12, 31, 21, 00, 00, 010, DateTimeKind.Utc).ToLocalTime(), serializer.Deserialize("1999-12-31 12:00:00.010-9")[0]); Assert.AreEqual(new DateTime(1999, 12, 31, 12, 00, 00, 010, DateTimeKind.Utc).ToLocalTime(), serializer.Deserialize("1999-12-31 12:00:00.010Z")[0]); Assert.AreEqual(new DateTime(1999, 12, 31, 21, 00, 00, 010, DateTimeKind.Utc).ToLocalTime(), serializer.Deserialize("1999-12-31 12:00:00.010 -9")[0]); Assert.AreEqual(new DateTime(1999, 12, 31, 21, 20, 00, 010, DateTimeKind.Utc).ToLocalTime(), serializer.Deserialize("1999-12-31 12:00:00.010 -9:20")[0]); Assert.AreEqual(new DateTime(1999, 12, 31, 3, 00, 00, 010, DateTimeKind.Utc).ToLocalTime(), serializer.Deserialize("1999-12-31 12:00:00.010 +9")[0]); Assert.AreEqual(new DateTime(1999, 12, 31, 2, 40, 00, 010, DateTimeKind.Utc).ToLocalTime(), serializer.Deserialize("1999-12-31 12:00:00.010 +9:20")[0]); Assert.AreEqual(new DateTime(1999, 12, 30, 23, 00, 00, 010, DateTimeKind.Utc).ToLocalTime(), serializer.Deserialize("1999-12-31 1:00:00.010 +2")[0]); Assert.AreEqual(new DateTime(2000, 1, 1, 1, 00, 00, 000, DateTimeKind.Utc).ToLocalTime(), serializer.Deserialize("1999-12-31 23:00:00 -2")[0]); Assert.AreEqual("1999/12/30 23:00:00", (new DateTime(1999, 12, 30, 23, 00, 00, 010)).ToString("yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture)); YamlScalar node; YamlNode.DefaultConfig.TagResolver.Encode(time, out node); var recovered = DateTime.Parse(node.Value); Assert.IsTrue(time - recovered < new TimeSpan(0,0,0,0,1)); recovered = DateTime.Parse("1999-12-31T00:00:01Z"); recovered = DateTime.Parse("1999-12-31T00:00:01+9"); recovered = DateTime.Parse("1999-12-31T00:00:01+9:00"); recovered = DateTime.Parse("1999-12-31T00:00:01+09"); recovered = DateTime.Parse("1999-12-31T00:00:01 +09"); recovered = DateTime.Parse("1999-12-31T00:00:01.123 +09"); recovered = DateTime.Parse("1999-12-31T00:00:01.123 +3"); Assert.IsTrue(time - (DateTime)serializer.Deserialize(serializer.Serialize(time))[0] < new TimeSpan(0, 0, 0, 0, 1)); }
public void TestOmitRootNodesTag() { var obj = new TestClass(); obj.list.Add(new ChildClass()); var serializer = new Serializer(); var yaml= serializer.Serialize(obj); Assert.AreEqual( BuildResult( "!YamlSerializerTest.TestClass", "list: ", " Capacity: 4", " ICollection.Items: ", " - !YamlSerializerTest.ChildClass", " list: ", " Capacity: 0" ), yaml ); var config = new YamlConfig(); config.OmitTagForRootNode = true; serializer = new Serializer(config); yaml = serializer.Serialize(obj); Assert.AreEqual( BuildResult( "list: ", " Capacity: 4", " ICollection.Items: ", " - !YamlSerializerTest.ChildClass", " list: ", " Capacity: 0" ), yaml ); }
public void TestCustomActivator() { var config = new YamlConfig(); config.Register(new LegacyTypeConverterFactory()); config.LookupAssemblies.Add(typeof(System.Drawing.SolidBrush).Assembly); config.LookupAssemblies.Add(typeof(YamlSerializerTest).Assembly); var serializer = new Serializer(config); var yaml = @"%YAML 1.2 --- !System.Drawing.SolidBrush Color: Red ... "; SolidBrush b = null; try { b = (SolidBrush)serializer.Deserialize(yaml)[0]; } catch ( MissingMethodException ) { // SolidBrush has no default constructor! } config.AddActivator<SolidBrush>(() => new SolidBrush(Color.Black)); serializer = new Serializer(config); // Now the serializer knows how to activate an instance of SolidBrush. b = (SolidBrush)serializer.Deserialize(yaml)[0]; Assert.AreEqual(b.Color, Color.Red); }
public void InitSerializer() { var config = new YamlConfig(); config.Register(new LegacyTypeConverterFactory()); config.LookupAssemblies.Add(typeof(System.Drawing.SolidBrush).Assembly); config.LookupAssemblies.Add(typeof(YamlSerializerTest).Assembly); serializer = new Serializer(config); }