public void PROPVARIANTArrayTest() { // Setup SAFEARRAY var array = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; using var sa = SafeSAFEARRAY.CreateFromArray(array, VARTYPE.VT_I4); // Add it to a PV using var pv = new PROPVARIANT(sa, VarEnum.VT_ARRAY | VarEnum.VT_I4); Assert.That(PropVariantGetElementCount(pv), Is.EqualTo(array.Length)); Assert.That(PropVariantGetInt32Elem(pv, 5, out var iVal), ResultIs.Successful); Assert.That(iVal, Is.EqualTo(array[5])); // Check GetValue func Assert.That(pv.parray, Is.EquivalentTo(array)); }
public void SafeSAFEARRAYConvert1DimTest() { // Setup SAFEARRAY var array = new int[] { 1, 2, 3, 4 }; using var sa = SafeSAFEARRAY.CreateFromArray(array, VARTYPE.VT_I4); Assert.That(sa.Length, Is.EqualTo(array.Length)); Assert.That(sa.Rank, Is.EqualTo(array.Rank)); var toarray = sa.ToArray(); Assert.That(toarray, Is.EquivalentTo(array)); var i = sa.GetValue <int>(3); Assert.That(i, Is.EqualTo(array[3])); sa.SetValue(i + 10, 3); Assert.That(sa.GetValue <int>(3), Is.EqualTo(i + 10)); Assert.That(sa.GetValue(3), Is.EqualTo(i + 10)); }
public void SafeSAFEARRAYConvertMultDimTest() { // Setup SAFEARRAY var array = new int[2, 3, 4] { { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }, { { 13, 14, 15, 16 }, { 17, 18, 19, 20 }, { 21, 22, 23, 24 } } }; using var sa = SafeSAFEARRAY.CreateFromArray(array, VARTYPE.VT_I4); Assert.That(sa.Length, Is.EqualTo(array.Length)); Assert.That(sa.Rank, Is.EqualTo(array.Rank)); var toarray = sa.ToArray(); Assert.That(toarray, Is.EquivalentTo(array)); var i = sa.GetValue <int>(1, 2, 3); Assert.That(i, Is.EqualTo(array[1, 2, 3])); sa.SetValue(i + 10, 1, 2, 3); Assert.That(sa.GetValue <int>(1, 2, 3), Is.EqualTo(i + 10)); Assert.That(sa.GetValue(1, 2, 3), Is.EqualTo(i + 10)); }