public void TestUnsignedTypeMembers()
        {
            var foo = new Foo.UnsignedInstanceMethods();

            Assert.AreEqual(uint.MaxValue, foo.UnsignedInstanceMethod(uint.MaxValue));

            Assert.AreEqual(3u, foo.UnsignedInstanceProperty);
            foo.UnsignedInstanceProperty = uint.MaxValue;
            Assert.AreEqual(uint.MaxValue, foo.UnsignedInstanceProperty);

            Assert.AreEqual(ushort.MaxValue, foo.UshortInstanceMethod(ushort.MaxValue));

            Assert.AreEqual(3u, foo.UshortInstanceProperty);
            foo.UshortInstanceProperty = ushort.MaxValue;
            Assert.AreEqual(ushort.MaxValue, foo.UshortInstanceProperty);

            Assert.AreEqual(ulong.MaxValue, foo.UlongInstanceMethod(ulong.MaxValue));

            Assert.AreEqual(3u, foo.UlongInstanceProperty);
            foo.UlongInstanceProperty = ulong.MaxValue;
            Assert.AreEqual(ulong.MaxValue, foo.UlongInstanceProperty);

            Assert.AreEqual(byte.MaxValue, foo.UbyteInstanceMethod(byte.MaxValue));

            Assert.AreEqual(3u, foo.UbyteInstanceProperty);
            foo.UbyteInstanceProperty = byte.MaxValue;
            Assert.AreEqual(byte.MaxValue, foo.UbyteInstanceProperty);
        }
        public void TestUnsignedArrayTypeMembers()
        {
            var foo = new Foo.UnsignedInstanceMethods();

            var uint_array   = new uint [] { 1u, 2u, uint.MaxValue };
            var ushort_array = new ushort [] { 1, 2, ushort.MaxValue };
            var ulong_array  = new ulong [] { 1u, 2u, ulong.MaxValue };
            var ubyte_array  = new byte [] { 1, 2, byte.MaxValue };

            Assert.AreEqual(uint_array, foo.UintArrayInstanceMethod(uint_array));
            Assert.AreEqual(ushort_array, foo.UshortArrayInstanceMethod(ushort_array));
            Assert.AreEqual(ulong_array, foo.UlongArrayInstanceMethod(ulong_array));
            Assert.AreEqual(ubyte_array, foo.UbyteArrayInstanceMethod(ubyte_array));
        }