public void ShiftTest()
        {
            ComplementCode cc1 = new ComplementCode(5, "10110");

            cc1 >>= 1;
            Assert.AreEqual("01011", cc1.ToString());

            cc1 >>= 3;
            Assert.AreEqual("00001", cc1.ToString());
        }
        public void ShiftTest2()
        {
            ComplementCode cc1 = new ComplementCode(5, "10110");

            cc1 <<= 1;
            Assert.AreEqual("01100", cc1.ToString());

            cc1 <<= 2;
            Assert.AreEqual("10000", cc1.ToString());
        }
        public void DivideTestOne()
        {
            //8 / 4 = 2
            ComplementCode first = new ComplementCode(5, "1000");
            ComplementCode second = new ComplementCode(5, "100");

            first = first / second;

            Assert.AreEqual("00010", first.ToString());
        }
        public void AdditionTest()
        {
            //5 + 5 = 10
            ComplementCode first = new ComplementCode(5, "101");
            ComplementCode second = new ComplementCode(5, "101");

            first = first + second;

            Assert.AreEqual("01010", first.ToString());
        }
        public void MultiplyTest()
        {
            //257836 * 583864 = 150541158304
            ComplementCode first = new ComplementCode(40, "111110111100101100");
            ComplementCode second = new ComplementCode(40, "10001110100010111000");

            first = first * second;

            Assert.AreEqual("0010001100001100111100111100011110100000", first.ToString());
        }
        public void AddTest()
        {
            ComplementCode cc1 = new ComplementCode(5, "11111");
            ComplementCode cc2 = new ComplementCode(5, "1");
            ComplementCode cc3 = new ComplementCode(5);

            cc3 = cc1 + cc2;

            Assert.AreEqual("00000", cc3.ToString());
        }
        public void AdditionTestTwo()
        {
            // 5 + (-5) = 0
            ComplementCode first = new ComplementCode(5, "101");
            ComplementCode second = new ComplementCode(5, "101");

            first = first + -second;

            Assert.AreEqual("00000", first.ToString());
        }
        public void CreatedTest()
        {
            ComplementCode cc = new ComplementCode(5, "110");
            Assert.AreEqual("00110", cc.ToString());

            cc = new ComplementCode("11010");
            Assert.AreEqual("11010", cc.ToString());

            cc = new ComplementCode(10, "110111");
            Assert.AreEqual("0000110111", cc.ToString());
        }
        public void MultiplyTestTwo()
        {
            // 5 * -2 = -10
            ComplementCode first = new ComplementCode(4, "101");
            ComplementCode second = new ComplementCode(4, "10");

            first = first * -second;
            first = -first;

            Assert.AreEqual("1010", first.ToString());
        }
        public void MinusTest()
        {
            //5 - 7 = (-2)
            ComplementCode first = new ComplementCode(3, "101");
            ComplementCode second = new ComplementCode(3, "111");

            first = first - second;
            first = -first;

            Assert.AreEqual("010", first.ToString());
        }
        public void MinusTest()
        {
            ComplementCode cc1 = new ComplementCode(5, "00110");

            cc1 = -cc1;
            Assert.AreEqual("11010", cc1.ToString());
        }
        public void MultiplicationTest()
        {
            ComplementCode cc1 = new ComplementCode(6, "00101");
            ComplementCode cc2 = new ComplementCode(6, "00011");

            cc1 = cc1 * (-cc2);
            Assert.AreEqual("110001", cc1.ToString());
        }
        public void ModulTest()
        {
            //6 % 4 = 2
            ComplementCode A = new ComplementCode(3, "110");
            ComplementCode B = new ComplementCode(3, "100");

            A = A % B;

            Assert.AreEqual("010", A.ToString());
        }
        public void IncremTest()
        {
            // 5++ = 6
            ComplementCode A = new ComplementCode(3, "101");
            // ++5 = 6
            ComplementCode B = new ComplementCode(3, "101");

            A++;
            ++B;

            Assert.AreEqual("110", A.ToString());
            Assert.AreEqual("110", B.ToString());
        }
        public void ModuleTest()
        {
            ComplementCode cc1 = new ComplementCode(8, "110100");
            ComplementCode cc2 = new ComplementCode(8, "111");

            cc1 %= cc2;
            Assert.AreEqual("00000011", cc1.ToString());
        }
        public void DivideTestThree()
        {
            // 10 / -5 = -2
            ComplementCode A = new ComplementCode(5, "1010");
            ComplementCode B = new ComplementCode(5, "101");

            A = A / -B;

            Assert.AreEqual("11110", A.ToString());
        }
        public void DivideTestTwo()
        {
            //-5 / -5 = 1
            ComplementCode A = new ComplementCode(5, "101");
            ComplementCode B = new ComplementCode(5, "101");

            A = -A / -B;

            Assert.AreEqual("00001", A.ToString());
        }
        public void DivideTestFour()
        {
            //-4 / 2 = -2
            ComplementCode A = new ComplementCode(4, "100");
            ComplementCode B = new ComplementCode(4, "10");

            A = -A / B;

            Assert.AreEqual("1110", A.ToString());
        }
        public void DecrimTest()
        {
            // --5 = 4
            ComplementCode A = new ComplementCode(3, "101");
            // 5-- = 4
            ComplementCode B = new ComplementCode(3, "101");

            --A;
            B--;

            Assert.AreEqual("100", A.ToString());
            Assert.AreEqual("100", B.ToString());
        }