public static void bufferedFileTest(System.String filename, int numIts, double[] db, double[] db2, float[] fl, float[] fl2, long[] ln, long[] ln2, int[] in_Renamed, int[] in2, short[] sh, short[] sh2, char[] ch, char[] ch2, byte[] by, byte[] by2, bool[] bl, bool[] bl2, int[][][][] multi, int[][][][] multi2)
        {
            int dim = db.Length;

            double ds = SupportClass.Random.NextDouble() - 0.5;
            double ds2;
            float  fs = (float)(SupportClass.Random.NextDouble() - 0.5);
            float  fs2;
            int    is_Renamed = (int)(1000000 * (SupportClass.Random.NextDouble() - 500000));
            int    is2;
            long   ls = (long)(100000000000L * (SupportClass.Random.NextDouble() - 50000000000L));
            long   ls2;
            short  ss = (short)(60000 * (SupportClass.Random.NextDouble() - 30000));
            short  ss2;
            //			char cs = (char) (60000 * SupportClass.Random.NextDouble());
            char cs = SupportClass.NextChar();
            char cs2;
            byte bs = (byte)(256 * SupportClass.Random.NextDouble() - 128);
            byte bs2;
            bool bls = (SupportClass.Random.NextDouble() > 0.5);
            bool bls2;

            System.Console.Out.WriteLine("New libraries: nom.tam.util.BufferedFile");
            System.Console.Out.WriteLine("               Using array I/O methods.");

            BufferedFile f = new BufferedFile(filename, FileAccess.ReadWrite, FileShare.ReadWrite);

            resetTime();
            for (int i = 0; i < numIts; i += 1)
            {
                f.WriteArray(db);
            }
            System.Console.Out.WriteLine("  BF  Dbl write: " + (8 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.WriteArray(fl);
            }
            System.Console.Out.WriteLine("  BF  Flt write: " + (4 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.WriteArray(in_Renamed);
            }
            System.Console.Out.WriteLine("  BF  Int write: " + (4 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.WriteArray(ln);
            }
            System.Console.Out.WriteLine("  BF  Lng write: " + (8 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.WriteArray(sh);
            }
            System.Console.Out.WriteLine("  BF  Sht write: " + (2 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.WriteArray(ch);
            }
            System.Console.Out.WriteLine("  BF  Chr write: " + (2 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.WriteArray(by);
            }
            System.Console.Out.WriteLine("  BF  Byt write: " + (1 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.WriteArray(bl);
            }
            System.Console.Out.WriteLine("  BF  Boo write: " + (1 * dim * numIts) / (1000 * deltaTime()));

            f.Write((byte)bs);
            f.Write((System.Char)cs);
            f.Write((System.Int16)ss);
            f.Write(is_Renamed);
            f.Write(ls);
            f.Write(fs);
            f.Write(ds);
            f.Write(bls);

            f.WriteArray(multi);
            f.Flush();
            f.Seek(0, SeekOrigin.Begin);

            resetTime();
            for (int i = 0; i < numIts; i += 1)
            {
                f.ReadArray(db2);
            }
            System.Console.Out.WriteLine("  BF  Dbl read:  " + (8 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.ReadArray(fl2);
            }
            System.Console.Out.WriteLine("  BF  Flt read:  " + (4 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.ReadArray(in2);
            }
            System.Console.Out.WriteLine("  BF  Int read:  " + (4 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.ReadArray(ln2);
            }
            System.Console.Out.WriteLine("  BF  Lng read:  " + (8 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.ReadArray(sh2);
            }
            System.Console.Out.WriteLine("  BF  Sht read:  " + (2 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.ReadArray(ch2);
            }
            System.Console.Out.WriteLine("  BF  Chr read:  " + (2 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.ReadArray(by2);
            }
            System.Console.Out.WriteLine("  BF  Byt read:  " + (1 * dim * numIts) / (1000 * deltaTime()));
            for (int i = 0; i < numIts; i += 1)
            {
                f.ReadArray(bl2);
            }
            System.Console.Out.WriteLine("  BF  Boo read:  " + (1 * dim * numIts) / (1000 * deltaTime()));

            bs2  = (byte)f.ReadByte();
            cs2  = f.ReadChar();
            ss2  = f.ReadInt16();
            is2  = f.ReadInt32();
            ls2  = f.ReadInt64();
            fs2  = f.ReadSingle();
            ds2  = f.ReadDouble();
            bls2 = f.ReadBoolean();

            // Now read only pieces of the multidimensional array.
            for (int i = 0; i < 5; i += 1)
            {
                // Skip the odd initial indices and read the evens.
                System.Int64 temp_Int64;
                temp_Int64 = f.Position;
                temp_Int64 = f.Seek(4000) - temp_Int64;
                int generatedAux27 = (int)temp_Int64;
                f.ReadArray(multi2[2 * i + 1]);
            }

            f.Close();

            System.Console.Out.WriteLine("BufferedFile Verification:");
            System.Console.Out.WriteLine("  An error should be reported for double and float NaN's");
            System.Console.Out.WriteLine("  Arrays:");

            for (int i = 0; i < dim; i += 1)
            {
                if (db[i] != db2[i] && !Double.IsNaN(db[i]) && !Double.IsNaN(db2[i]))
                {
                    System.Console.Out.WriteLine("     Double error at " + i + " " + db[i] + " " + db2[i]);
                }
                if (fl[i] != fl2[i] && !Single.IsNaN(fl[i]) && !Single.IsNaN(fl2[i]))
                {
                    System.Console.Out.WriteLine("     Float error at " + i + " " + fl[i] + " " + fl2[i]);
                }
                if (in_Renamed[i] != in2[i])
                {
                    System.Console.Out.WriteLine("     Int error at " + i + " " + in_Renamed[i] + " " + in2[i]);
                }
                if (ln[i] != ln2[i])
                {
                    System.Console.Out.WriteLine("     Long error at " + i + " " + ln[i] + " " + ln2[i]);
                }
                if (sh[i] != sh2[i])
                {
                    System.Console.Out.WriteLine("     Short error at " + i + " " + sh[i] + " " + sh2[i]);
                }
                if (ch[i] != ch2[i])
                {
                    System.Console.Out.WriteLine("     Char error at " + i + " " + (int)ch[i] + " " + (int)ch2[i]);
                }
                if (by[i] != by2[i])
                {
                    System.Console.Out.WriteLine("     Byte error at " + i + " " + by[i] + " " + by2[i]);
                }
                if (bl[i] != bl2[i])
                {
                    System.Console.Out.WriteLine("     Bool error at " + i + " " + bl[i] + " " + bl2[i]);
                }
            }

            System.Console.Out.WriteLine("  Scalars:");
            // Check the scalars.
            if (bls != bls2)
            {
                System.Console.Out.WriteLine("     Bool Scalar mismatch:" + bls + " " + bls2);
            }
            if (bs != bs2)
            {
                System.Console.Out.WriteLine("     Byte Scalar mismatch:" + bs + " " + bs2);
            }
            if (cs != cs2)
            {
                System.Console.Out.WriteLine("     Char Scalar mismatch:" + (int)cs + " " + (int)cs2);
            }
            if (ss != ss2)
            {
                System.Console.Out.WriteLine("     Short Scalar mismatch:" + ss + " " + ss2);
            }
            if (is_Renamed != is2)
            {
                System.Console.Out.WriteLine("     Int Scalar mismatch:" + is_Renamed + " " + is2);
            }
            if (ls != ls2)
            {
                System.Console.Out.WriteLine("     Long Scalar mismatch:" + ls + " " + ls2);
            }
            if (fs != fs2)
            {
                System.Console.Out.WriteLine("     Float Scalar mismatch:" + fs + " " + fs2);
            }
            if (ds != ds2)
            {
                System.Console.Out.WriteLine("     Double Scalar mismatch:" + ds + " " + ds2);
            }

            System.Console.Out.WriteLine("  Multi: odd rows should match");
            for (int i = 0; i < 10; i += 1)
            {
                System.Console.Out.WriteLine("      " + i + " " + multi[i][i][i][i] + " " + multi2[i][i][i][i]);
            }
            System.Console.Out.WriteLine("Done BufferedFile Tests");
        }
Exemple #2
0
 private void  InitBlock()
 {
     tbuf2          = new byte[32];
     tbuf1          = new byte[32];
     truncationFill = (byte)SupportClass.Identity('*');
 }
        //[Ignore("The process cannot access the file ")]
        public void TestBufferedFile()
        {
            string[] args = new string[1];
            String   file = Path.GetTempFileName();

            File.Copy("testdocs\\ht1.fits", file, true);
            args[0] = file;

            System.String filename = args[0];
            int           dim      = 1000;

            if (args.Length > 1)
            {
                dim = System.Int32.Parse(args[1]);
            }
            int numIts = 1;

            if (args.Length > 2)
            {
                numIts = System.Int32.Parse(args[2]);
            }

            System.Console.Out.WriteLine("Allocating arrays.");
            double[] db         = new double[dim];
            float[]  fl         = new float[dim];
            int[]    in_Renamed = new int[dim];
            long[]   ln         = new long[dim];
            short[]  sh         = new short[dim];
            byte[]   by         = new byte[dim];
            char[]   ch         = new char[dim];
            bool[]   bl         = new bool[dim];

            System.Console.Out.WriteLine("Initializing arrays -- may take a while");
            int sign = 1;

            for (int i = 0; i < dim; i += 1)
            {
                double x = sign * System.Math.Pow(10.0, 20 * SupportClass.Random.NextDouble() - 10);
                db[i] = x;
                fl[i] = (float)x;

                if (System.Math.Abs(x) < 1)
                {
                    x = 1 / x;
                }

                in_Renamed[i] = (int)x;
                ln[i]         = (long)x;
                sh[i]         = (short)x;
                by[i]         = (byte)x;
                //ch[i] = (char) x;
                ch[i] = SupportClass.NextChar();
                bl[i] = x > 0;

                sign = -sign;
            }

            // Ensure special values are tested.

            by[0]         = (byte)System.Byte.MinValue;
            by[1]         = (byte)System.Byte.MaxValue;
            by[2]         = 0;
            ch[0]         = System.Char.MinValue;
            ch[1]         = System.Char.MaxValue;
            ch[2]         = (char)(0);
            sh[0]         = System.Int16.MaxValue;
            sh[1]         = System.Int16.MinValue;
            sh[0]         = 0;
            in_Renamed[0] = System.Int32.MaxValue;
            in_Renamed[1] = System.Int32.MinValue;
            in_Renamed[2] = 0;
            ln[0]         = System.Int64.MinValue;
            ln[1]         = System.Int64.MaxValue;
            ln[2]         = 0;
            fl[0]         = System.Single.Epsilon;
            fl[1]         = System.Single.MaxValue;
            fl[2]         = System.Single.PositiveInfinity;
            fl[3]         = System.Single.NegativeInfinity;
            fl[4]         = System.Single.NaN;
            fl[5]         = 0;
            db[0]         = System.Double.MinValue;
            db[1]         = System.Double.MaxValue;
            db[2]         = System.Double.PositiveInfinity;
            db[3]         = System.Double.NegativeInfinity;
            db[4]         = System.Double.NaN;
            db[5]         = 0;

            double[] db2 = new double[dim];
            float[]  fl2 = new float[dim];
            int[]    in2 = new int[dim];
            long[]   ln2 = new long[dim];
            short[]  sh2 = new short[dim];
            byte[]   by2 = new byte[dim];
            char[]   ch2 = new char[dim];
            bool[]   bl2 = new bool[dim];

            int[][][][] multi = new int[10][][][];
            for (int i2 = 0; i2 < 10; i2++)
            {
                multi[i2] = new int[10][][];
                for (int i3 = 0; i3 < 10; i3++)
                {
                    multi[i2][i3] = new int[10][];
                    for (int i4 = 0; i4 < 10; i4++)
                    {
                        multi[i2][i3][i4] = new int[10];
                    }
                }
            }
            int[][][][] multi2 = new int[10][][][];
            for (int i5 = 0; i5 < 10; i5++)
            {
                multi2[i5] = new int[10][][];
                for (int i6 = 0; i6 < 10; i6++)
                {
                    multi2[i5][i6] = new int[10][];
                    for (int i7 = 0; i7 < 10; i7++)
                    {
                        multi2[i5][i6][i7] = new int[10];
                    }
                }
            }
            for (int i = 0; i < 10; i += 1)
            {
                multi[i][i][i][i] = i;
            }

            if (args.Length < 4 || args[3].IndexOf((System.Char) 'O') >= 0)
            {
                standardFileTest(filename, numIts, in_Renamed, in2);
                standardStreamTest(filename, numIts, in_Renamed, in2);
            }

            /*	if (args.Length < 4 || args[3].IndexOf((System.Char) 'X') >= 0)
             *  {
             *      buffStreamSimpleTest(filename, numIts, in_Renamed, in2);
             *  }
             */
            if (args.Length < 4 || args[3].IndexOf((System.Char) 'R') >= 0)
            {
                bufferedFileTest(filename, numIts, db, db2, fl, fl2, ln, ln2, in_Renamed, in2, sh, sh2, ch, ch2, by, by2, bl, bl2, multi, multi2);
            }


            if (args.Length < 4 || args[3].IndexOf((System.Char) 'S') >= 0)
            {
                bufferedStreamTest(filename, numIts, db, db2, fl, fl2, ln, ln2, in_Renamed, in2, sh, sh2, ch, ch2, by, by2, bl, bl2, multi, multi2);
            }
        }