public void Indexers() { TestRuntime.AssertXcodeVersion(9, 0); NSError err; var shape = new nint [] { 10 }; using (var arr = new MLMultiArray(shape, MLMultiArrayDataType.Int32, out err)) { Assert.IsNull(err, "err"); Assert.AreEqual(10, arr.Count, "Count"); Assert.AreEqual(new nint [] { 10 }, arr.Shape, "Shape"); Assert.AreEqual(new nint [] { 1 }, arr.Strides, "Strides"); arr [0] = 0; // MLMultiArray's elements aren't zero-initialized Assert.AreEqual(0, arr [0].Int32Value, "a"); Assert.AreEqual(0, arr [new nint [] { 0 }].Int32Value, "b"); Assert.AreEqual(0, arr [new NSNumber [] { NSNumber.FromNInt(0) }].Int32Value, "c nint"); Assert.AreEqual(0, arr [new NSNumber [] { NSNumber.FromInt32(0) }].Int32Value, "c int32"); Assert.AreEqual(0, arr [new NSNumber [] { NSNumber.FromByte(0) }].Int32Value, "c byte"); Assert.AreEqual(0, arr [new NSNumber [] { NSNumber.FromFloat(0) }].Int32Value, "c float"); Assert.AreEqual(0, arr.GetObject(0).Int32Value, "GetObject a"); Assert.AreEqual(0, arr.GetObject(new nint [] { 0 }).Int32Value, "GetObject b"); Assert.AreEqual(0, arr.GetObject(new NSNumber [] { NSNumber.FromNInt(0) }).Int32Value, "GetObject c nint"); Assert.AreEqual(0, arr.GetObject(new NSNumber [] { NSNumber.FromInt32(0) }).Int32Value, "GetObject c int32"); Assert.AreEqual(0, arr.GetObject(new NSNumber [] { NSNumber.FromByte(0) }).Int32Value, "GetObject c byte"); Assert.AreEqual(0, arr.GetObject(new NSNumber [] { NSNumber.FromFloat(0) }).Int32Value, "GetObject c float"); arr [1] = NSNumber.FromInt32(1); arr [new nint [] { 2 }] = NSNumber.FromInt32(2); arr [new NSNumber [] { NSNumber.FromUInt16(3) }] = NSNumber.FromInt32(3); arr.SetObject(NSNumber.FromInt32(4), 4); arr.SetObject(NSNumber.FromInt32(5), new nint [] { 5 }); arr.SetObject(NSNumber.FromInt32(6), new NSNumber [] { NSNumber.FromSByte(6) }); Assert.AreEqual(1, arr [1].Int32Value, "1"); Assert.AreEqual(2, arr [2].Int32Value, "2"); Assert.AreEqual(3, arr [3].Int32Value, "3"); Assert.AreEqual(4, arr [4].Int32Value, "4"); Assert.AreEqual(5, arr [5].Int32Value, "5"); Assert.AreEqual(6, arr [6].Int32Value, "6"); } // multi-dimensional shape = new nint [] { 7, 7, 7 }; using (var arr = new MLMultiArray(shape, MLMultiArrayDataType.Int32, out err)) { Assert.IsNull(err, "err"); Assert.AreEqual(shape [0] * shape [1] * shape [2], arr.Count, "Count"); arr [0, 0, 0] = 0; // MLMultiArray's elements aren't zero-initialized Assert.AreEqual(0, arr [0, 0, 0].Int32Value, "a"); Assert.AreEqual(0, arr [new nint [] { 0, 0, 0 }].Int32Value, "b"); Assert.AreEqual(0, arr [new NSNumber [] { NSNumber.FromNInt(0), NSNumber.FromNInt(0), NSNumber.FromNInt(0) }].Int32Value, "c nint"); Assert.AreEqual(0, arr.GetObject(0, 0, 0).Int32Value, "GetObject a"); Assert.AreEqual(0, arr.GetObject(new nint [] { 0, 0, 0 }).Int32Value, "GetObject b"); Assert.AreEqual(0, arr.GetObject(new NSNumber [] { NSNumber.FromNInt(0), NSNumber.FromNInt(0), NSNumber.FromNInt(0) }).Int32Value, "GetObject c nint"); arr [1, 1, 1] = NSNumber.FromInt32(1); arr [new nint [] { 2, 2, 2 }] = NSNumber.FromInt32(2); arr [new NSNumber [] { NSNumber.FromUInt16(3), NSNumber.FromUInt16(3), NSNumber.FromUInt16(3) }] = NSNumber.FromInt32(3); arr.SetObject(NSNumber.FromInt32(4), 4, 4, 4); arr.SetObject(NSNumber.FromInt32(5), new nint [] { 5, 5, 5 }); arr.SetObject(NSNumber.FromInt32(6), new NSNumber [] { NSNumber.FromSByte(6), NSNumber.FromSByte(6), NSNumber.FromSByte(6) }); Assert.AreEqual(1, arr [1, 1, 1].Int32Value, "1"); Assert.AreEqual(2, arr [2, 2, 2].Int32Value, "2"); Assert.AreEqual(3, arr [3, 3, 3].Int32Value, "3"); Assert.AreEqual(4, arr [4, 4, 4].Int32Value, "4"); Assert.AreEqual(5, arr [5, 5, 5].Int32Value, "5"); Assert.AreEqual(6, arr [6, 6, 6].Int32Value, "6"); } }
public static NSObject ConvertToNSObject(object obj) { if (obj != null) { if (obj is Boolean) { return(NSNumber.FromBoolean((bool)obj)); } else if (obj is Byte) { return(NSNumber.FromByte((byte)obj)); } else if (obj is SByte) { return(NSNumber.FromSByte((sbyte)obj)); } else if (obj is Int16) { return(NSNumber.FromInt16((short)obj)); } else if (obj is Int32) { return(NSNumber.FromInt32((int)obj)); } else if (obj is Int64) { return(NSNumber.FromInt64((long)obj)); } else if (obj is UInt16) { return(NSNumber.FromUInt16((ushort)obj)); } else if (obj is UInt32) { return(NSNumber.FromUInt32((uint)obj)); } else if (obj is UInt64) { return(NSNumber.FromUInt64((ulong)obj)); } else if (obj is Single) { return(NSNumber.FromFloat((float)obj)); } else if (obj is Double) { return(NSNumber.FromDouble((double)obj)); } else if (obj is string) { return(new NSString(obj.ToString())); } else if (obj is Guid) { return(new NSUuid(((Guid)obj).ToByteArray())); } else if (obj is DateTime) { return(((DateTime)obj).ToNSDate()); } else if (obj is DateTimeOffset) { return(new NSString(((DateTimeOffset)obj).ToString("O"))); } } return(null); }