예제 #1
0
        public void MetadataUnitTest_3()
        {
            var source = new FileMetadata();

            using (var ms = new MemoryStream())
            {
                ms.Write(new byte[] { 2, 3 }, 0, 2);

                var sourceRecords = new MetadataRecord[3]
                {
                    new MetadataRecord(3, 5, 10, 0),
                    new MetadataRecord(5, 24252525, 23425, 58581758),
                    new MetadataRecord(long.MaxValue, int.MaxValue, long.MaxValue, int.MaxValue),
                };

                foreach (var record in sourceRecords)
                {
                    source.AddRecord(record);
                }

                source.Write(ms);

                var target = new FileMetadata();
                target.Read(ms);

                var targetRecords = target.Records.ToArray();

                sourceRecords.Should().BeEquivalentTo(targetRecords);
            }
        }
예제 #2
0
        public void MetadataUnitTest_2()
        {
            var sourceBytes = new byte[]
            {
                2, 3, // initial bytes not changed
                3, 0, 0, 0, 0, 0, 0, 0,
                5, 0, 0, 0, 0, 0, 0, 0,
                10, 0, 0, 0, 0, 0, 0, 0,
                0, 0, 0, 0, 0, 0, 0, 0,
                1, 0, 0, 0 // number of records at the end
            };

            var metadata = new FileMetadata();

            using (var ms = new MemoryStream())
            {
                ms.Write(sourceBytes, 0, sourceBytes.Length);
                metadata.Read(ms);
            }

            var expectedMetadata = new FileMetadata();

            expectedMetadata.AddRecord(new MetadataRecord(3, 5, 10, 0));

            metadata.Should().BeEquivalentTo(expectedMetadata);
        }
예제 #3
0
        public void MetadataUnitTest_6()
        {
            var metadata = new FileMetadata();

            using (var ms = new MemoryStream())
            {
                metadata.Read(ms);
            }
        }
예제 #4
0
        public void MetadataUnitTest_5()
        {
            var metadata = new FileMetadata();

            using (var ms = new MemoryStream())
            {
                ms.Write(new byte[] { 2, 3 }, 0, 2);
                Assert.Throws <ArgumentException>(() => metadata.Read(ms).Should());
            }
        }
예제 #5
0
        private void LoadFileFormatTrueHeader(out bool[] importance, out int[] positions)
        {
            string path = Path.Combine(Main.ActiveWorldFileData.Path.Replace(".wld", ""), ActiveDimensionName.Split(':')[1]) + "\\Trueheader.data";

            using (BinaryReader reader = new BinaryReader(File.Open(path, FileMode.Open)))
            {
                importance = null;
                positions  = null;
                int num = reader.ReadInt32();
                WorldFile.versionNumber = num;
                if (num >= 135)
                {
                    try
                    {
                        Main.WorldFileMetadata = FileMetadata.Read(reader, FileType.World);
                        goto IL_54;
                    }
                    catch (FileFormatException value)
                    {
                        Console.WriteLine(Language.GetTextValue("Error.UnableToLoadWorld"));
                        Console.WriteLine(value);
                    }
                }
                Main.WorldFileMetadata = FileMetadata.FromCurrentSettings(FileType.World);
IL_54:
                short num2 = reader.ReadInt16();
                positions  = new int[(int)num2];
                for (int i = 0; i < (int)num2; i++)
                {
                    positions[i] = reader.ReadInt32();
                }
                short num3 = reader.ReadInt16();
                importance = new bool[(int)num3];
                byte b  = 0;
                byte b2 = 128;
                for (int i = 0; i < (int)num3; i++)
                {
                    if (b2 == 128)
                    {
                        b  = reader.ReadByte();
                        b2 = 1;
                    }
                    else
                    {
                        b2 = (byte)(b2 << 1);
                    }
                    if ((b & b2) == b2)
                    {
                        importance[i] = true;
                    }
                }
            }
        }
예제 #6
0
 public DecompressorReaderWriter(
     Stream input,
     Stream output,
     int readQueueSize,
     int writeQueueSize,
     int blockSize) : base(input, output, readQueueSize, writeQueueSize, blockSize)
 {
     fileMetadata = new FileMetadata();
     fileMetadata.Read(input);
     _canRead          = true;
     maxNumberOfBlocks = fileMetadata.Records.Count;
 }