public void CharSegment()
        {
            char[] b = new char[10];
            ArraySegment <char> segment = new(b);

            var   watch = MemoryWatch.Create();
            Value value = Value.Create(segment);

            watch.Validate();

            Assert.AreEqual(typeof(ArraySegment <char>), value.Type);
            Assert.AreEqual(segment, value.As <ArraySegment <char> >());
            Assert.AreEqual(segment, (ArraySegment <char>)value.As <object>());
            Assert.Throws <InvalidCastException>(() => value.As <char[]>());

            segment = new(b, 0, 0);
            value   = Value.Create(segment);
            Assert.AreEqual(typeof(ArraySegment <char>), value.Type);
            Assert.AreEqual(segment, value.As <ArraySegment <char> >());
            Assert.AreEqual(segment, (ArraySegment <char>)value.As <object>());
            Assert.Throws <InvalidCastException>(() => value.As <char[]>());

            segment = new(b, 1, 1);
            value   = Value.Create(segment);
            Assert.AreEqual(typeof(ArraySegment <char>), value.Type);
            Assert.AreEqual(segment, value.As <ArraySegment <char> >());
            Assert.AreEqual(segment, (ArraySegment <char>)value.As <object>());
            Assert.Throws <InvalidCastException>(() => value.As <char[]>());
        }
        public void NullBoolean()
        {
            bool? source = null;
            Value value;

            using (MemoryWatch.Create())
            {
                value = source;
            }

            Assert.Null(value.Type);
            Assert.AreEqual(source, value.As <bool?>());
            Assert.False(value.As <bool?>().HasValue);
        }
        public void CharArray()
        {
            char[] b = new char[10];

            var   watch = MemoryWatch.Create();
            Value value = Value.Create(b);

            watch.Validate();

            Assert.AreEqual(typeof(char[]), value.Type);
            Assert.AreSame(b, value.As <char[]>());
            Assert.AreEqual(b, (char[])value.As <object>());

            Assert.Throws <InvalidCastException>(() => value.As <ArraySegment <char> >());
        }
        public void BasicFunctionality()
        {
            InitType();
            DayOfWeek day = DayOfWeek.Monday;

            Value     value;
            DayOfWeek outDay;

            using (MemoryWatch watch = MemoryWatch.Create())
            {
                value  = Value.Create(day);
                outDay = value.As <DayOfWeek>();
            }

            Assert.AreEqual(day, outDay);
            Assert.AreEqual(typeof(DayOfWeek), value.Type);
        }
        public void BooleanInOut(bool testValue)
        {
            Value value;
            bool  success;
            bool  result;

            using (MemoryWatch.Create())
            {
                value   = new(testValue);
                success = value.TryGetValue(out result);
            }

            Assert.True(success);
            Assert.AreEqual(testValue, result);

            Assert.AreEqual(testValue, value.As <bool>());
            Assert.AreEqual(testValue, (bool)value);
        }
        public void NullableBooleanInBooleanOut(bool?testValue)
        {
            bool? source = testValue;
            Value value;
            bool  success;
            bool  result;

            using (MemoryWatch.Create())
            {
                value   = new(source);
                success = value.TryGetValue(out result);
            }

            Assert.True(success);
            Assert.AreEqual(testValue, result);

            Assert.AreEqual(testValue, value.As <bool>());

            Assert.AreEqual(testValue, (bool)value);
        }
        public void BooleanImplicit(bool testValue)
        {
            Value value;

            using (MemoryWatch.Create())
            {
                value = testValue;
            }

            Assert.AreEqual(testValue, value.As <bool>());
            Assert.AreEqual(typeof(bool), value.Type);

            bool?source = testValue;

            using (MemoryWatch.Create())
            {
                value = source;
            }
            Assert.AreEqual(source, value.As <bool?>());
            Assert.AreEqual(typeof(bool), value.Type);
        }
        public void FloatCreate([ValueSource("FloatData")] float testValue)
        {
            Value value;

            using (MemoryWatch.Create())
            {
                value = Value.Create(testValue);
            }

            Assert.AreEqual(testValue, value.As <float>());
            Assert.AreEqual(typeof(float), value.Type);

            float?source = testValue;

            using (MemoryWatch.Create())
            {
                value = Value.Create(source);
            }

            Assert.AreEqual(source, value.As <float?>());
            Assert.AreEqual(typeof(float), value.Type);
        }
        public void ULongCreate(ulong testValue)
        {
            Value value;

            using (MemoryWatch.Create())
            {
                value = Value.Create(testValue);
            }

            Assert.AreEqual(testValue, value.As <ulong>());
            Assert.AreEqual(typeof(ulong), value.Type);

            ulong?source = testValue;

            using (MemoryWatch.Create())
            {
                value = Value.Create(source);
            }

            Assert.AreEqual(source, value.As <ulong?>());
            Assert.AreEqual(typeof(ulong), value.Type);
        }
Beispiel #10
0
        public void CharCreate(char testValue)
        {
            Value value;

            using (MemoryWatch.Create())
            {
                value = Value.Create(testValue);
            }

            Assert.AreEqual(testValue, value.As <char>());
            Assert.AreEqual(typeof(char), value.Type);

            char?source = testValue;

            using (MemoryWatch.Create())
            {
                value = Value.Create(source);
            }

            Assert.AreEqual(source, value.As <char?>());
            Assert.AreEqual(typeof(char), value.Type);
        }
Beispiel #11
0
        public void LongCreate([ValueSource("LongData")] long testValue)
        {
            Value value;

            using (MemoryWatch.Create())
            {
                value = Value.Create(testValue);
            }

            Assert.AreEqual(testValue, value.As <long>());
            Assert.AreEqual(typeof(long), value.Type);

            long?source = testValue;

            using (MemoryWatch.Create())
            {
                value = Value.Create(source);
            }

            Assert.AreEqual(source, value.As <long?>());
            Assert.AreEqual(typeof(long), value.Type);
        }
Beispiel #12
0
        public void ShortCreate([ValueSource("ShortData")] short testValue)
        {
            Value value;

            using (MemoryWatch.Create())
            {
                value = Value.Create(testValue);
            }

            Assert.AreEqual(testValue, value.As <short>());
            Assert.AreEqual(typeof(short), value.Type);

            short?source = testValue;

            using (MemoryWatch.Create())
            {
                value = Value.Create(source);
            }

            Assert.AreEqual(source, value.As <short?>());
            Assert.AreEqual(typeof(short), value.Type);
        }
Beispiel #13
0
        public void DoubleCreate([ValueSource("DoubleData")] double testValue)
        {
            Value value;

            using (MemoryWatch.Create())
            {
                value = Value.Create(testValue);
            }

            Assert.AreEqual(testValue, value.As <double>());
            Assert.AreEqual(typeof(double), value.Type);

            double?source = testValue;

            using (MemoryWatch.Create())
            {
                value = Value.Create(source);
            }

            Assert.AreEqual(source, value.As <double?>());
            Assert.AreEqual(typeof(double), value.Type);
        }
        public void UIntCreate([ValueSource("UInt32Data")] uint testValue)
        {
            Value value;

            using (MemoryWatch.Create())
            {
                value = Value.Create(testValue);
            }

            Assert.AreEqual(testValue, value.As <uint>());
            Assert.AreEqual(typeof(uint), value.Type);

            uint?source = testValue;

            using (MemoryWatch.Create())
            {
                value = Value.Create(source);
            }

            Assert.AreEqual(source, value.As <uint?>());
            Assert.AreEqual(typeof(uint), value.Type);
        }
Beispiel #15
0
        public void ByteCreate(byte testValue)
        {
            Value value;

            using (MemoryWatch.Create())
            {
                value = Value.Create(testValue);
            }

            Assert.AreEqual(testValue, value.As <byte>());
            Assert.AreEqual(typeof(byte), value.Type);

            byte?source = testValue;

            using (MemoryWatch.Create())
            {
                value = Value.Create(source);
            }

            Assert.AreEqual(source, value.As <byte?>());
            Assert.AreEqual(typeof(byte), value.Type);
        }
Beispiel #16
0
        public void UShortCreate(ushort testValue)
        {
            Value value;

            using (MemoryWatch.Create())
            {
                value = Value.Create(testValue);
            }

            Assert.AreEqual(testValue, value.As <ushort>());
            Assert.AreEqual(typeof(ushort), value.Type);

            ushort?source = testValue;

            using (MemoryWatch.Create())
            {
                value = Value.Create(source);
            }

            Assert.AreEqual(source, value.As <ushort?>());
            Assert.AreEqual(typeof(ushort), value.Type);
        }
        public void CreateIsAllocationFree()
        {
            var watch = MemoryWatch.Create();

            Value.Create((bool)default);