コード例 #1
0
        public static Stream CreateFauxStream(
            uint fileSignature, uint fileFrameCount, uint pingMode, uint beamCount,
            uint sampleCount, uint framesToAdd)
        {
            // Not especially efficient with value types, but we don't normally use the header
            // types this way.
            ArisFileHeader hdr = new ArisFileHeader();

            hdr.Version           = fileSignature;
            hdr.FrameCount        = fileFrameCount;
            hdr.NumRawBeams       = beamCount;
            hdr.SamplesPerChannel = sampleCount;
            return(CreateStreamFromFileHeader(ref hdr, pingMode, framesToAdd));
        }
コード例 #2
0
        public void CheckFileForProblems_AllZeroFileHeader()
        {
            var emptyFileHdr = new ArisFileHeader();
            var bytes        = StructToBytes(ref emptyFileHdr);

            var(fstream, path) = CreateTestFile();
            using (var file = fstream)
            {
                Assert.AreEqual(0L, fstream.Length);
                fstream.Write(bytes, 0, bytes.Length);
            }

            MatchVoid(CheckFileForProblems(path),
                      onOk: actual => Assert.Fail("Cannot succeed if we can't verify signature, etc."),
                      onError: msg => Assert.IsTrue(true));
        }
コード例 #3
0
        public static Stream CreateStreamFromFileHeader(
            ref ArisFileHeader fileHdr, uint pingMode, uint framesToAdd)
        {
            var fileHdrSize    = Marshal.SizeOf <ArisFileHeader>();
            var sampleDataSize = fileHdr.NumRawBeams * fileHdr.SamplesPerChannel;
            var frameSize      = sampleDataSize + Marshal.SizeOf <ArisFrameHeader>();
            var totalSize      = (int)(fileHdrSize + (framesToAdd * frameSize));

            var stream = new MemoryStream();
            var hdrBuf = StructToBytes(ref fileHdr);

            stream.Write(hdrBuf, 0, hdrBuf.Length);

            var sampleData = new byte[sampleDataSize];
            var frameHdr   = new ArisFrameHeader();

            frameHdr.Version        = ArisFrameHeader.ArisFrameSignature;
            frameHdr.SamplesPerBeam = fileHdr.SamplesPerChannel;
            frameHdr.PingMode       = pingMode;

            var fi         = 0u;
            var framesLeft = framesToAdd;

            while (framesLeft > 0)
            {
                frameHdr.FrameIndex = fi;
                var frameHdrBytes = StructToBytes(ref frameHdr);

                stream.Write(frameHdrBytes, 0, frameHdrBytes.Length);
                stream.Write(sampleData, 0, sampleData.Length);

                --framesLeft;
                ++fi;
            }

            return(stream);
        }