예제 #1
0
        public void pack_span32u()
        {
            var x0     = BitVector32.FromScalar(0b00001010110000101001001111011001u);
            var x1     = BitVector32.FromScalar(0b00001010110110101001001111000001u);
            var src    = Random.Span <byte>(Pow2.T04).ReadOnly();
            var packed = span <uint>(src.Length / 4);

            gbits.pack(src, packed);

            for (var i = 0; i < packed.Length; i++)
            {
                var x = BitVector32.FromScalar(BitConverter.ToUInt32(src.Slice(4 * i)));
                var y = BitVector32.FromScalar(packed[i]);
                Claim.eq((uint)x, (uint)y, AppMsg.Error($"{x.ToBitString()} != {y.ToBitString()}"));
            }
        }
예제 #2
0
파일: tbv_extract.cs 프로젝트: 0xCM/arrows
        public void extract32()
        {
            var src   = Random.Stream <uint>().Take(SampleSize).ToArray();
            var lower = Random.Stream(leftclosed <byte>(0, 16)).Take(SampleSize).ToArray();
            var upper = Random.Stream(leftclosed <byte>(16, 32)).Take(SampleSize).ToArray();

            for (var i = 0; i < SampleSize; i++)
            {
                var v1 = BitVector.Load(src[i]);
                var v2 = BitVector32.FromScalar(src[i]);
                Claim.eq(v1.ToBitVector32(), v2);

                var r1 = v1.SliceCell(lower[i], upper[i]);
                var r2 = v2.Between(lower[i], upper[i]);
                Claim.eq(r1, r2);
            }
        }