Ejemplo n.º 1
0
        static void CheckTable(BinaryTable table, bool[,] bitMap, int size)
        {
            table.Check();

            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    if (table.Contains(i, j) != bitMap[i, j])
                    {
                        Console.Error.WriteLine("ERROR (1)!\n");
                        PrintDiffs(table, bitMap, size);
                        //throw new Exception();
                        Environment.Exit(1);
                    }
                }
            }

            for (uint i = 0; i < size; i++)
            {
                List <uint> list = new List <uint>();
                for (uint j = 0; j < size; j++)
                {
                    if (bitMap[i, j])
                    {
                        list.Add(j);
                    }
                }
                uint[] expValues = list.ToArray();

                if (table.ContainsField1(i) != (expValues.Length > 0))
                {
                    Console.Error.WriteLine("ERROR (2)!\n");
                    for (int k = 0; k < expValues.Length; k++)
                    {
                        Console.Error.Write("{0} ", expValues[k]);
                    }
                    Console.Error.WriteLine();
                    Console.Error.WriteLine("{0}", table.ContainsField1(i));
                    Environment.Exit(1);
                }

                uint[] actualValues = table.LookupByCol1(i);
                Array.Sort(actualValues);
                if (!Eq(actualValues, expValues))
                {
                    Console.Error.WriteLine("ERROR (3)!\n");
                    Environment.Exit(1);
                }

                list = new List <uint>();
                BinaryTable.Iter it = table.GetIter1(i);
                while (!it.Done())
                {
                    list.Add(it.GetField2());
                    it.Next();
                }
                actualValues = list.ToArray();
                Array.Sort(actualValues);
                if (!Eq(actualValues, expValues))
                {
                    Console.Error.WriteLine("ERROR (4)!\n");
                    Environment.Exit(1);
                }
            }

            for (uint j = 0; j < size; j++)
            {
                List <uint> list = new List <uint>();
                for (uint i = 0; i < size; i++)
                {
                    if (bitMap[i, j])
                    {
                        list.Add(i);
                    }
                }
                uint[] expValues = list.ToArray();

                if (table.ContainsField2(j) != (expValues.Length > 0))
                {
                    Console.Error.WriteLine("ERROR (5)!\n");
                    Environment.Exit(1);
                }

                uint[] actualValues = table.LookupByCol2(j);
                Array.Sort(actualValues);
                if (!Eq(actualValues, expValues))
                {
                    Console.Error.WriteLine("ERROR (6)!\n");
                    Environment.Exit(1);
                }

                list = new List <uint>();
                BinaryTable.Iter it = table.GetIter2(j);
                while (!it.Done())
                {
                    list.Add(it.GetField1());
                    it.Next();
                }
                actualValues = list.ToArray();
                Array.Sort(actualValues);
                if (!Eq(actualValues, expValues))
                {
                    Console.Error.WriteLine("ERROR (4)!\n");
                    Environment.Exit(1);
                }
            }
        }