Esempio n. 1
0
        public void SafeArrayScopedAccessTest()
        {
            var psa = SafeArrayCreateVector(VARTYPE.VT_I4, 0, 5);

            {
                /*for (int i = 0; i < 5; i++)
                 * {
                 *      var p = new SafeCoTaskMemHandle(16);
                 *      Marshal.GetNativeVariantForObject(i, (IntPtr)p);
                 *      Assert.That(SafeArrayPutElement(psa, new[] { i }, (IntPtr)p).Succeeded);
                 * }*/
                using (var d = new SafeArrayScopedAccessData(psa))
                {
                    //var a = d.Data.ToArray<int>(5);
                    //Assert.That(a, Is.EquivalentTo(new long[] {0, 1, 2, 3, 4}));
                    d.Data.Write(new[] { 0, 1, 2, 3, 4 });
                }
                for (var i = 0; i < 5; i++)
                {
                    var p = new SafeCoTaskMemHandle(16);
                    Assert.That(SafeArrayGetElement(psa, new[] { i }, (IntPtr)p).Succeeded);
                    var oi = p.ToStructure <int>();
                    Assert.That(oi, Is.EqualTo(i));
                }
            }
            psa.Dispose();
        }
Esempio n. 2
0
 public void SafeArrayAccessDataTest()
 {
     using (var psa = SafeArrayCreateVector(VARTYPE.VT_I8, 0, 5))
     {
         Assert.That(SafeArrayAccessData(psa, out var pData).Succeeded);
         Assert.That(pData, Is.Not.EqualTo(IntPtr.Zero));
         Assert.That(SafeArrayUnaccessData(psa).Succeeded);
         using (var d = new SafeArrayScopedAccessData(psa))
             Assert.That(d.Data, Is.Not.EqualTo(IntPtr.Zero));
     }
 }