Пример #1
0
        public void SpecialVariableBaseNumberTest3()
        {
            BigInteger bigNum             = BigInteger.Parse("536");
            SpecialVariableBaseNumber num = new SpecialVariableBaseNumber(bigNum);

            Assert.AreEqual(bigNum, num.ToBigInt());
        }
Пример #2
0
        public void DecodeTest()
        {
            SubstitutionCypher        sc   = new SubstitutionCypher("hgllo", alphabet);
            SpecialVariableBaseNumber seed = new SpecialVariableBaseNumber(new List <int> {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0
            });

            Assert.AreEqual("hello", sc.Decode(seed));
        }
Пример #3
0
        public void IncTest()
        {
            SpecialVariableBaseNumber num = new SpecialVariableBaseNumber();

            Assert.AreEqual("0", num.ToString());

            for (int i = 0; i < 12; ++i)
            {
                num.Inc();
            }
            Assert.AreEqual("2,0,0,0", num.ToString());
        }
Пример #4
0
        public void SpecialVariableBaseNumberTest1()
        {
            List <int> numbers = new List <int>();

            for (int i = 0; i <= 10; ++i)
            {
                numbers.Add((int)i);
            }
            SpecialVariableBaseNumber num = new SpecialVariableBaseNumber(numbers);

            Assert.AreEqual("10,9,8,7,6,5,4,3,2,1,0", num.ToString());
        }
Пример #5
0
        public void Indexer()
        {
            List <int> numbers = new List <int>();

            for (int i = 0; i <= 10; ++i)
            {
                numbers.Add((int)i);
            }
            SpecialVariableBaseNumber num = new SpecialVariableBaseNumber(numbers);

            Assert.AreEqual(10, num[0]);
            Assert.AreEqual(8, num[2]);
            Assert.AreEqual(0, num[10]);
        }
Пример #6
0
        public void ToBigIntTest()
        {
            SpecialVariableBaseNumber num = new SpecialVariableBaseNumber();

            Assert.AreEqual(0, (int)num.ToBigInt());

            for (int i = 1; i < 100; ++i)
            {
                num.Inc();
                Assert.AreEqual(i, (int)num.ToBigInt());
            }

            num = new SpecialVariableBaseNumber();
            Assert.AreEqual(0, (int)num.ToBigInt());
            for (int i = 1; i < 1000; ++i)
            {
                num.IncBy(17);
                Assert.AreEqual(17 * i, (int)num.ToBigInt());
            }
        }
Пример #7
0
        public void encodeTest()
        {
            SubstitutionCypher sc = new SubstitutionCypher("hello", alphabet);

            Assert.AreEqual('a', alphabet[0]);
            Assert.AreEqual('z', alphabet[25]);

            SpecialVariableBaseNumber seed = new SpecialVariableBaseNumber(26);

            Assert.AreEqual("hello", sc.Encode(seed));

            seed = new SpecialVariableBaseNumber(new List <int> {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0
            });
            Assert.AreEqual("hfllo", sc.Encode(seed));

            seed = new SpecialVariableBaseNumber(new List <int> {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0
            });
            Assert.AreEqual("hgllo", sc.Encode(seed));
        }
Пример #8
0
        public void EncodeDecodePairs()
        {
            SpecialVariableBaseNumber seed = new SpecialVariableBaseNumber(26);

            seed.Inc();
            for (int i = 0; i < 100000; ++i)
            {
                string             originalString = "abcdefghijklmnopqrstuvwxyz";
                SubstitutionCypher original       = new SubstitutionCypher(originalString, alphabet);
                if (i == 0)
                {
                    Console.WriteLine($"{original.NumSeeds} possible combinations");
                }
                string codedString = original.Encode(seed);
                Assert.AreNotEqual(originalString, codedString);
                SubstitutionCypher coded = new SubstitutionCypher(codedString, alphabet);
                Assert.AreEqual(originalString, coded.Decode(seed));
                seed.IncBy(732);
            }

            SubstitutionCypher usesLargeSeed = new SubstitutionCypher("hello", alphabet);

            seed = new SpecialVariableBaseNumber(26);
            seed.IncBy(usesLargeSeed.NumSeeds - 1);

            string borderEncoded = usesLargeSeed.Encode(seed);

            Console.WriteLine($"Using seed {seed}");

            Console.WriteLine($"Coded: {borderEncoded}");


            SubstitutionCypher reverseWithLargeSeed = new SubstitutionCypher(borderEncoded, alphabet);
            string             decoded = reverseWithLargeSeed.Decode(seed);

            Console.WriteLine($"Decoded: {decoded}");

            Assert.AreEqual("hello", decoded);
        }
Пример #9
0
        public void IncByTest()
        {
            List <int> numbers = new List <int>();

            for (int i = 0; i <= 2; ++i)
            {
                numbers.Add(i);
            }
            SpecialVariableBaseNumber num = new SpecialVariableBaseNumber(numbers);

            Assert.AreEqual("2,1,0", num.ToString());

            num.IncBy(2);
            Assert.AreEqual("1,0,1,0", num.ToString());

            num.IncBy(1);
            Assert.AreEqual("1,1,0,0", num.ToString());

            num.IncBy(1);
            Assert.AreEqual("1,1,1,0", num.ToString());

            num.IncBy(1);
            Assert.AreEqual("1,2,0,0", num.ToString());

            num.IncBy(1);
            Assert.AreEqual("1,2,1,0", num.ToString());

            num.IncBy(1);
            Assert.AreEqual("2,0,0,0", num.ToString());

            num.IncBy(6);
            Assert.AreEqual("3,0,0,0", num.ToString());

            num.IncBy(6);
            Assert.AreEqual("1,0,0,0,0", num.ToString());
        }
Пример #10
0
        public void SpecialVariableBaseNumberTest2()
        {
            SpecialVariableBaseNumber num = new SpecialVariableBaseNumber(3);

            Assert.AreEqual("0,0,0", num.ToString());
        }