コード例 #1
0
        public void FromObjectsAndKeysGenericTest()
        {
            var keys = new [] {
                new NSString("Key1"),
                new NSString("Key2"),
                new NSString("Key3"),
                new NSString("Key4"),
                new NSString("Key5"),
            };
            var values = new [] {
                NSNumber.FromByte(0x1),
                NSNumber.FromFloat(8.5f),
                NSNumber.FromDouble(10.5),
                NSNumber.FromInt32(42),
                NSNumber.FromBoolean(true),
            };

            var dict = NSMutableDictionary <NSString, NSNumber> .FromObjectsAndKeys(values, keys, values.Length);

            Assert.AreEqual(dict.Count, 5, "count");
            for (int i = 0; i < values.Length; i++)
            {
                Assert.AreEqual(dict [keys [i]], values [i], $"key lookup, Iteration: {i}");
            }
        }
コード例 #2
0
        public void Ctor_NSNumber()
        {
            TestRuntime.AssertXcodeVersion(5, 0);

            using (var value = NSNumber.FromByte(255))
                using (var tag = new CGImageMetadataTag(nspace, prefix, name, CGImageMetadataType.Default, value)) {
                    Assert.That(tag.Name.ToString(), Is.EqualTo("tagName"), "Name");
                    Assert.That(tag.Namespace.ToString(), Is.EqualTo("http://ns.adobe.com/exif/1.0/"), "Namespace");
                    Assert.That(tag.Prefix.ToString(), Is.EqualTo("exif"), "Prefix");
                    Assert.That(tag.Type, Is.EqualTo(CGImageMetadataType.String), "Type");
                    Assert.That(tag.Value.ToString(), Is.EqualTo("255"), "Value");
                    Assert.Null(tag.GetQualifiers(), "GetQualifiers");
                }
        }
コード例 #3
0
        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");
            }
        }
コード例 #4
0
        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);
        }