public void AssignToSectorEndTest() {
    var firstRange = new SectorRange(0, 1000);
    var secondRange = new SectorRange(1000, 2000);
    var firstSector = CreateMock<ISector>();
    var secondSector = CreateMock<ISector>();
    var collection = new SectorCollection();
    collection.AssignSector(firstRange, firstSector);
    collection.AssignSector(secondRange, secondSector);
    var sectorPairs = collection.EnumerateSectorPairs().ToList();
    AssertEquals(2, sectorPairs.Count);
    AssertEquals(new SectorRange(0, 1000), sectorPairs[0].Key);
    AssertEquals(firstSector, sectorPairs[0].Value);
    AssertEquals(new SectorRange(1000, 2000), sectorPairs[1].Key);
    AssertEquals(secondSector, sectorPairs[1].Value);
    VerifyNoMoreInteractions();
 }
      public void AssignSectorTest() {
         var range = new SectorRange(1000, 2000);
         var sector = CreateMock<ISector>();
         var collection = new SectorCollection();
         collection.AssignSector(range, sector);

         var sectors = collection.EnumerateSectors().ToList();

         AssertEquals(1, sectors.Count);
         AssertEquals(sector, sectors[0]);
         VerifyNoMoreInteractions();
      }
      public SectorCollection Deserialize(BinaryReader reader)
      {
         var sectorCollectionMagic = reader.ReadUInt32();

         if (sectorCollectionMagic != SECTOR_COLLECTION_MAGIC) {
            throw new FormatException("Expected Sector Collection Magic " + SECTOR_COLLECTION_MAGIC + " but read " + sectorCollectionMagic);
         }

         var sectorCount = reader.ReadUInt32();
         var collection = new SectorCollection();
         for (var i = 0; i < sectorCount; i++) {
            var guid = reader.ReadGuid();
            var startInclusive = reader.ReadInt64();
            var endExclusive = reader.ReadInt64();
            var sector = (ISector)Activator.CreateInstance(sectorTypesByGuid[guid]);
            sector.Deserialize(reader);
            collection.AssignSector(new SectorRange(startInclusive, endExclusive), sector);
         }
         return collection;
      }
        public SectorCollection Deserialize(BinaryReader reader)
        {
            var sectorCollectionMagic = reader.ReadUInt32();

            if (sectorCollectionMagic != SECTOR_COLLECTION_MAGIC)
            {
                throw new FormatException("Expected Sector Collection Magic " + SECTOR_COLLECTION_MAGIC + " but read " + sectorCollectionMagic);
            }

            var sectorCount = reader.ReadUInt32();
            var collection  = new SectorCollection();

            for (var i = 0; i < sectorCount; i++)
            {
                var guid           = reader.ReadGuid();
                var startInclusive = reader.ReadInt64();
                var endExclusive   = reader.ReadInt64();
                var sector         = (ISector)Activator.CreateInstance(sectorTypesByGuid[guid]);
                sector.Deserialize(reader);
                collection.AssignSector(new SectorRange(startInclusive, endExclusive), sector);
            }
            return(collection);
        }