Пример #1
0
        public override bool Equals(object obj)
        {
            if (obj is Instant)
            {
                var other      = (Instant)obj;
                var otherValue = !Object.ReferenceEquals(other, null) ? other.Value : null;

                if (Value == null)
                {
                    return(otherValue == null);
                }
                if (otherValue == null)
                {
                    return(false);
                }

                if (this.Value == otherValue)
                {
                    return(true);                          // Default reference/string comparison works in most cases
                }
                var left  = PartialDateTime.FromDateTime(Value.Value);
                var right = PartialDateTime.FromDateTime(otherValue.Value);

                return(left == right);
            }
            else
            {
                return(false);
            }
        }
Пример #2
0
        public void DateTimeConstructor()
        {
            PartialDateTime.Parse("2012-03");
            PartialDateTime.Parse("2012-03-04");
            PartialDateTime.Parse("2012-03-04T12:34:34+02:00");
            PartialDateTime.Parse("2012-03-04T12:34:34Z");

            PartialDateTime pd;

            Assert.True(PartialDateTime.TryParse("2012-03", out pd));
            Assert.Equal(pd, PartialDateTime.Parse("2012-03"));
            Assert.Equal("2012-03", pd.ToString());

            Assert.False(PartialDateTime.TryParse("2012-03T12:34", out pd));
            Assert.False(PartialDateTime.TryParse("20120304", out pd));
            Assert.True(PartialDateTime.TryParse("2012-03-04T12:04:45", out pd));     //FHIR does not allow this, ISO8601 does.
            Assert.True(PartialDateTime.TryParse("2012-03-04T12:04:45Z", out pd));
            Assert.False(PartialDateTime.TryParse("T12:04:45Z", out pd));
            Assert.False(PartialDateTime.TryParse("12:04:45Z", out pd));

            Assert.True(PartialDateTime.Parse("2012-03-04") > PartialDateTime.Parse("2012-03-01"));

            Assert.Equal(PartialDateTime.Today().ToString(), PartialDateTime.FromDateTime(DateTime.Today).ToString().Substring(0, 10));
            Assert.Equal(PartialDateTime.Now().ToString().Substring(0, 19), PartialDateTime.FromDateTime(DateTimeOffset.Now).ToString().Substring(0, 19));
        }
Пример #3
0
 public Hl7.FhirPath.PartialDateTime?ToPartialDateTime()
 {
     if (Value != null)
     {
         return(PartialDateTime.FromDateTime(Value.Value));
     }
     else
     {
         return(null);
     }
 }
Пример #4
0
        /// <summary>
        /// Tries to converts a primitive .NET value to a primitive FHIR-supported primitive value.
        /// </summary>
        /// <param name="value"></param>
        /// <param name="primitiveValue">A primitive value that is directly supported in FHIR and the .Value attribute of ITypedElement.</param>
        /// <returns>Whether the conversion succeeded.</returns>
        public static bool TryConvertToPrimitiveValue(object value, out object primitiveValue)
        {
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }

            if (value is Boolean)
            {
                primitiveValue = value;
            }
            else if (value is Int32 || value is Int16 || value is UInt16 || value is UInt32 || value is Int64 || value is UInt64)
            {
                primitiveValue = Convert.ToInt64(value);
            }
            else if (value is PartialTime)
            {
                primitiveValue = value;
            }
            else if (value is DateTimeOffset)
            {
                primitiveValue = PartialDateTime.FromDateTime((DateTimeOffset)value);
            }
            else if (value is PartialDateTime)
            {
                primitiveValue = value;
            }
            else if (value is float || value is double || value is Decimal)
            {
                primitiveValue = Convert.ToDecimal(value);
            }
            else if (value is String)
            {
                primitiveValue = value;
            }
            else if (value is char)
            {
                primitiveValue = new String((char)value, 1);
            }
            else if (value is Uri)
            {
                primitiveValue = ((Uri)value).OriginalString;
            }
            else
            {
                primitiveValue = null;
            }

            return(primitiveValue != null);
        }
Пример #5
0
        public static bool operator >=(Instant a, Instant b)
        {
            var aValue = !Object.ReferenceEquals(a, null) ? a.Value : null;
            var bValue = !Object.ReferenceEquals(b, null) ? b.Value : null;

            if (aValue == null)
            {
                return(bValue == null);
            }
            if (bValue == null)
            {
                return(false);
            }

            return(PartialDateTime.FromDateTime(a.Value.Value) >= PartialDateTime.FromDateTime(b.Value.Value));
        }
Пример #6
0
        public void TestExpressionTodayFunction()
        {
            // Check that date comes in
            Assert.Equal(PartialDateTime.Today(), fixture.TestInput.Scalar("today()"));

            // Check greater than
            fixture.IsTrue("today() < @" + PartialDateTime.FromDateTime(DateTime.Today.AddDays(1)));

            // Check less than
            fixture.IsTrue("today() > @" + PartialDateTime.FromDateTime(DateTime.Today.AddDays(-1)));

            // Check ==
            fixture.IsTrue("today() = @" + PartialDateTime.Today());

            fixture.IsTrue("now() > @" + PartialDateTime.Today());
            fixture.IsTrue("now() >= @" + PartialDateTime.Now());
        }
Пример #7
0
        public void TestExpressionTodayFunction()
        {
            // Check that date comes in
            Assert.Equal(PartialDateTime.Today(), fixture.TestInput.Scalar("today()"));

            // Check greater than
            fixture.IsTrue("today() < @" + PartialDateTime.FromDateTime(DateTimeOffset.UtcNow.AddDays(1)));

            // Check less than
            fixture.IsTrue("today() > @" + PartialDateTime.FromDateTime(DateTimeOffset.UtcNow.AddDays(-1)));

            // Check ==
            fixture.IsTrue("today() = @" + PartialDateTime.Today());

            // This unit-test will fail if you are working between midnight
            // and start-of-day in GMT:
            // e.g. 2018-08-10T01:00T+02:00 > 2018-08-10 will fail, which is then
            // test on the next line
            //fixture.IsTrue("now() > @" + PartialDateTime.Today());
            fixture.IsTrue("now() >= @" + PartialDateTime.Now());
        }