示例#1
0
        public void TestGetOnesAndZeros()
        {
            // ARRANGE
            BitmapEncoder bmpEnc = new BitmapEncoder();

            byte[] file         = new byte[] { 10, 249, 12, 1, 180, 29, 2, 78, 45, 12, 12, 13, 69, 45, 78, 111 };
            byte[] IV           = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
            byte[] bothTogether = new byte[IV.Length + file.Length];
            byte[] parsedBytes;

            for (int i = 0; i < IV.Length; i++)
            {
                bothTogether[i] = IV[i];
            }

            for (int i = IV.Length; i < bothTogether.Length; i++)
            {
                bothTogether[i] = file[i - IV.Length];
            }

            // ACT
            BitArray ba = bmpEnc.GetOnesAndZeros(IV, file);

            parsedBytes = new byte[ba.Count / 8];
            int byteIndex = 0, bitIndex = 0;

            for (int i = 0; i < ba.Count; i++)
            {
                if (ba[i])
                {
                    parsedBytes[byteIndex] |= (byte)(1 << (7 - bitIndex));
                }

                bitIndex++;
                if (bitIndex == 8)
                {
                    bitIndex = 0;
                    byteIndex++;
                }
            }

            // ASSERT
            for (int i = 0; i < parsedBytes.Length; i++)
            {
                Assert.AreEqual(parsedBytes[i], bothTogether[i]);
            }
        }