public void TestTSEnumeration() { Variant v = new Variant(Variant.EnumType.TimeSeries); v.Add(new DateTime(2010, 1, 2, 3, 4, 5, 6), new Variant("value1")); v.Add(new DateTime(2010, 1, 3, 3, 4, 5, 6), new Variant("value2")); IEnumerator<VariantItem> en = v.GetEnumerator(); en.Reset(); Assert.IsTrue(en.MoveNext()); Assert.Throws<VariantException>(delegate { string k = en.Current.Key; }); Assert.AreEqual("value1", en.Current.Value.As<string>()); Assert.AreEqual(new DateTime(2010, 1, 2, 3, 4, 5, 6), en.Current.Time); Assert.IsTrue(en.MoveNext()); Assert.Throws<VariantException>(delegate { string k = en.Current.Key; }); Assert.AreEqual("value2", en.Current.Value.As<string>()); Assert.AreEqual(new DateTime(2010, 1, 3, 3, 4, 5, 6), en.Current.Time); Assert.IsFalse(en.MoveNext()); }
public void TestAny() { Variant v1 = new Variant(Variant.EnumType.Any, "1.0"); Assert.AreEqual(v1.Type, Variant.EnumType.Any); Assert.IsTrue(v1.Is(Variant.EnumType.Any)); Assert.AreEqual(1.0, v1.As<double>()); Variant v2 = new Variant(v1); Assert.IsTrue(v1.Equals(v2)); // Enumerating an Any variant with content should throw an exception Assert.Throws<VariantException>(delegate { v1.GetEnumerator(); }); // We should be able to enumerate an Any variant with no content as this is a common occurance when reading untyped XML Variant v3 = new Variant(Variant.EnumType.Any); IEnumerator<VariantItem> enumerator = v3.GetEnumerator(); Assert.IsFalse(enumerator.MoveNext()); Assert.Throws<VariantException>(delegate { VariantItem item = enumerator.Current; }); }
public void TestBagEnumeration() { Variant v = new Variant(Variant.EnumType.Bag); v.Add("key2", new Variant("value2")); v.Add("key1", new Variant("value1")); v.Add("key1", new Variant("value1")); v.Add("key2", new Variant("value2")); IEnumerator<VariantItem> en = v.GetEnumerator(); en.Reset(); Assert.IsTrue(en.MoveNext()); Assert.AreEqual("key2", en.Current.Key); Assert.AreEqual("value2", en.Current.Value.As<string>()); Assert.IsTrue(en.MoveNext()); Assert.AreEqual("key1", en.Current.Key); Assert.AreEqual("value1", en.Current.Value.As<string>()); Assert.IsTrue(en.MoveNext()); Assert.AreEqual("key1", en.Current.Key); Assert.AreEqual("value1", en.Current.Value.As<string>()); Assert.IsTrue(en.MoveNext()); Assert.AreEqual("key2", en.Current.Key); Assert.AreEqual("value2", en.Current.Value.As<string>()); Assert.IsFalse(en.MoveNext()); }
public void TestListEnumeration() { Variant v = new Variant(Variant.EnumType.List); v.Add(new Variant("value1")); v.Add(new Variant(2.0)); IEnumerator<VariantItem> en = v.GetEnumerator(); en.Reset(); Assert.IsTrue(en.MoveNext()); Assert.Throws<VariantException>(delegate { string k = en.Current.Key; }); Assert.Throws<VariantException>(delegate { DateTime t = en.Current.Time; }); Assert.AreEqual("value1", en.Current.Value.As<string>()); Assert.IsTrue(en.MoveNext()); Assert.Throws<VariantException>(delegate { string k = en.Current.Key; }); Assert.Throws<VariantException>(delegate { DateTime t = en.Current.Time; }); Assert.AreEqual(2.0, en.Current.Value.As<double>()); Assert.IsFalse(en.MoveNext()); }