// /***************************************************************************
// The Disc Image Chef
// ----------------------------------------------------------------------------
//
// Filename : MBR.cs
// Version : 1.0
// Author(s) : Natalia Portillo
//
// Component : Component
//
// Revision : $Revision$
// Last change by : $Author$
// Date : $Date$
//
// --[ Description ] ----------------------------------------------------------
//
// Description
//
// --[ License ] --------------------------------------------------------------
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// ----------------------------------------------------------------------------
// Copyright (C) 2011-2015 Claunia.com
// ****************************************************************************/
// //$Id$
using System.Collections.Generic;
using System.IO;
using DiscImageChef.CommonTypes;
using DiscImageChef.DiscImages;
using DiscImageChef.Filesystems;
using DiscImageChef.Filters;
using DiscImageChef.ImagePlugins;
using DiscImageChef.PartPlugins;
using NUnit.Framework;
namespace DiscImageChef.Tests.Partitions
{
[TestFixture]
public class MBR
{
readonly string[] testfiles = {
"concurrentdos_6.0.vdi.lz","darwin_1.4.1.vdi.lz","darwin_6.0.2.vdi.lz","darwin_8.0.1.vdi.lz",
"drdos_3.40.vdi.lz","drdos_3.41.vdi.lz","drdos_5.00.vdi.lz","drdos_6.00.vdi.lz",
"drdos_7.02.vdi.lz","drdos_7.03.vdi.lz","drdos_8.0.vdi.lz","linux.vdi.lz",
"macosx_10.3.vdi.lz","macosx_10.4.vdi.lz","msdos_3.30a.vdi.lz","msdos_5.00.vdi.lz",
"msdos_6.00.vdi.lz","msdos_6.20.vdi.lz","msdos_6.21.vdi.lz","msdos_6.22.vdi.lz",
"multiuserdos_7.22r04.vdi.lz","novelldos_7.00.vdi.lz","opendos_7.01.vdi.lz","parted.vdi.lz",
"pcdos_2000.vdi.lz","pcdos_2.00.vdi.lz","pcdos_2.10.vdi.lz","pcdos_3.00.vdi.lz",
"pcdos_3.10.vdi.lz","pcdos_3.30.vdi.lz","pcdos_4.00.vdi.lz","pcdos_5.00.vdi.lz",
"pcdos_6.10.vdi.lz","win95.vdi.lz","win96osr25.vdi.lz","winnt_3.10.vdi.lz",
};
readonly Partition[][] wanted = {
// Concurrent DOS 6.0
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 100800,
PartitionSequence = 0, PartitionStartSector = 1008 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 99792,
PartitionSequence = 1, PartitionStartSector = 102816 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 100800,
PartitionSequence = 2, PartitionStartSector = 202608 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 303408,
PartitionSequence = 2, PartitionStartSector = 352800 },
},
// Darwin 1.4.1
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x07", PartitionSectors = 409248,
PartitionSequence = 0, PartitionStartSector = 409248 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xA8", PartitionSectors = 204624,
PartitionSequence = 1, PartitionStartSector = 818496 },
},
// Darwin 6.0.2
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xA8", PartitionSectors = 204561,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xAB", PartitionSectors = 81648,
PartitionSequence = 1, PartitionStartSector = 204624 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 245952,
PartitionSequence = 2, PartitionStartSector = 286272 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 488880,
PartitionSequence = 2, PartitionStartSector = 532224 },
},
// Darwin 8.0.1
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 150000,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xAF", PartitionSectors = 176000,
PartitionSequence = 1, PartitionStartSector = 150063 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xA8", PartitionSectors = 350000,
PartitionSequence = 2, PartitionStartSector = 326063 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x0C", PartitionSectors = 347937,
PartitionSequence = 2, PartitionStartSector = 676063 },
},
// DR-DOS 3.40
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 100800,
PartitionSequence = 0, PartitionStartSector = 1008 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 402129,
PartitionSequence = 1, PartitionStartSector = 101871 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 152145,
PartitionSequence = 2, PartitionStartSector = 504063 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 365841,
PartitionSequence = 2, PartitionStartSector = 656271 },
},
// DR-DOS 3.41
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 126945,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 124929,
PartitionSequence = 1, PartitionStartSector = 127071 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 101745,
PartitionSequence = 2, PartitionStartSector = 252063 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 668241,
PartitionSequence = 2, PartitionStartSector = 353871 },
},
// DR-DOS 5.00
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 128016,
PartitionSequence = 0, PartitionStartSector = 124992 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 99729,
PartitionSequence = 1, PartitionStartSector = 253071 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 100737,
PartitionSequence = 2, PartitionStartSector = 352863 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 313425,
PartitionSequence = 2, PartitionStartSector = 453663 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 254961,
PartitionSequence = 2, PartitionStartSector = 767151 },
},
// DR-DOS 6.00
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 101745,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 18081,
PartitionSequence = 1, PartitionStartSector = 102879 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 130977,
PartitionSequence = 2, PartitionStartSector = 121023 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 202545,
PartitionSequence = 2, PartitionStartSector = 252063 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 567441,
PartitionSequence = 2, PartitionStartSector = 454671 },
},
// DR-DOS 7.02
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 102753,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 307377,
PartitionSequence = 1, PartitionStartSector = 102879 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 384993,
PartitionSequence = 2, PartitionStartSector = 410319 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 17073,
PartitionSequence = 2, PartitionStartSector = 795375 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 209601,
PartitionSequence = 2, PartitionStartSector = 812511 },
},
// DR-DOS 7.03
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 202545,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 141057,
PartitionSequence = 1, PartitionStartSector = 202671 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 152145,
PartitionSequence = 2, PartitionStartSector = 352863 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 364833,
PartitionSequence = 2, PartitionStartSector = 505071 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 152145,
PartitionSequence = 2, PartitionStartSector = 869967 },
},
// DR-DOS 8.0
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 205569,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 138033,
PartitionSequence = 1, PartitionStartSector = 205695 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 303345,
PartitionSequence = 2, PartitionStartSector = 352863 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 249921,
PartitionSequence = 2, PartitionStartSector = 656271 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 115857,
PartitionSequence = 2, PartitionStartSector = 906255 },
},
// Linux
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 20480,
PartitionSequence = 0, PartitionStartSector = 2048 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x24", PartitionSectors = 40960,
PartitionSequence = 1, PartitionStartSector = 22528 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xA7", PartitionSectors = 61440,
PartitionSequence = 2, PartitionStartSector = 65536 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x42", PartitionSectors = 81920,
PartitionSequence = 2, PartitionStartSector = 129024 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x83", PartitionSectors = 49152,
PartitionSequence = 2, PartitionStartSector = 212992 },
},
// Mac OS X 10.3
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xA8", PartitionSectors = 204800,
PartitionSequence = 0, PartitionStartSector = 8 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xAF", PartitionSectors = 102400,
PartitionSequence = 1, PartitionStartSector = 204816 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x0B", PartitionSectors = 102400,
PartitionSequence = 2, PartitionStartSector = 307224 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xAF", PartitionSectors = 204800,
PartitionSequence = 0, PartitionStartSector = 409632 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xAF", PartitionSectors = 204800,
PartitionSequence = 1, PartitionStartSector = 614440 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xAF", PartitionSectors = 204752,
PartitionSequence = 2, PartitionStartSector = 819248 },
},
// Mac OS X 10.4
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xAF", PartitionSectors = 102400,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xAF", PartitionSectors = 204800,
PartitionSequence = 1, PartitionStartSector = 102501 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x0B", PartitionSectors = 204800,
PartitionSequence = 2, PartitionStartSector = 307314 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xA8", PartitionSectors = 204800,
PartitionSequence = 0, PartitionStartSector = 512127 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 102400,
PartitionSequence = 1, PartitionStartSector = 716940 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0xAF", PartitionSectors = 204624,
PartitionSequence = 2, PartitionStartSector = 819378 },
},
// MS-DOS 3.30A
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 1, PartitionStartSector = 65583 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 131103 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 196623 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 262143 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 327663 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 393183 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 458703 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 524223 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 589743 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 655263 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 720783 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 786303 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 851823 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 917343 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 39249,
PartitionSequence = 2, PartitionStartSector = 982863 },
},
// MS-DOS 5.00
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 102753,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 31185,
PartitionSequence = 1, PartitionStartSector = 102879 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 41265,
PartitionSequence = 2, PartitionStartSector = 134127 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 51345,
PartitionSequence = 2, PartitionStartSector = 175455 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 61425,
PartitionSequence = 2, PartitionStartSector = 226863 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 72513,
PartitionSequence = 2, PartitionStartSector = 288351 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 82593,
PartitionSequence = 2, PartitionStartSector = 360927 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 92673,
PartitionSequence = 2, PartitionStartSector = 443583 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 102753,
PartitionSequence = 2, PartitionStartSector = 536319 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 112833,
PartitionSequence = 2, PartitionStartSector = 639135 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 122913,
PartitionSequence = 2, PartitionStartSector = 752031 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 134001,
PartitionSequence = 2, PartitionStartSector = 875007 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 13041,
PartitionSequence = 2, PartitionStartSector = 1009071 },
},
// MS-DOS 6.00
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 51345,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 72513,
PartitionSequence = 1, PartitionStartSector = 51471 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 92673,
PartitionSequence = 2, PartitionStartSector = 124047 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 112833,
PartitionSequence = 2, PartitionStartSector = 216783 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 134001,
PartitionSequence = 2, PartitionStartSector = 329679 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 154161,
PartitionSequence = 2, PartitionStartSector = 463743 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 178353,
PartitionSequence = 2, PartitionStartSector = 617967 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 184401,
PartitionSequence = 2, PartitionStartSector = 796383 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 41265,
PartitionSequence = 2, PartitionStartSector = 980847 },
},
// MS-DOS 6.20
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 205569,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 225729,
PartitionSequence = 1, PartitionStartSector = 205695 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 245889,
PartitionSequence = 2, PartitionStartSector = 431487 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 267057,
PartitionSequence = 2, PartitionStartSector = 677439 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 61425,
PartitionSequence = 2, PartitionStartSector = 944559 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 16065,
PartitionSequence = 2, PartitionStartSector = 1006047 },
},
// MS-DOS 6.21
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 205569,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 225729,
PartitionSequence = 1, PartitionStartSector = 205695 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 245889,
PartitionSequence = 2, PartitionStartSector = 431487 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 267057,
PartitionSequence = 2, PartitionStartSector = 677439 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 51345,
PartitionSequence = 2, PartitionStartSector = 944559 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 6993,
PartitionSequence = 2, PartitionStartSector = 995967 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 19089,
PartitionSequence = 2, PartitionStartSector = 1003023 },
},
// MS-DOS 6.22
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 245889,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 205569,
PartitionSequence = 1, PartitionStartSector = 246015 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 307377,
PartitionSequence = 2, PartitionStartSector = 451647 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 225729,
PartitionSequence = 2, PartitionStartSector = 759087 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 37233,
PartitionSequence = 2, PartitionStartSector = 984879 },
},
// Multiuser DOS 7.22 release 04
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 152145,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 99729,
PartitionSequence = 1, PartitionStartSector = 152271 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 202545,
PartitionSequence = 2, PartitionStartSector = 252063 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 1953,
PartitionSequence = 2, PartitionStartSector = 454671 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 565425,
PartitionSequence = 2, PartitionStartSector = 456687 },
},
// Novell DOS 7.0
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 252945,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 4977,
PartitionSequence = 1, PartitionStartSector = 253071 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 202545,
PartitionSequence = 2, PartitionStartSector = 352863 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 348705,
PartitionSequence = 2, PartitionStartSector = 555471 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 117873,
PartitionSequence = 2, PartitionStartSector = 904239 },
},
// OpenDOS 7.01
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 307377,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 4977,
PartitionSequence = 1, PartitionStartSector = 307503 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 40257,
PartitionSequence = 2, PartitionStartSector = 312543 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 202545,
PartitionSequence = 2, PartitionStartSector = 352863 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 466641,
PartitionSequence = 2, PartitionStartSector = 555471 },
},
// Parted
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x83", PartitionSectors = 67584,
PartitionSequence = 0, PartitionStartSector = 4096 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x07", PartitionSectors = 59392,
PartitionSequence = 1, PartitionStartSector = 73728 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 129024,
PartitionSequence = 2, PartitionStartSector = 133120 },
},
// PC-DOS 2000
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 205569,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 225729,
PartitionSequence = 1, PartitionStartSector = 205695 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 245889,
PartitionSequence = 2, PartitionStartSector = 431487 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 287217,
PartitionSequence = 2, PartitionStartSector = 677439 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 57393,
PartitionSequence = 2, PartitionStartSector = 964719 },
},
// PC-DOS 2.00
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 1022111,
PartitionSequence = 0, PartitionStartSector = 1 },
},
// PC-DOS 2.10
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 1022111,
PartitionSequence = 0, PartitionStartSector = 1 },
},
// PC-DOS 3.00
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 66465,
PartitionSequence = 0, PartitionStartSector = 63 },
},
// PC-DOS 3.10
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 66465,
PartitionSequence = 0, PartitionStartSector = 63 },
},
// PC-DOS 3.30
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 1, PartitionStartSector = 65583 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 131103 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 196623 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 262143 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 327663 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 393183 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 458703 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 524223 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 589743 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 655263 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 720783 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 786303 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 851823 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 65457,
PartitionSequence = 2, PartitionStartSector = 917343 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x04", PartitionSectors = 39249,
PartitionSequence = 2, PartitionStartSector = 982863 },
},
// PC-DOS 4.00
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 205569,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 25137,
PartitionSequence = 1, PartitionStartSector = 205695 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 245889,
PartitionSequence = 2, PartitionStartSector = 230895 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 307377,
PartitionSequence = 2, PartitionStartSector = 476847 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 237825,
PartitionSequence = 2, PartitionStartSector = 784287 },
},
// PC-DOS 5.00
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 205569,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 25137,
PartitionSequence = 1, PartitionStartSector = 205695 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 245889,
PartitionSequence = 2, PartitionStartSector = 230895 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 287217,
PartitionSequence = 2, PartitionStartSector = 476847 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 257985,
PartitionSequence = 2, PartitionStartSector = 764127 },
},
// PC-DOS 6.10
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 205569,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 25137,
PartitionSequence = 1, PartitionStartSector = 205695 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 225729,
PartitionSequence = 2, PartitionStartSector = 230895 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 245889,
PartitionSequence = 2, PartitionStartSector = 456687 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 319473,
PartitionSequence = 2, PartitionStartSector = 702639 },
},
// Windows 95
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 205569,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 245889,
PartitionSequence = 1, PartitionStartSector = 205695 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 267057,
PartitionSequence = 2, PartitionStartSector = 451647 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 287217,
PartitionSequence = 2, PartitionStartSector = 718767 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 17073,
PartitionSequence = 2, PartitionStartSector = 1006047 },
},
// Windows 95 OSR 2.5
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 307377,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 245889,
PartitionSequence = 1, PartitionStartSector = 307503 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 328545,
PartitionSequence = 2, PartitionStartSector = 553455 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 102753,
PartitionSequence = 2, PartitionStartSector = 882063 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 21105,
PartitionSequence = 2, PartitionStartSector = 984879 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 17073,
PartitionSequence = 2, PartitionStartSector = 1006047 },
},
// Windows NT 3.10
new []{
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x07", PartitionSectors = 204561,
PartitionSequence = 0, PartitionStartSector = 63 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x07", PartitionSectors = 60480,
PartitionSequence = 1, PartitionStartSector = 962640 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x07", PartitionSectors = 307377,
PartitionSequence = 2, PartitionStartSector = 204687 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 224721,
PartitionSequence = 2, PartitionStartSector = 512127 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x06", PartitionSectors = 214641,
PartitionSequence = 2, PartitionStartSector = 736911 },
new Partition{ PartitionDescription = null, PartitionName = null, PartitionType = "0x01", PartitionSectors = 10017,
PartitionSequence = 2, PartitionStartSector = 951615 },
},
};
[Test]
public void Test()
{
for(int i = 0; i < testfiles.Length; i++)
{
string location = Path.Combine(Consts.TestFilesRoot, "partitions", "mbr", testfiles[i]);
Filter filter = new LZip();
filter.Open(location);
ImagePlugin image = new VDI();
Assert.AreEqual(true, image.OpenImage(filter), testfiles[i]);
PartPlugin parts = new DiscImageChef.PartPlugins.MBR();
Assert.AreEqual(true, parts.GetInformation(image, out List partitions), testfiles[i]);
Assert.AreEqual(wanted[i].Length, partitions.Count, testfiles[i]);
for(int j = 0; j < partitions.Count; j++)
{
// Too chatty
//Assert.AreEqual(wanted[i][j].PartitionDescription, partitions[j].PartitionDescription, testfiles[i]);
Assert.AreEqual(wanted[i][j].PartitionSectors * 512, partitions[j].PartitionLength, testfiles[i]);
Assert.AreEqual(wanted[i][j].PartitionName, partitions[j].PartitionName, testfiles[i]);
Assert.AreEqual(wanted[i][j].PartitionType, partitions[j].PartitionType, testfiles[i]);
Assert.AreEqual(wanted[i][j].PartitionStartSector * 512, partitions[j].PartitionStart, testfiles[i]);
Assert.AreEqual(wanted[i][j].PartitionSectors, partitions[j].PartitionSectors, testfiles[i]);
Assert.AreEqual(wanted[i][j].PartitionSequence, partitions[j].PartitionSequence, testfiles[i]);
Assert.AreEqual(wanted[i][j].PartitionStartSector, partitions[j].PartitionStartSector, testfiles[i]);
}
}
}
}
}