示例#1
0
        public void TestConstructors()
        {
            SimpleValue v1 = new SimpleValue();

            Assert.IsNull(v1.Value);
            Assert.IsFalse(v1.IsAttribute);
            Assert.IsTrue(v1.IsMutable);

            SimpleValue v2 = new SimpleValue("test");

            Assert.IsNotNull(v2.Value);
            Assert.IsFalse(v2.IsAttribute);
            Assert.IsTrue(v2.IsMutable);

            SimpleValue v3 = new SimpleValue("test", true);

            Assert.IsNotNull(v3.Value);
            Assert.IsTrue(v3.IsAttribute);
            Assert.IsTrue(v3.IsMutable);

            SimpleValue v4 = new SimpleValue("test", true, true);

            Assert.IsNotNull(v4.Value);
            Assert.IsTrue(v4.IsAttribute);
            Assert.IsFalse(v4.IsMutable);
        }
示例#2
0
        public void TestDefaultValueAccessors()
        {
            SimpleValue sv = new SimpleValue();

            Assert.IsNull(sv.Value);
            Assert.AreEqual(true, sv.GetBoolean(true));
            Assert.AreEqual(5, sv.GetInt(5));
            Assert.AreEqual(long.MaxValue, sv.GetLong(long.MaxValue));
            Assert.AreEqual("test", sv.GetString("test"));
            Assert.AreEqual(double.MaxValue, sv.GetDouble(double.MaxValue));
            Assert.AreEqual(decimal.MinValue, sv.GetDecimal(decimal.MinValue));
            Assert.AreEqual(Binary.NO_BINARY, sv.GetBinary(Binary.NO_BINARY));
            DateTime dt = DateTime.Now;

            Assert.AreEqual(dt, sv.GetDateTime(dt));

            sv.SetBoolean(false);
            Assert.AreNotEqual(true, sv.GetBoolean(true));
            sv.SetInt(100);
            Assert.AreNotEqual(5, sv.GetInt(5));
            sv.SetLong(100L);
            Assert.AreNotEqual((object)long.MaxValue, (object)sv.GetLong(long.MaxValue));
            sv.SetString("testing");
            Assert.AreNotEqual("test", sv.GetString("test"));
            sv.SetDouble(100D);
            Assert.AreNotEqual(double.MaxValue, sv.GetDouble(double.MaxValue));
            sv.SetDecimal(decimal.MinusOne);
            Assert.AreNotEqual(decimal.MinValue, sv.GetDecimal(decimal.MinValue));
            sv.SetBinary(new Binary(new byte[] { 3, 4, 5 }));
            Assert.AreNotEqual(Binary.NO_BINARY, sv.GetBinary(Binary.NO_BINARY));
            sv.SetDateTime(DateTime.Today);
            Assert.AreNotEqual(dt, sv.GetDateTime(dt));
        }
示例#3
0
        public void TestObjectMethods()
        {
            //Equals
            SimpleElement se1 = new SimpleElement("name");
            SimpleElement se2 = new SimpleElement("name", "value");
            SimpleValue   sv  = new SimpleValue("value");

            Assert.IsFalse(se1.Equals(sv));
            Assert.IsFalse(se1.Equals(se2));
            se2.SetString(se1.GetString());
            Assert.IsTrue(se1.Equals(se2));
            se1.AddElement("child1");
            se1.AddElement("child2");
            Assert.IsFalse(se1.Equals(se2));
            se2.AddElement("child1");
            se2.AddElement("child2");
            Assert.IsTrue(se1.Equals(se2));
            se1.AddAttribute("attr1");
            Assert.IsFalse(se1.Equals(se2));
            se2.AddAttribute("attr1");
            Assert.IsTrue(se1.Equals(se2));

            //GetHashCode
            Assert.AreEqual(XmlHelper.HashElement(se1), se1.GetHashCode());

            //Clone
            SimpleElement se1c = (SimpleElement)se1.Clone();

            Assert.AreEqual(se1c, se1);
            Assert.AreNotSame(se1, se1c);
            se1.Comment = "comment";
            Assert.AreNotEqual(se1c, se1);
        }
        /// <summary>
        /// Creates and returns a copy of this SimpleValue.
        /// </summary>
        /// <remarks>
        /// The returned copy is "unlinked" from the parent and mutable.
        /// </remarks>
        /// <returns>
        /// A clone of this instance.
        /// </returns>
        public virtual object Clone()
        {
            SimpleValue that = (SimpleValue)MemberwiseClone();

            that.m_parent    = null;
            that.m_isMutable = true;

            return(that);
        }
示例#5
0
        public void TestValue()
        {
            SimpleValue sv = new SimpleValue("true");

            Assert.AreEqual(true, sv.GetBoolean());
            Assert.AreEqual(true.ToString(), sv.GetString());
            Assert.AreEqual(0, sv.GetInt()); //after this, value is null
            Assert.IsNull(sv.Value);

            sv.SetInt(5);
            Assert.AreEqual(5, sv.GetInt());
            Assert.AreEqual(5L, sv.GetLong());
            Assert.AreEqual(5.0, sv.GetDouble());
            Assert.AreEqual(new decimal(5), sv.GetDecimal());
            Assert.AreEqual(DateTime.MinValue, sv.GetDateTime());
            Assert.IsNull(sv.Value);

            Assert.AreEqual(Binary.NO_BINARY, sv.GetBinary());
        }
示例#6
0
        public void TestWriteValue()
        {
            TextWriter  writer = new StringWriter();
            SimpleValue attr   = new SimpleValue("test", true);

            attr.WriteValue(writer, true);
            Assert.AreEqual("'test'", writer.ToString());

            Binary      bin     = new Binary(new byte[] { 0x1, 0xF });
            SimpleValue attrBin = new SimpleValue(bin, true);

            writer = new StringWriter();
            attrBin.WriteValue(writer, false);
            Assert.AreEqual("AQ8=", writer.ToString());

            SimpleValue content = new SimpleValue("some content with & and\n");

            writer = new StringWriter();
            content.WriteValue(writer, false);
            Assert.AreEqual("<![CDATA[" + content.GetString() + "]]>", writer.ToString());

            content = new SimpleValue(0xF);
            writer  = new StringWriter();
            content.WriteValue(writer, false);
            Assert.AreEqual(0xF.ToString(), writer.ToString());

            byte[] bytes = new byte[100];
            for (byte i = 0; i < 100; i++)
            {
                bytes[i] = i;
            }
            bin     = new Binary(bytes);
            content = new SimpleValue(bin);
            writer  = new StringWriter();
            content.WriteValue(writer, true);
            Assert.IsTrue(writer.ToString().IndexOf("\n") >= 0);
        }
示例#7
0
        public void TestProperties()
        {
            SimpleValue sv = new SimpleValue("value", false, false);

            Assert.IsFalse(sv.IsAttribute);
            Assert.IsTrue(sv.IsContent);
            Assert.IsFalse(sv.IsEmpty);
            Assert.IsNull(sv.Parent);

            sv.SetString(null);
            Assert.IsTrue(sv.IsEmpty);
            sv.SetString("");
            Assert.IsTrue(sv.IsEmpty);
            sv.SetBinary(Binary.NO_BINARY);
            Assert.IsTrue(sv.IsEmpty);

            SimpleElement element = new SimpleElement();

            sv.Parent = element;
            Assert.IsNotNull(sv.Parent);

            Exception e = null;

            try
            {
                sv.Parent = new SimpleElement(); //already set
            }
            catch (Exception ex)
            {
                e = ex;
            }
            Assert.IsNotNull(e);
            Assert.IsInstanceOf(typeof(InvalidOperationException), e);
            e = null;
            try
            {
                sv.Parent = null; //cannot be null
            }
            catch (Exception ex)
            {
                e = ex;
            }
            Assert.IsNotNull(e);
            Assert.IsInstanceOf(typeof(ArgumentException), e);
            e = null;
            IXmlValue immutable = element.GetSafeAttribute("attr");

            Assert.IsNotNull(immutable);
            Assert.IsFalse(immutable.IsMutable);
            try
            {
                immutable.Parent = element;
            }
            catch (Exception ex)
            {
                e = ex;
            }
            Assert.IsNotNull(e);
            Assert.IsInstanceOf(typeof(InvalidOperationException), e);

            sv = new SimpleValue("value", false, false);
            Assert.IsTrue(sv.IsMutable);
            sv.Parent = element.GetSafeElement("test");
            Assert.IsFalse(sv.IsMutable);
        }
示例#8
0
        public void TestObjectMethods()
        {
            bool        v1  = true;
            SimpleValue sv1 = new SimpleValue(v1);
            int         v2  = 5;
            SimpleValue sv2 = new SimpleValue(v2);
            long        v3  = 999L;
            SimpleValue sv3 = new SimpleValue(v3);
            double      v4  = 5.257;
            SimpleValue sv4 = new SimpleValue(v4);
            decimal     v5  = decimal.MinusOne;
            SimpleValue sv5 = new SimpleValue(v5);
            string      v6  = "test";
            SimpleValue sv6 = new SimpleValue(v6);
            Binary      v7  = new Binary(new byte[] { 99, 50, 27 });
            SimpleValue sv7 = new SimpleValue(v7);
            DateTime    v8  = new DateTime(1976, 4, 19);
            SimpleValue sv8 = new SimpleValue(v8);

            //ToString
            Assert.AreEqual(v1.ToString(), sv1.ToString());
            Assert.AreEqual(v2.ToString(), sv2.ToString());
            Assert.AreEqual(v3.ToString(), sv3.ToString());
            Assert.AreEqual(v4.ToString(), sv4.ToString());
            Assert.AreEqual(v5.ToString(), sv5.ToString());
            Assert.AreEqual(v6, sv6.ToString());
            Assert.AreEqual(Convert.ToBase64String(v7.ToByteArray()), sv7.ToString());
            Assert.AreEqual(v8.ToString(), sv8.ToString());

            //Equals
            sv1.SetBoolean(false);
            sv6.SetString("False");
            Assert.IsTrue(sv1.Equals(sv6));
            Assert.IsFalse(sv1.Equals(sv7));
            Assert.IsFalse(sv1.Equals("test"));

            //GetHashCode
            Assert.AreEqual(XmlHelper.HashValue(sv6), sv6.GetHashCode());

            //Clone
            SimpleValue sv1c = (SimpleValue)sv1.Clone();
            SimpleValue sv2c = (SimpleValue)sv2.Clone();
            SimpleValue sv3c = (SimpleValue)sv3.Clone();
            SimpleValue sv4c = (SimpleValue)sv4.Clone();
            SimpleValue sv5c = (SimpleValue)sv5.Clone();
            SimpleValue sv6c = (SimpleValue)sv6.Clone();
            SimpleValue sv7c = (SimpleValue)sv7.Clone();
            SimpleValue sv8c = (SimpleValue)sv8.Clone();

            Assert.AreEqual(sv1c, sv1);
            Assert.AreNotSame(sv1c, sv1);
            Assert.AreEqual(sv2c, sv2);
            Assert.AreNotSame(sv2c, sv2);
            Assert.AreEqual(sv3c, sv3);
            Assert.AreNotSame(sv3c, sv3);
            Assert.AreEqual(sv4c, sv4);
            Assert.AreNotSame(sv4c, sv4);
            Assert.AreEqual(sv5c, sv5);
            Assert.AreNotSame(sv5c, sv5);
            Assert.AreEqual(sv6c, sv6);
            Assert.AreNotSame(sv6c, sv6);
            Assert.AreEqual(sv7c, sv7);
            Assert.AreNotSame(sv7c, sv7);
            Assert.AreEqual(sv8c, sv8);
            Assert.AreNotSame(sv8c, sv8);
            Assert.IsTrue(sv1c.IsMutable);
            Assert.IsNull(sv1c.Parent);

            sv6.SetString("newtest");
            Assert.AreNotEqual(sv6c, sv6);
        }
示例#9
0
        public void TestSerialization()
        {
            ConfigurablePofContext ctx = new ConfigurablePofContext("assembly://Coherence.Tests/Tangosol.Resources/s4hc-test-config.xml");

            Assert.IsNotNull(ctx);

            bool        v1  = true;
            SimpleValue sv1 = new SimpleValue(v1);
            int         v2  = 5;
            SimpleValue sv2 = new SimpleValue(v2);
            long        v3  = 999L;
            SimpleValue sv3 = new SimpleValue(v3);
            double      v4  = 5.257;
            SimpleValue sv4 = new SimpleValue(v4);
            decimal     v5  = decimal.MinusOne;
            SimpleValue sv5 = new SimpleValue(v5);
            string      v6  = "test";
            SimpleValue sv6 = new SimpleValue(v6);
            Binary      v7  = new Binary(new byte[] { 99, 50, 27 });
            SimpleValue sv7 = new SimpleValue(v7);
            DateTime    v8  = new DateTime(1976, 4, 19);
            SimpleValue sv8 = new SimpleValue(v8);

            Stream stream = new MemoryStream();

            ctx.Serialize(new DataWriter(stream), sv1);
            ctx.Serialize(new DataWriter(stream), sv2);
            ctx.Serialize(new DataWriter(stream), sv3);
            ctx.Serialize(new DataWriter(stream), sv4);
            ctx.Serialize(new DataWriter(stream), sv5);
            ctx.Serialize(new DataWriter(stream), sv6);
            ctx.Serialize(new DataWriter(stream), sv7);
            ctx.Serialize(new DataWriter(stream), sv8);

            stream.Position = 0;
            SimpleValue sv1d = (SimpleValue)ctx.Deserialize(new DataReader(stream));

            Assert.AreEqual(sv1, sv1d);

            SimpleValue sv2d = (SimpleValue)ctx.Deserialize(new DataReader(stream));

            Assert.AreEqual(sv2, sv2d);

            SimpleValue sv3d = (SimpleValue)ctx.Deserialize(new DataReader(stream));

            Assert.AreEqual(sv3, sv3d);

            SimpleValue sv4d = (SimpleValue)ctx.Deserialize(new DataReader(stream));

            Assert.AreEqual(sv4, sv4d);

            SimpleValue sv5d = (SimpleValue)ctx.Deserialize(new DataReader(stream));

            Assert.AreEqual(sv5, sv5d);

            SimpleValue sv6d = (SimpleValue)ctx.Deserialize(new DataReader(stream));

            Assert.AreEqual(sv6, sv6d);

            SimpleValue sv7d = (SimpleValue)ctx.Deserialize(new DataReader(stream));

            Assert.AreEqual(sv7, sv7d);

            SimpleValue sv8d = (SimpleValue)ctx.Deserialize(new DataReader(stream));

            Assert.AreEqual(sv8, sv8d);
        }
示例#10
0
        public void TestValueWithException2()
        {
            SimpleValue sv = new SimpleValue("value", true, false);

            sv.SetString(null);
        }
示例#11
0
        public void TestValueWithException1()
        {
            SimpleValue sv = new SimpleValue(null, false, true);

            sv.SetBoolean(true);
        }
        public void TestObjectHelpers()
        {
            Exception e = null;

            //EqualsValue
            SimpleValue sv1 = new SimpleValue("");
            SimpleValue sv2 = new SimpleValue(Binary.NO_BINARY);

            Assert.IsTrue(XmlHelper.EqualsValue(sv1, sv2)); //both are empty
            sv1.SetString("True");
            Assert.IsFalse(XmlHelper.EqualsValue(sv1, sv2));
            sv2.SetBoolean(true);
            Assert.IsTrue(XmlHelper.EqualsValue(sv1, sv2));
            try
            {
                XmlHelper.EqualsValue(null, sv2);
            }
            catch (Exception ex)
            {
                e = ex;
            }
            Assert.IsNotNull(e);
            Assert.IsInstanceOf(typeof(ArgumentException), e);
            sv2.SetString(null);
            try
            {
                XmlHelper.EqualsValue(sv1, sv2);
            }
            catch (Exception ex)
            {
                e = ex;
            }
            Assert.IsNotNull(e);
            Assert.IsInstanceOf(typeof(ArgumentException), e);
            sv2.SetBoolean(true);

            //EqualsElement
            SimpleElement se1 = new SimpleElement();
            SimpleElement se2 = new SimpleElement("name", "value");

            se2.Comment = "comment";
            Assert.IsFalse(XmlHelper.EqualsElement(se1, se2));
            se1.Name = se2.Name;
            Assert.IsFalse(XmlHelper.EqualsElement(se1, se2));
            se1.SetString(se2.GetString());
            Assert.IsFalse(XmlHelper.EqualsElement(se1, se2));
            se1.Comment = se2.Comment;
            Assert.IsTrue(XmlHelper.EqualsElement(se1, se2));
            se1.AddElement("el1");
            Assert.IsFalse(XmlHelper.EqualsElement(se1, se2));
            se2.AddElement("el1");
            Assert.IsTrue(XmlHelper.EqualsElement(se1, se2));
            se1.AddAttribute("attr1");
            Assert.IsFalse(XmlHelper.EqualsElement(se1, se2));
            se2.AddAttribute("attr1");
            Assert.IsTrue(XmlHelper.EqualsElement(se1, se2));
            try
            {
                XmlHelper.EqualsElement(null, se2);
            }
            catch (Exception ex)
            {
                e = ex;
            }
            Assert.IsNotNull(e);
            Assert.IsInstanceOf(typeof(ArgumentException), e);

            //HashValue
            SimpleValue sv = new SimpleValue();

            Assert.IsNull(sv.Value);
            Assert.AreEqual(0, XmlHelper.HashValue(sv));
            sv.SetString("test");
            Assert.AreEqual("test".GetHashCode(), XmlHelper.HashValue(sv));
            sv.SetDecimal(decimal.MinusOne);
            Assert.AreEqual(XmlHelper.Convert(decimal.MinusOne, XmlValueType.String).GetHashCode(),
                            XmlHelper.HashValue(sv));
            Assert.AreEqual(XmlHelper.HashValue(sv1), XmlHelper.HashValue(sv2));

            //HashElement
            Assert.AreEqual(XmlHelper.HashElement(se1), XmlHelper.HashElement(se2));
            IXmlElement el1 = se1.GetElement("el1");

            el1.SetString("new value");
            Assert.AreNotEqual(XmlHelper.HashElement(se1), XmlHelper.HashElement(se2));
        }
示例#13
0
        public void TestAttributes()
        {
            SimpleElement se    = new SimpleElement();
            IDictionary   attrs = se.Attributes;

            Assert.IsNotNull(attrs);
            Assert.AreEqual(attrs.Count, 0);
            Assert.IsFalse(attrs.IsReadOnly);
            Assert.IsFalse(attrs.IsFixedSize);
            Assert.IsNotNull(attrs.SyncRoot);
            Assert.IsFalse(attrs.IsSynchronized);

            SimpleValue sv = new SimpleValue("value");

            Exception e = null;

            try
            {
                attrs.Add(3, sv);
            }
            catch (Exception ex)
            {
                e = ex;
            }
            Assert.IsNotNull(e);
            Assert.IsInstanceOf(typeof(ArgumentException), e);
            Assert.AreEqual(attrs.Count, 0);

            e = null;
            try
            {
                attrs.Add("?key1", sv);
            }
            catch (Exception ex)
            {
                e = ex;
            }
            Assert.IsNotNull(e);
            Assert.IsInstanceOf(typeof(ArgumentException), e);
            Assert.AreEqual(attrs.Count, 0);

            e = null;
            try
            {
                attrs.Add("key1", 3);
            }
            catch (Exception ex)
            {
                e = ex;
            }
            Assert.IsNotNull(e);
            Assert.IsInstanceOf(typeof(ArgumentException), e);
            Assert.AreEqual(attrs.Count, 0);

            Assert.IsNull(sv.Parent);
            Assert.IsFalse(sv.IsAttribute);
            attrs.Add("key1", sv);
            Assert.AreEqual(attrs.Count, 1);
            Assert.IsTrue(attrs.Contains("key1"));
            Assert.AreEqual(attrs.Keys.Count, 1);
            Assert.AreEqual(attrs.Values.Count, 1);

            IXmlValue v = (IXmlValue)attrs["key1"];

            Assert.AreEqual(se, v.Parent);
            Assert.IsTrue(v.IsAttribute);

            SimpleElement se2 = (SimpleElement)se.Clone();

            Assert.IsTrue(se.Attributes.Equals(se2.Attributes));
            se.Attributes.Add("key2", v.Clone());
            se2.Attributes.Add("key2", new SimpleValue(1000, true));
            Assert.IsFalse(se.Attributes.Equals(se2.Attributes));
            se.Attributes.Add("key3", v.Clone());
            Assert.IsFalse(se.Attributes.Equals(se2.Attributes));
            Assert.IsFalse(se.Attributes.Equals(se2));

            Assert.AreEqual(attrs.Count, 3);
            Assert.IsInstanceOf(typeof(ICloneable), attrs);
            ICloneable cloneableAttrs = attrs as ICloneable;

            Assert.IsNotNull(cloneableAttrs);
            IDictionary clones = (IDictionary)cloneableAttrs.Clone();

            Assert.AreEqual(clones.Count, 3);
            Assert.AreEqual(clones, attrs);

            attrs.Clear();
            Assert.AreEqual(attrs.Count, 0);
        }