public void Null_Value_Test()
        {
            var value = ValueFactory.CreateNullValue();

            Assert.True(value.DataType == DataType.GenericValue);
            Assert.True(value.AsString() == "");

            Assert.Throws <RuntimeException>(() => value.AsNumber());
            Assert.Throws <RuntimeException>(() => value.AsBoolean());
            Assert.Throws <RuntimeException>(() => value.AsObject());
            Assert.Throws <RuntimeException>(() => value.AsDate());
        }
        public bool ValueIsFilled(IValue inValue)
        {
            var value = inValue?.GetRawValue();

            if (value == null)
            {
                return(false);
            }
            if (value.DataType == DataType.Undefined)
            {
                return(false);
            }
            else if (value.DataType == DataType.Boolean)
            {
                return(true);
            }
            else if (value.DataType == DataType.String)
            {
                return(!String.IsNullOrWhiteSpace(value.AsString()));
            }
            else if (value.DataType == DataType.Number)
            {
                return(value.AsNumber() != 0);
            }
            else if (value.DataType == DataType.Date)
            {
                var emptyDate = new DateTime(1, 1, 1, 0, 0, 0);
                return(value.AsDate() != emptyDate);
            }
            else if (value is COMWrapperContext)
            {
                return(true);
            }
            else if (value is ICollectionContext)
            {
                var col = value as ICollectionContext;
                return(col.Count() != 0);
            }
            else if (ValueFactory.CreateNullValue().Equals(value))
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }