Beispiel #1
0
        public void CreateSeekTable()
        {
            ulong expectedNumberOfSamples; // Will be set while creating a new seekpoint
            ulong expectedByteOffset;      // Will be set while creating a new seekpoint

            FileHelper.GetNewFile(origFile, newFile);

            using (FlacFile flac = new FlacFile(newFile))
            {
                SeekTable seekTable = new SeekTable();
                flac.Metadata.Add(seekTable);

                // Create a new Seekpoint, a little further
                SeekPoint newSeekpoint = new SeekPoint();
                newSeekpoint.FirstSampleNumber = 1000;
                newSeekpoint.NumberOfSamples   = (ushort)1000;
                expectedNumberOfSamples        = newSeekpoint.NumberOfSamples;
                newSeekpoint.ByteOffset        = 0;
                expectedByteOffset             = newSeekpoint.ByteOffset;
                seekTable.SeekPoints.Add(newSeekpoint);

                // Create a placeholder seekpoint
                SeekPoint placeHolder = new SeekPoint();
                placeHolder.FirstSampleNumber = ulong.MaxValue;
                // The other two values are "undefined"
                Assert.IsTrue(placeHolder.IsPlaceHolder); // Already assert that the object itself handles this flac correctly.
                seekTable.SeekPoints.Add(placeHolder);

                // This should actually be allowed according to the FLAC format (multiple placeHolders are ok, but they must occur at the end of the seektable)
                seekTable.SeekPoints.Add(placeHolder);

                // Check if we actually get "2" placeholders ...
                Assert.AreEqual <int>(2, seekTable.SeekPoints.Placeholders);

                flac.Save();
            }
            using (FlacFile flac = new FlacFile(newFile))
            {
                // Now we want to try and find our new SeekPoint
                Assert.IsNotNull(flac.SeekTable);

                Assert.IsTrue(flac.SeekTable.SeekPoints.ContainsKey(1000));
                SeekPoint newSeekpoint = flac.SeekTable.SeekPoints[1000];

                Assert.AreEqual <ulong>(expectedNumberOfSamples, newSeekpoint.NumberOfSamples);
                Assert.AreEqual <ulong>(expectedByteOffset, newSeekpoint.ByteOffset);

                Assert.IsFalse(newSeekpoint.IsPlaceHolder);

                // Check if we actually get "2" placeholders ...
                Assert.AreEqual <int>(2, flac.SeekTable.SeekPoints.Placeholders);
            }
        }
        public void CreateSeekTable()
        {
            ulong expectedNumberOfSamples; // Will be set while creating a new seekpoint
            ulong expectedByteOffset; // Will be set while creating a new seekpoint

            FileHelper.GetNewFile(origFile, newFile);

            using (FlacFile flac = new FlacFile(newFile))
            {
                SeekTable seekTable = new SeekTable();
                flac.Metadata.Add(seekTable);

                // Create a new Seekpoint, a little further
                SeekPoint newSeekpoint = new SeekPoint();
                newSeekpoint.FirstSampleNumber = 1000;
                newSeekpoint.NumberOfSamples = (ushort)1000;
                expectedNumberOfSamples = newSeekpoint.NumberOfSamples;
                newSeekpoint.ByteOffset = 0;
                expectedByteOffset = newSeekpoint.ByteOffset;
                seekTable.SeekPoints.Add(newSeekpoint);

                // Create a placeholder seekpoint
                SeekPoint placeHolder = new SeekPoint();
                placeHolder.FirstSampleNumber = ulong.MaxValue;
                // The other two values are "undefined"
                Assert.IsTrue(placeHolder.IsPlaceHolder); // Already assert that the object itself handles this flac correctly.
                seekTable.SeekPoints.Add(placeHolder);

                // This should actually be allowed according to the FLAC format (multiple placeHolders are ok, but they must occur at the end of the seektable)
                seekTable.SeekPoints.Add(placeHolder);

                // Check if we actually get "2" placeholders ...
                Assert.AreEqual<int>(2, seekTable.SeekPoints.Placeholders);

                flac.Save();
            }
            using (FlacFile flac = new FlacFile(newFile))
            {
                // Now we want to try and find our new SeekPoint
                Assert.IsNotNull(flac.SeekTable);

                Assert.IsTrue(flac.SeekTable.SeekPoints.ContainsKey(1000));
                SeekPoint newSeekpoint = flac.SeekTable.SeekPoints[1000];

                Assert.AreEqual<ulong>(expectedNumberOfSamples, newSeekpoint.NumberOfSamples);
                Assert.AreEqual<ulong>(expectedByteOffset, newSeekpoint.ByteOffset);

                Assert.IsFalse(newSeekpoint.IsPlaceHolder);

                // Check if we actually get "2" placeholders ...
                Assert.AreEqual<int>(2, flac.SeekTable.SeekPoints.Placeholders);
            }
        }