Пример #1
0
 /// <summary>
 /// Ported from explicit value_t(const string& val, bool literal = false)
 /// </summary>
 public static Value Get(string value, bool literal = false)
 {
     if (literal)
     {
         return(new Value(ValueStorageExtensions.Create(value ?? String.Empty)));
     }
     else
     {
         return(Get(new Amount(value)));
     }
 }
Пример #2
0
 public void PushFront(Value val)
 {
     if (Storage == null)
     {
         Storage = ValueStorageExtensions.Create(new List <Value>());
     }
     if (Storage.Type != ValueTypeEnum.Sequence)
     {
         Storage = ValueStorageExtensions.Create(Storage.AsSequence);
     }
     AsSequence.Insert(0, val);
 }
Пример #3
0
 public void PushBack(Value val)
 {
     if (Storage == null)
     {
         Storage = ValueStorageExtensions.Create(new List <Value>());
     }
     if (Storage.Type != ValueTypeEnum.Sequence)
     {
         Storage = ValueStorageExtensions.Create(Storage.AsSequence);
     }
     AsSequence.Add(val);
 }
Пример #4
0
        public void ValueStorageExtensions_Create_CreatesStorageInstancesByTypes()
        {
            IValueStorage value;

            value = ValueStorageExtensions.Create(true);
            Assert.True(value is BooleanValueStorage);
            Assert.True(value.AsBoolean);

            value = ValueStorageExtensions.Create(new DateTime(2010, 10, 10));
            Assert.True(value is DateTimeValueStorage);
            Assert.Equal(new DateTime(2010, 10, 10), value.AsDateTime);

            value = ValueStorageExtensions.Create((int)100);
            Assert.True(value is IntegerValueStorage);
            Assert.Equal(100, value.AsLong);

            value = ValueStorageExtensions.Create((long)100);
            Assert.True(value is IntegerValueStorage);
            Assert.Equal(100, value.AsLong);

            Amount amount = new Amount(200);

            value = ValueStorageExtensions.Create(amount);
            Assert.True(value is AmountValueStorage);
            Assert.Equal(amount, value.AsAmount);

            Balance balance = new Balance(amount);

            value = ValueStorageExtensions.Create(balance);
            Assert.True(value is BalanceValueStorage);
            Assert.Equal(balance, value.AsBalance);

            string s = "test-string";

            value = ValueStorageExtensions.Create(s);
            Assert.True(value is StringValueStorage);
            Assert.Equal(s, value.AsString);

            Mask regex = new Mask(".");

            value = ValueStorageExtensions.Create(regex);
            Assert.True(value is MaskValueStorage);
            Assert.Equal(regex, value.AsMask);

            IList <Value> values = new List <Value>();

            value = ValueStorageExtensions.Create(values);
            Assert.True(value is SequenceValueStorage);
            Assert.Equal(values.Count, value.AsSequence.Count);
        }
Пример #5
0
        public static Value Get <T>(T value)
        {
            if (value == null)
            {
                return(new Value());
            }

            if (Object.Equals(value, default(T)) && !typeof(T).IsValueType)
            {
                return(new Value());
            }

            if (typeof(T) == typeof(String) && String.IsNullOrEmpty((string)(object)value))
            {
                return(new Value());
            }

            return(new Value(ValueStorageExtensions.Create(value)));
        }
Пример #6
0
        public Value InPlaceCast(ValueTypeEnum type)
        {
            if (Storage == null)  // VOID
            {
                switch (type)
                {
                case ValueTypeEnum.Integer:
                    Storage = ValueStorageExtensions.Create(0);
                    return(this);

                case ValueTypeEnum.Amount:
                    Storage = ValueStorageExtensions.Create(new Amount(0));
                    return(this);

                case ValueTypeEnum.String:
                    Storage = ValueStorageExtensions.Create(String.Empty);
                    return(this);

                default:
                    throw new InvalidOperationException(String.Format("Cannot cast VOID to {0}", type));
                }
            }

            switch (type)
            {
            case ValueTypeEnum.Integer:
                Storage = ValueStorageExtensions.Create(Storage.AsLong);
                return(this);

            case ValueTypeEnum.Boolean:
                Storage = ValueStorageExtensions.Create(Storage.AsBoolean);
                return(this);

            case ValueTypeEnum.Date:
                Storage = ValueStorageExtensions.Create(Storage.AsDate);
                return(this);

            case ValueTypeEnum.DateTime:
                Storage = ValueStorageExtensions.Create(Storage.AsDateTime);
                return(this);

            case ValueTypeEnum.Amount:
                Storage = ValueStorageExtensions.Create(Storage.AsAmount);
                return(this);

            case ValueTypeEnum.Balance:
                Storage = ValueStorageExtensions.Create(Storage.AsBalance);
                return(this);

            case ValueTypeEnum.String:
                Storage = ValueStorageExtensions.Create(Storage.AsString);
                return(this);

            case ValueTypeEnum.Mask:
                Storage = ValueStorageExtensions.Create(Storage.AsMask);
                return(this);

            case ValueTypeEnum.Any:
                Storage = ValueStorageExtensions.Create(Storage.StoredValue);
                return(this);

            case ValueTypeEnum.Scope:
                Storage = ValueStorageExtensions.Create(Storage.AsScope);
                return(this);

            case ValueTypeEnum.Sequence:
                Storage = ValueStorageExtensions.Create(Storage.AsSequence);
                return(this);

            default:
                throw new InvalidOperationException();
            }
        }