Esempio n. 1
0
        public bool TestVlen()
        {
            NcFile     file             = null;
            NcVlenType vlen             = null;
            NcDim      dim              = null;
            NcVar      var              = null;
            string     stringVlenBuffer = "hi there";
            string     stringReadBuffer;

            int iLen = 0;

            sbyte[] sbyteVlenBuffer = new sbyte[] { 0, -12, -4 };
            sbyte[] sbyteReadBuffer = new sbyte[8];

            byte[] byteVlenBuffer = new byte[] { 0, 12, 4 };
            byte[] byteReadBuffer = new byte[8];

            Int16[] Int16VlenBuffer = new Int16[] { 0, -12, -4 };
            Int16[] Int16ReadBuffer = new Int16[8];

            UInt16[] UInt16VlenBuffer = new UInt16[] { 0, 12, 4 };
            UInt16[] UInt16ReadBuffer = new UInt16[8];

            Int32[] Int32VlenBuffer = new Int32[] { 0, -12, -4 };
            Int32[] Int32ReadBuffer = new Int32[8];

            UInt32[] UInt32VlenBuffer = new UInt32[] { 0, 12, 4 };
            UInt32[] UInt32ReadBuffer = new UInt32[8];

            Int64[] Int64VlenBuffer = new Int64[] { 0, -12, -4 };
            Int64[] Int64ReadBuffer = new Int64[8];

            UInt64[] UInt64VlenBuffer = new UInt64[] { 0, 12, 4 };
            UInt64[] UInt64ReadBuffer = new UInt64[8];

            float[] floatVlenBuffer = new float[] { 0, 12, 4 };
            float[] floatReadBuffer = new float[8];

            double[] doubleVlenBuffer = new double[] { 0, 12, 4 };
            double[] doubleReadBuffer = new double[8];

            try {
                file = TestHelper.NewFile(filePath);
                dim  = file.AddDim("time", 1);

                // string
                vlen = file.AddVlenType("vlenstring", NcChar.Instance);
                var  = file.AddVar("string", vlen, dim);
                var.PutVar(new Int32[] { 0 }, stringVlenBuffer);
                var.GetVar(new Int32[] { 0 }, out stringReadBuffer);
                Assert.Equals(stringVlenBuffer, stringReadBuffer);

                // sbyte
                vlen = file.AddVlenType("vlensbyte", NcByte.Instance);
                var  = file.AddVar("sbyte", vlen, dim);
                var.PutVar(new Int32[] { 0 }, sbyteVlenBuffer);
                iLen = var.GetVar(new Int32[] { 0 }, sbyteReadBuffer);
                for (int i = 0; i < iLen; i++)
                {
                    Assert.Equals(sbyteVlenBuffer[i], sbyteReadBuffer[i]);
                }

                // byte
                vlen = file.AddVlenType("vlenbyte", NcByte.Instance);
                var  = file.AddVar("byte", vlen, dim);
                var.PutVar(new Int32[] { 0 }, byteVlenBuffer);
                iLen = var.GetVar(new Int32[] { 0 }, byteReadBuffer);
                for (int i = 0; i < iLen; i++)
                {
                    Assert.Equals(byteVlenBuffer[i], byteReadBuffer[i]);
                }

                // Int16
                vlen = file.AddVlenType("vlenInt16", NcShort.Instance);
                var  = file.AddVar("Int16", vlen, dim);
                var.PutVar(new Int32[] { 0 }, Int16VlenBuffer);
                iLen = var.GetVar(new Int32[] { 0 }, Int16ReadBuffer);
                for (int i = 0; i < iLen; i++)
                {
                    Assert.Equals(Int16VlenBuffer[i], Int16ReadBuffer[i]);
                }

                // UInt16
                vlen = file.AddVlenType("vlenUInt16", NcUshort.Instance);
                var  = file.AddVar("UInt16", vlen, dim);
                var.PutVar(new Int32[] { 0 }, UInt16VlenBuffer);
                iLen = var.GetVar(new Int32[] { 0 }, UInt16ReadBuffer);
                for (int i = 0; i < iLen; i++)
                {
                    Assert.Equals(UInt16VlenBuffer[i], UInt16ReadBuffer[i]);
                }

                // Int32
                vlen = file.AddVlenType("vlenInt32", NcInt.Instance);
                var  = file.AddVar("Int32", vlen, dim);
                var.PutVar(new Int32[] { 0 }, Int32VlenBuffer);
                iLen = var.GetVar(new Int32[] { 0 }, Int32ReadBuffer);
                for (int i = 0; i < iLen; i++)
                {
                    Assert.Equals(Int32VlenBuffer[i], Int32ReadBuffer[i]);
                }

                // UInt32
                vlen = file.AddVlenType("vlenUInt32", NcUint.Instance);
                var  = file.AddVar("UInt32", vlen, dim);
                var.PutVar(new Int32[] { 0 }, UInt32VlenBuffer);
                iLen = var.GetVar(new Int32[] { 0 }, UInt32ReadBuffer);
                for (int i = 0; i < iLen; i++)
                {
                    Assert.Equals(UInt32VlenBuffer[i], UInt32ReadBuffer[i]);
                }

                // Int64
                vlen = file.AddVlenType("vlenInt64", NcInt64.Instance);
                var  = file.AddVar("Int64", vlen, dim);
                var.PutVar(new Int32[] { 0 }, Int64VlenBuffer);
                iLen = var.GetVar(new Int32[] { 0 }, Int64ReadBuffer);
                for (int i = 0; i < iLen; i++)
                {
                    Assert.Equals(Int64VlenBuffer[i], Int64ReadBuffer[i]);
                }

                // UInt64
                vlen = file.AddVlenType("vlenUInt64", NcUint64.Instance);
                var  = file.AddVar("UInt64", vlen, dim);
                var.PutVar(new Int32[] { 0 }, UInt64VlenBuffer);
                iLen = var.GetVar(new Int32[] { 0 }, UInt64ReadBuffer);
                for (int i = 0; i < iLen; i++)
                {
                    Assert.Equals(UInt64VlenBuffer[i], UInt64ReadBuffer[i]);
                }

                // float
                vlen = file.AddVlenType("vlenfloat", NcFloat.Instance);
                var  = file.AddVar("float", vlen, dim);
                var.PutVar(new Int32[] { 0 }, floatVlenBuffer);
                iLen = var.GetVar(new Int32[] { 0 }, floatReadBuffer);
                for (int i = 0; i < iLen; i++)
                {
                    Assert.Equals(floatVlenBuffer[i], floatReadBuffer[i]);
                }

                // double
                vlen = file.AddVlenType("vlendouble", NcDouble.Instance);
                var  = file.AddVar("double", vlen, dim);
                var.PutVar(new Int32[] { 0 }, doubleVlenBuffer);
                iLen = var.GetVar(new Int32[] { 0 }, doubleReadBuffer);
                for (int i = 0; i < iLen; i++)
                {
                    Assert.Equals(doubleVlenBuffer[i], doubleReadBuffer[i]);
                }
            } finally {
                file.Close();
            }
            CheckDelete(filePath);
            return(true);
        }