示例#1
0
        public void InitPropVariantFromInt32VectorTest()
        {
            var pv = new PROPVARIANT();

            InitPropVariantFromInt32Vector(new int[] { 1, 2, 3, 4 }, 4, pv);
            Assert.That(pv.VarType, Is.EqualTo(VarEnum.VT_VECTOR | VarEnum.VT_I4));
            Assert.That(pv.Value as IEnumerable <int>, Is.Not.Null.And.Exactly(4).Items);
            pv.Dispose();
        }
示例#2
0
        public void InitPropVariantFromBufferTest()
        {
            var pv = new PROPVARIANT();

            InitPropVariantFromBuffer(new byte[] { 1, 2, 3, 4 }, 4, pv);
            Assert.That(pv.VarType, Is.EqualTo(VarEnum.VT_VECTOR | VarEnum.VT_UI1));
            Assert.That(pv.Value as IEnumerable <byte>, Is.Not.Null.And.Exactly(4).Items);
            pv.Dispose();
        }
示例#3
0
        public void InitPropVariantFromFileTimeVectorTest()
        {
            var pv = new PROPVARIANT();

            InitPropVariantFromFileTimeVector(new[] { DateTime.Now.ToFileTimeStruct(), DateTime.Today.ToFileTimeStruct() }, 2, pv);
            Assert.That(pv.VarType, Is.EqualTo(VarEnum.VT_VECTOR | VarEnum.VT_FILETIME));
            Assert.That(pv.Value as IEnumerable <FILETIME>, Is.Not.Null.And.Exactly(2).Items);
            pv.Dispose();
        }
示例#4
0
        public void InitPropVariantFromDoubleVectorTest()
        {
            var pv = new PROPVARIANT();

            InitPropVariantFromDoubleVector(new[] { 1f, 2.0, 255.3, 0.1 }, 4, pv);
            Assert.That(pv.VarType, Is.EqualTo(VarEnum.VT_VECTOR | VarEnum.VT_R8));
            Assert.That(pv.Value as IEnumerable <double>, Is.Not.Null.And.Exactly(4).Items.And.Contains(0.1));
            pv.Dispose();
        }
示例#5
0
        public void InitPropVariantFromBooleanVectorTest()
        {
            var pv = new PROPVARIANT();

            InitPropVariantFromBooleanVector(new[] { true, false, true, true }, 4, pv);
            Assert.That(pv.VarType, Is.EqualTo(VarEnum.VT_VECTOR | VarEnum.VT_BOOL));
            Assert.That(pv.Value as IEnumerable <bool>, Is.Not.Null.And.Exactly(4).Items);
            pv.Dispose();
        }
示例#6
0
        public void InitPropVariantFromStringVectorTest()
        {
            var pv = new PROPVARIANT();

            InitPropVariantFromStringVector(new [] { "1", "2", "3", "4" }, 4, pv);
            Assert.That(pv.VarType, Is.EqualTo(VarEnum.VT_VECTOR | VarEnum.VT_LPWSTR));
            Assert.That(pv.Value as IEnumerable <string>, Is.Not.Null.And.Exactly(4).Items);
            pv.Dispose();
        }
示例#7
0
        public void InitPropVariantFromFileTimeTest()
        {
            var pv = new PROPVARIANT();
            var ft = DateTime.Now.ToFileTimeStruct();

            InitPropVariantFromFileTime(ref ft, pv);
            Assert.That(pv.VarType, Is.EqualTo(VarEnum.VT_FILETIME));
            Assert.That(pv.Value, Is.EqualTo(ft));
            pv.Dispose();
        }
示例#8
0
        public void InitPropVariantFromCLSIDTest()
        {
            var pv = new PROPVARIANT();
            var g  = Guid.NewGuid();

            InitPropVariantFromCLSID(g, pv);
            Assert.That(pv.VarType, Is.EqualTo(VarEnum.VT_CLSID));
            Assert.That(pv.Value, Is.EqualTo(g));
            pv.Dispose();
        }
示例#9
0
        public static bool TryGetMetadataProperty <T>(this IWICMetadataQueryReader queryReader, string propertyPath, out T value)
        {
            if (queryReader == null)
            {
                throw new ArgumentNullException("queryReader");
            }
            value = default(T);
            PROPVARIANT propvariant    = default(PROPVARIANT);
            int         metadataByName = queryReader.GetMetadataByName(propertyPath, out propvariant);

            if (-2003292352 != metadataByName)
            {
                GraphicsInteropNativeMethods.CheckNativeResult(metadataByName);
                value = (T)((object)propvariant.Value);
                propvariant.Dispose();
                return(true);
            }
            propvariant.Dispose();
            return(false);
        }
示例#10
0
        public void InitPropVariantFromPropVariantVectorElemTest()
        {
            var pv  = new PROPVARIANT(new[] { 1, 2, 3, 4 });
            var pvc = new PROPVARIANT();

            InitPropVariantFromPropVariantVectorElem(pv, 2, pvc);
            Assert.That(pv.VarType, Is.EqualTo(VarEnum.VT_VECTOR | VarEnum.VT_I4));
            Assert.That(pvc.VarType, Is.EqualTo(VarEnum.VT_I4));
            Assert.That(pvc.Value, Is.TypeOf <int>().And.EqualTo(3));
            pv.Dispose();
            pvc.Dispose();

            pv  = new PROPVARIANT(3.14f);
            pvc = new PROPVARIANT();
            InitPropVariantFromPropVariantVectorElem(pv, 0, pvc);
            Assert.That(pv.VarType, Is.EqualTo(VarEnum.VT_R4));
            Assert.That(pvc.VarType, Is.EqualTo(VarEnum.VT_R4));
            Assert.That(pvc.Value, Is.TypeOf <float>().And.EqualTo(3.14f));
            pv.Dispose();
            pvc.Dispose();
        }