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]); } }
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); } }