Пример #1
0
        public void ErlDoubleTest()
        {
            var t = new ErlDouble(10.128d);

            Assert.IsTrue(t.Equals(new ErlDouble(10.128d)));
            Assert.AreEqual(1, t.CompareTo(new ErlDouble(-1.1)));
            Assert.AreEqual(t, new ErlDouble(10.128d));
            Assert.AreEqual(0, t.CompareTo(new ErlDouble(10.128d)));
            Assert.IsTrue(10.128d == t);
            Assert.IsTrue(t == 10.128d);
            Assert.AreEqual(10.128d, t.Value);
            Assert.AreEqual(10, t.ValueAsInt);
            Assert.AreEqual(10, t.ValueAsLong);
            Assert.AreEqual(10.128d, t.ValueAsDouble);
            Assert.AreEqual("10.128", t.ToString());
            Assert.AreEqual("1.1", new ErlDouble(1.1).ToString());
            Assert.IsTrue(t.IsScalar);
            Assert.AreEqual(ErlTypeOrder.ErlDouble, t.TypeOrder);

            Assert.IsTrue(t.Matches(new ErlDouble(10.128d)));
            Assert.AreEqual(new ErlVarBind(), t.Match(new ErlDouble(10.128d)));

            Assert.DoesNotThrow(() => { var x = t.ValueAsObject; });
            Assert.AreEqual(10, t.ValueAsInt);
            Assert.AreEqual(10, t.ValueAsLong);
            Assert.AreEqual(10.128d, t.ValueAsDecimal);
            Assert.DoesNotThrow(() => { var x = t.ValueAsDateTime; });
            Assert.DoesNotThrow(() => { var x = t.ValueAsTimeSpan; });
            Assert.AreEqual(10.128d, t.ValueAsDouble);
            Assert.AreEqual("10.128", t.ValueAsString);
            Assert.AreEqual(true, t.ValueAsBool);
            Assert.AreEqual(new DateTime(1970, 1, 1, 0, 0, 0) + new TimeSpan(10 * 10), t.ValueAsDateTime);
            Assert.Throws <ErlIncompatibleTypesException>(() => { var x = t.ValueAsChar; });
            Assert.Throws <ErlIncompatibleTypesException>(() => { var x = t.ValueAsByteArray; });

            IErlObject temp = null;

            Assert.IsFalse(t.Subst(ref temp, new ErlVarBind()));
            Assert.AreEqual(10.128d, t.Visit(0.0, (acc, o) => o.ValueAsDouble));

            double n = t;       // Implicit conversion

            Assert.AreEqual(10.128d, n);
            ErlDouble a = 10.128d; // Implicit conversion

            Assert.AreEqual(10.128d, a.Value);
        }
Пример #2
0
        public void ErlDoubleTest()
        {
            var t = new ErlDouble(10.128d);
              Assert.IsTrue(t.Equals(new ErlDouble(10.128d)));
              Assert.AreEqual(1, t.CompareTo(new ErlDouble(-1.1)));
              Assert.AreEqual(t, new ErlDouble(10.128d));
              Assert.AreEqual(0, t.CompareTo(new ErlDouble(10.128d)));
              Assert.IsTrue(10.128d == t);
              Assert.IsTrue(t == 10.128d);
              Assert.AreEqual(10.128d, t.Value);
              Assert.AreEqual(10, t.ValueAsInt);
              Assert.AreEqual(10, t.ValueAsLong);
              Assert.AreEqual(10.128d, t.ValueAsDouble);
              Assert.AreEqual("10.128", t.ToString());
              Assert.AreEqual("1.1", new ErlDouble(1.1).ToString());
              Assert.IsTrue(t.IsScalar);
              Assert.AreEqual(ErlTypeOrder.ErlDouble, t.TypeOrder);

              Assert.IsTrue(t.Matches(new ErlDouble(10.128d)));
              Assert.AreEqual(new ErlVarBind(), t.Match(new ErlDouble(10.128d)));

              Assert.DoesNotThrow(() => { var x = t.ValueAsObject; });
              Assert.AreEqual(10, t.ValueAsInt);
              Assert.AreEqual(10, t.ValueAsLong);
              Assert.AreEqual(10.128d, t.ValueAsDecimal);
              Assert.DoesNotThrow(() => { var x = t.ValueAsDateTime; });
              Assert.DoesNotThrow(() => { var x = t.ValueAsTimeSpan; });
              Assert.AreEqual(10.128d, t.ValueAsDouble);
              Assert.AreEqual("10.128", t.ValueAsString);
              Assert.AreEqual(true, t.ValueAsBool);
              Assert.AreEqual(new DateTime(1970, 1, 1, 0, 0, 0) + new TimeSpan(10 * 10), t.ValueAsDateTime);
              Assert.Throws<ErlIncompatibleTypesException>(() => { var x = t.ValueAsChar; });
              Assert.Throws<ErlIncompatibleTypesException>(() => { var x = t.ValueAsByteArray; });

              IErlObject temp = null;
              Assert.IsFalse(t.Subst(ref temp, new ErlVarBind()));
              Assert.AreEqual(10.128d, t.Visit(0.0, (acc, o) => o.ValueAsDouble));

              double n = t;             // Implicit conversion
              Assert.AreEqual(10.128d, n);
              ErlDouble a = 10.128d;    // Implicit conversion
              Assert.AreEqual(10.128d, a.Value);
        }