コード例 #1
0
        public void IntImportExportAllocatingShort()
        {
            using (var a = new HugeInt("0x10123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"))
                using (var b = new HugeInt())
                {
                    foreach (var order in Enum.GetValues(typeof(LimbOrder)).Cast <LimbOrder>())
                    {
                        foreach (var endianness in Enum.GetValues(typeof(Endianness)).Cast <Endianness>())
                        {
                            foreach (var nails in new[] { 0, 5, 10, 16 })
                            {
                                foreach (var size in new[] { 8, 11, 16 })
                                {
                                    var bytes    = a.Export <short>(size, order, endianness, nails);
                                    var expected = (int)System.Math.Ceiling(193m / (size * 8 - nails));
                                    Assert.AreEqual(expected, bytes.Length * 2 / size);

                                    b.SetTo(0);
                                    b.Import(bytes, (uint)(bytes.Length * 2 / size), size, order, endianness, nails);
                                    Assert.AreEqual(a, b);
                                }
                            }
                        }
                    }
                }
        }
コード例 #2
0
        public void IntImportExport()
        {
            using (var a = new HugeInt("0x10123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"))
                using (var b = new HugeInt())
                {
                    var bytes = new byte[1000];

                    foreach (var order in Enum.GetValues(typeof(LimbOrder)).Cast <LimbOrder>())
                    {
                        foreach (var endianness in Enum.GetValues(typeof(Endianness)).Cast <Endianness>())
                        {
                            foreach (var nails in new[] { 0, 5, 10, 16 })
                            {
                                foreach (var size in new[] { 8, 11, 16 })
                                {
                                    var words    = a.Export(bytes, size, order, endianness, nails);
                                    var expected = (ulong)System.Math.Ceiling(193m / (size * 8 - nails));
                                    Assert.AreEqual(expected, words);

                                    b.SetTo(0);
                                    b.Import(bytes, words, size, order, endianness, nails);
                                    Assert.AreEqual(a, b);
                                }
                            }
                        }
                    }
                }
        }
コード例 #3
0
        public void IntImportExportAllocatingZero()
        {
            using (var a = new HugeInt())
                using (var b = new HugeInt())
                {
                    var order      = LimbOrder.LeastSignificantFirst;
                    var endianness = Endianness.Native;
                    var nails      = 5;
                    var size       = 4;

                    var bytes = a.Export <byte>(size, order, endianness, nails);
                    Assert.AreEqual(0, bytes.Length);

                    b.SetTo(1);
                    b.Import(bytes, 0, size, order, endianness, nails);
                    Assert.AreEqual(a, b);
                }
        }
コード例 #4
0
ファイル: IO.cs プロジェクト: wbhart/mpir
        public void IntImportExport()
        {
            using (var a = new HugeInt("0x10123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"))
            using (var b = new HugeInt())
            {
                var bytes = new byte[1000];

                foreach (var order in Enum.GetValues(typeof(LimbOrder)).Cast<LimbOrder>())
                foreach (var endianness in Enum.GetValues(typeof(Endianness)).Cast<Endianness>())
                foreach (var nails in new[] { 0, 5, 10, 16 })
                foreach (var size in new[] { 8, 11, 16 })
                {
                    var words = a.Export(bytes, size, order, endianness, nails);
                    var expected = (ulong)System.Math.Ceiling(193m / (size * 8 - nails));
                    Assert.AreEqual(expected, words);

                    b.SetTo(0);
                    b.Import(bytes, words, size, order, endianness, nails);
                    Assert.AreEqual(a, b);
                }
            }
        }
コード例 #5
0
ファイル: IO.cs プロジェクト: wbhart/mpir
        public void IntImportExportAllocating()
        {
            using (var a = new HugeInt("0x10123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"))
            using (var b = new HugeInt())
            {
                foreach (var order in Enum.GetValues(typeof(LimbOrder)).Cast<LimbOrder>())
                    foreach (var endianness in Enum.GetValues(typeof(Endianness)).Cast<Endianness>())
                        foreach (var nails in new[] { 0, 5, 10, 16 })
                            foreach (var size in new[] { 8, 11, 16 })
                            {
                                var bytes = a.Export<byte>(size, order, endianness, nails);
                                var expected = (int)System.Math.Ceiling(193m / (size * 8 - nails));
                                Assert.AreEqual(expected, bytes.Length / size);

                                b.SetTo(0);
                                b.Import(bytes, (uint)(bytes.Length / size), size, order, endianness, nails);
                                Assert.AreEqual(a, b);
                            }
            }
        }
コード例 #6
0
ファイル: IO.cs プロジェクト: wbhart/mpir
        public void IntImportExportAllocatingZero()
        {
            using (var a = new HugeInt())
            using (var b = new HugeInt())
            {
                var order = LimbOrder.LeastSignificantFirst;
                var endianness = Endianness.Native;
                var nails = 5;
                var size = 4;

                var bytes = a.Export<byte>(size, order, endianness, nails);
                Assert.AreEqual(0, bytes.Length);

                b.SetTo(1);
                b.Import(bytes, 0, size, order, endianness, nails);
                Assert.AreEqual(a, b);
            }
        }