Esempio n. 1
0
        public void TestTransform()
        {
            var trits      = Converter.TrytesToTrits("ADHMOICIPKGYHYL9VMLSSXHGKTUTEQUTIWUQWSVYHZWTAHNIYQICEJWFTCYBGRGRM9DWBCGDELIGEIIIH");
            var ulongTrits = UlongTritConverter.TritsToUlong(trits, Curl.StateLength, Mode._64bit);

            ulongTrits.Low[0] = 15811494920322472813;
            ulongTrits.Low[1] = 17941353825114769379;
            ulongTrits.Low[2] = 576458557575118879;
            ulongTrits.Low[3] = 18446741876833779711;

            ulongTrits.High[0] = 13176245766935394011;
            ulongTrits.High[1] = 14403622084951293727;
            ulongTrits.High[2] = 18445620372817592319;
            ulongTrits.High[3] = 2199023255551;

            var curl = new NonceCurl(ulongTrits.Low, ulongTrits.High, (int)CurlMode.CurlP27);

            curl.Transform();

            for (var i = 0; i < this.expectedAfterTransform.Length; i++)
            {
                Assert.AreEqual(this.expectedAfterTransform[i].Item1, curl.Low[i]);
                Assert.AreEqual(this.expectedAfterTransform[i].Item2, curl.High[i]);
            }
        }
Esempio n. 2
0
        public void TestTritToULongConversion()
        {
            var input  = new[] { -1, 0, 1 };
            var result = UlongTritConverter.TritsToUlong(input, Curl.StateLength);

            Assert.AreEqual(ulong.MaxValue, result.Low[0]);
            Assert.AreEqual(UlongTritConverter.Min, result.High[0]);

            Assert.AreEqual(ulong.MaxValue, result.Low[1]);
            Assert.AreEqual(ulong.MaxValue, result.High[1]);

            Assert.AreEqual(UlongTritConverter.Min, result.Low[2]);
            Assert.AreEqual(ulong.MaxValue, result.High[2]);
        }
        /// <summary>
        /// The prepare trits.
        /// </summary>
        /// <param name="trits">
        /// The trits.
        /// </param>
        /// <param name="offset">
        /// The offset.
        /// </param>
        /// <returns>
        /// The <see cref="UlongTritTouple"/>.
        /// </returns>
        protected UlongTritTouple PrepareTrits(int[] trits, int offset)
        {
            var ulongTrits = UlongTritConverter.TritsToUlong(trits, Curl.StateLength);

            ulongTrits.Low[offset]     = this.Low0;
            ulongTrits.Low[offset + 1] = this.Low1;
            ulongTrits.Low[offset + 2] = this.Low2;
            ulongTrits.Low[offset + 3] = this.Low3;

            ulongTrits.High[offset]     = this.High0;
            ulongTrits.High[offset + 1] = this.High1;
            ulongTrits.High[offset + 2] = this.High2;
            ulongTrits.High[offset + 3] = this.High3;

            return(ulongTrits);
        }
        public void TestCorrectLengthOutput()
        {
            var trits      = Converter.TrytesToTrits("ADHMOICIPKGYHYL9VMLSSXHGKTUTEQUTIWUQWSVYHZWTAHNIYQICEJWFTCYBGRGRM9DWBCGDELIGEIIIH");
            var ulongTrits = UlongTritConverter.TritsToUlong(trits, Curl.StateLength);

            ulongTrits.Low[0] = 15811494920322472813;
            ulongTrits.Low[1] = 17941353825114769379;
            ulongTrits.Low[2] = 576458557575118879;
            ulongTrits.Low[3] = 18446741876833779711;

            ulongTrits.High[0] = 13176245766935394011;
            ulongTrits.High[1] = 14403622084951293727;
            ulongTrits.High[2] = 18445620372817592319;
            ulongTrits.High[3] = 2199023255551;

            var mux = new TrinaryDemultiplexer(ulongTrits);

            Assert.AreEqual(TrinaryDemultiplexer.Width, mux.Length);
        }
        public void TestDemuxMapsCorrectly()
        {
            var trits      = Converter.TrytesToTrits("ADHMOICIPKGYHYL9VMLSSXHGKTUTEQUTIWUQWSVYHZWTAHNIYQICEJWFTCYBGRGRM9DWBCGDELIGEIIIH");
            var ulongTrits = UlongTritConverter.TritsToUlong(trits, Curl.StateLength);

            ulongTrits.Low[0] = 15811494920322472813;
            ulongTrits.Low[1] = 17941353825114769379;
            ulongTrits.Low[2] = 576458557575118879;
            ulongTrits.Low[3] = 18446741876833779711;

            ulongTrits.High[0] = 13176245766935394011;
            ulongTrits.High[1] = 14403622084951293727;
            ulongTrits.High[2] = 18445620372817592319;
            ulongTrits.High[3] = 2199023255551;

            var mux = new TrinaryDemultiplexer(ulongTrits);

            for (var i = 0; i < AbstractCurl.HashLength; i++)
            {
                var tritSum = mux.Get(0).Take(i).ToArray().Sum();
                Assert.AreEqual(ExpectedDemux[i], tritSum);
            }
        }