diff --git a/.idea/.idea.Aaru/.idea/vcs.xml b/.idea/.idea.Aaru/.idea/vcs.xml index 53b6d8915..2d75da1c5 100644 --- a/.idea/.idea.Aaru/.idea/vcs.xml +++ b/.idea/.idea.Aaru/.idea/vcs.xml @@ -5,6 +5,13 @@ + + + diff --git a/Aaru.Core/Filesystems.cs b/Aaru.Core/Filesystems.cs index 75a421fe1..d2e158fb9 100644 --- a/Aaru.Core/Filesystems.cs +++ b/Aaru.Core/Filesystems.cs @@ -46,12 +46,13 @@ namespace Aaru.Core /// Media image /// List of plugins recognizing the filesystem /// Partition - public static void Identify(IMediaImage imagePlugin, out List idPlugins, Partition partition) + public static void Identify(IMediaImage imagePlugin, out List idPlugins, Partition partition, + bool getGuid = false) { PluginBase plugins = GetPluginBase.Instance; idPlugins = (from plugin in plugins.PluginsList.Values where plugin.Identify(imagePlugin, partition) - select plugin.Name.ToLower()).ToList(); + select getGuid ? plugin.Id.ToString() : plugin.Name.ToLower()).ToList(); } } } \ No newline at end of file diff --git a/Aaru.Tests/Filesystems/AFS/MBR.cs b/Aaru.Tests/Filesystems/AFS/MBR.cs new file mode 100644 index 000000000..10e9d624b --- /dev/null +++ b/Aaru.Tests/Filesystems/AFS/MBR.cs @@ -0,0 +1,120 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : AFS.cs +// Author(s) : Natalia Portillo +// +// Component : Aaru unit testing. +// +// --[ 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 © 2011-2021 Natalia Portillo +// ****************************************************************************/ + +using System.Collections.Generic; +using System.IO; +using Aaru.CommonTypes; +using Aaru.CommonTypes.Interfaces; +using Aaru.DiscImages; +using Aaru.Filesystems; +using Aaru.Filters; +using NUnit.Framework; + +namespace Aaru.Tests.Filesystems.AFS +{ + [TestFixture] + public class MBR + { + readonly string[] _testFiles = + { + "scoopenserver_5.0.7hw.aif" + }; + + readonly ulong[] _sectors = + { + 1024000 + }; + + readonly uint[] _sectorSize = + { + 512 + }; + + readonly long[] _clusters = + { + 510048 + }; + + readonly int[] _clusterSize = + { + 1024 + }; + + readonly string[] _volumeName = + { + "Volume label" + }; + + readonly string[] _volumeSerial = + { + null, null + }; + + readonly string[] _type = + { + "Acer Fast Filesystem" + }; + + [Test] + public void Test() + { + for(int i = 0; i < _testFiles.Length; i++) + { + string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "Acer File System (MBR)", + _testFiles[i]); + + IFilter filter = new ZZZNoFilter(); + filter.Open(location); + IMediaImage image = new AaruFormat(); + Assert.AreEqual(true, image.Open(filter), _testFiles[i]); + Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); + Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); + List partitions = Core.Partitions.GetAll(image); + IFilesystem fs = new SysVfs(); + int part = -1; + + for(int j = 0; j < partitions.Count; j++) + if(partitions[j].Type == "XENIX") + { + part = j; + + break; + } + + Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); + Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); + fs.GetInformation(image, partitions[part], out _, null); + Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); + Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); + Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); + Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); + Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); + } + } + } +} \ No newline at end of file diff --git a/Aaru.Tests/Filesystems/AFS.cs b/Aaru.Tests/Filesystems/AFS/Whole.cs similarity index 62% rename from Aaru.Tests/Filesystems/AFS.cs rename to Aaru.Tests/Filesystems/AFS/Whole.cs index 04f55832b..3f77b1db9 100644 --- a/Aaru.Tests/Filesystems/AFS.cs +++ b/Aaru.Tests/Filesystems/AFS/Whole.cs @@ -26,7 +26,6 @@ // Copyright © 2011-2021 Natalia Portillo // ****************************************************************************/ -using System.Collections.Generic; using System.IO; using Aaru.CommonTypes; using Aaru.CommonTypes.Interfaces; @@ -35,10 +34,10 @@ using Aaru.Filesystems; using Aaru.Filters; using NUnit.Framework; -namespace Aaru.Tests.Filesystems +namespace Aaru.Tests.Filesystems.AFS { [TestFixture] - public class Afs + public class Whole { readonly string[] _testFiles = { @@ -122,85 +121,4 @@ namespace Aaru.Tests.Filesystems } } } - - [TestFixture] - public class AfsMbr - { - readonly string[] _testFiles = - { - "scoopenserver_5.0.7hw.aif" - }; - - readonly ulong[] _sectors = - { - 1024000 - }; - - readonly uint[] _sectorSize = - { - 512 - }; - - readonly long[] _clusters = - { - 510048 - }; - - readonly int[] _clusterSize = - { - 1024 - }; - - readonly string[] _volumeName = - { - "Volume label" - }; - - readonly string[] _volumeSerial = - { - null, null - }; - - readonly string[] _type = - { - "Acer Fast Filesystem" - }; - - [Test] - public void Test() - { - for(int i = 0; i < _testFiles.Length; i++) - { - string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "Acer File System (MBR)", - _testFiles[i]); - - IFilter filter = new ZZZNoFilter(); - filter.Open(location); - IMediaImage image = new AaruFormat(); - Assert.AreEqual(true, image.Open(filter), _testFiles[i]); - Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); - Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); - List partitions = Core.Partitions.GetAll(image); - IFilesystem fs = new SysVfs(); - int part = -1; - - for(int j = 0; j < partitions.Count; j++) - if(partitions[j].Type == "XENIX") - { - part = j; - - break; - } - - Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); - Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); - fs.GetInformation(image, partitions[part], out _, null); - Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); - Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); - Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); - Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); - Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); - } - } - } } \ No newline at end of file diff --git a/Aaru.Tests/Filesystems/Atheos.cs b/Aaru.Tests/Filesystems/Atheos.cs index f5bfab64a..d07431ddb 100644 --- a/Aaru.Tests/Filesystems/Atheos.cs +++ b/Aaru.Tests/Filesystems/Atheos.cs @@ -38,7 +38,7 @@ using NUnit.Framework; namespace Aaru.Tests.Filesystems { [TestFixture] - public class AtheosMbr + public class Atheos { readonly string[] _testFiles = { diff --git a/Aaru.Tests/Filesystems/HAMMER.cs b/Aaru.Tests/Filesystems/HAMMER.cs index 737576357..59d9c5698 100644 --- a/Aaru.Tests/Filesystems/HAMMER.cs +++ b/Aaru.Tests/Filesystems/HAMMER.cs @@ -38,7 +38,7 @@ using NUnit.Framework; namespace Aaru.Tests.Filesystems { [TestFixture] - public class HammerMbr + public class Hammer { readonly string[] _testFiles = { diff --git a/Aaru.Tests/Filesystems/HFS+/APM.cs b/Aaru.Tests/Filesystems/HFS+/APM.cs index 777cd5290..a01602d8f 100644 --- a/Aaru.Tests/Filesystems/HFS+/APM.cs +++ b/Aaru.Tests/Filesystems/HFS+/APM.cs @@ -37,7 +37,7 @@ using NUnit.Framework; // ReSharper disable CheckNamespace -namespace Aaru.Tests.Filesystems.HfsPlus +namespace Aaru.Tests.Filesystems.HFSPlus { [TestFixture] public class APM diff --git a/Aaru.Tests/Filesystems/HFS+/GPT.cs b/Aaru.Tests/Filesystems/HFS+/GPT.cs index 47bd76928..543f21a20 100644 --- a/Aaru.Tests/Filesystems/HFS+/GPT.cs +++ b/Aaru.Tests/Filesystems/HFS+/GPT.cs @@ -37,7 +37,7 @@ using NUnit.Framework; // ReSharper disable CheckNamespace -namespace Aaru.Tests.Filesystems.HfsPlus +namespace Aaru.Tests.Filesystems.HFSPlus { [TestFixture] public class GPT diff --git a/Aaru.Tests/Filesystems/HFS+/MBR.cs b/Aaru.Tests/Filesystems/HFS+/MBR.cs index 778bbddcb..5aac99d3a 100644 --- a/Aaru.Tests/Filesystems/HFS+/MBR.cs +++ b/Aaru.Tests/Filesystems/HFS+/MBR.cs @@ -37,7 +37,7 @@ using NUnit.Framework; // ReSharper disable CheckNamespace -namespace Aaru.Tests.Filesystems.HfsPlus +namespace Aaru.Tests.Filesystems.HFSPlus { // Mising Darwin 6.0.2 wrapped [TestFixture] diff --git a/Aaru.Tests/Filesystems/PFS3.cs b/Aaru.Tests/Filesystems/PFS3.cs index b8f90c70b..fdf58141d 100644 --- a/Aaru.Tests/Filesystems/PFS3.cs +++ b/Aaru.Tests/Filesystems/PFS3.cs @@ -38,7 +38,7 @@ using NUnit.Framework; namespace Aaru.Tests.Filesystems { [TestFixture] - public class Pfs3Rdb + public class Pfs3 { readonly string[] _testFiles = { diff --git a/Aaru.Tests/Filesystems/UFS.cs b/Aaru.Tests/Filesystems/UFS.cs deleted file mode 100644 index a9d9fefef..000000000 --- a/Aaru.Tests/Filesystems/UFS.cs +++ /dev/null @@ -1,639 +0,0 @@ -// /*************************************************************************** -// Aaru Data Preservation Suite -// ---------------------------------------------------------------------------- -// -// Filename : UFS.cs -// Author(s) : Natalia Portillo -// -// Component : Aaru unit testing. -// -// --[ 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 © 2011-2021 Natalia Portillo -// ****************************************************************************/ - -using System.Collections.Generic; -using System.IO; -using Aaru.CommonTypes; -using Aaru.CommonTypes.Interfaces; -using Aaru.DiscImages; -using Aaru.Filesystems; -using Aaru.Filters; -using NUnit.Framework; - -namespace Aaru.Tests.Filesystems -{ - [TestFixture] - public class Ufs - { - readonly string[] _testFiles = - { - "amix_mf2dd.adf.lz", "netbsd_1.6_mf2hd.img.lz", "att_unix_svr4v2.1_dsdd.img.lz", - "att_unix_svr4v2.1_dshd.img.lz", "att_unix_svr4v2.1_mf2dd.img.lz", "att_unix_svr4v2.1_mf2hd.img.lz", - "solaris_2.4_mf2dd.img.lz", "solaris_2.4_mf2hd.img.lz" - }; - - readonly MediaType[] _mediaTypes = - { - MediaType.CBM_AMIGA_35_DD, MediaType.DOS_35_HD, MediaType.DOS_525_DS_DD_9, MediaType.DOS_525_HD, - MediaType.DOS_35_DS_DD_9, MediaType.DOS_35_HD, MediaType.DOS_35_DS_DD_9, MediaType.DOS_35_HD - }; - - readonly ulong[] _sectors = - { - 1760, 2880, 720, 2400, 1440, 2880, 1440, 2880 - }; - - readonly uint[] _sectorSize = - { - 512, 512, 512, 512, 512, 512, 512, 512 - }; - - readonly long[] _clusters = - { - 880, 2880, 360, 1200, 720, 1440, 711, 1422 - }; - - readonly int[] _clusterSize = - { - 1024, 512, 1024, 1024, 1024, 1024, 1024, 1024 - }; - - readonly string[] _volumeName = - { - null, null, null, null, null, null, null, null - }; - - readonly string[] _volumeSerial = - { - null, null, null, null, null, null, null, null - }; - - readonly string[] _type = - { - "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS" - }; - - [Test] - public void Test() - { - for(int i = 0; i < _testFiles.Length; i++) - { - string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem", _testFiles[i]); - IFilter filter = new LZip(); - filter.Open(location); - IMediaImage image = new ZZZRawImage(); - Assert.AreEqual(true, image.Open(filter), _testFiles[i]); - Assert.AreEqual(_mediaTypes[i], image.Info.MediaType, _testFiles[i]); - Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); - Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); - IFilesystem fs = new FFSPlugin(); - - var wholePart = new Partition - { - Name = "Whole device", - Length = image.Info.Sectors, - Size = image.Info.Sectors * image.Info.SectorSize - }; - - Assert.AreEqual(true, fs.Identify(image, wholePart), _testFiles[i]); - fs.GetInformation(image, wholePart, out _, null); - Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); - Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); - Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); - Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); - Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); - } - } - } - - [TestFixture] - public class UfsApm - { - readonly string[] _testFiles = - { - "ffs43/darwin_1.3.1.aif", "ffs43/darwin_1.4.1.aif", "ffs43/darwin_6.0.2.aif", "ffs43/darwin_8.0.1.aif", - "ufs1/darwin_1.3.1.aif", "ufs1/darwin_1.4.1.aif", "ufs1/darwin_6.0.2.aif", "ufs1/darwin_8.0.1.aif", - "ufs1/macosx_10.2.aif", "ufs1/macosx_10.3.aif", "ufs1/macosx_10.4.aif" - }; - - readonly ulong[] _sectors = - { - 1024000, 1024000, 1024000, 1024000, 204800, 204800, 204800, 204800, 2097152, 2097152, 2097152 - }; - - readonly uint[] _sectorSize = - { - 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512 - }; - - readonly long[] _clusters = - { - 511488, 511488, 511488, 511488, 102368, 102368, 102368, 102368, 1047660, 1038952, 1038952 - }; - - readonly int[] _clusterSize = - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024 - }; - - readonly string[] _volumeName = - { - null, null, null, null, null, null, null, null, null, null, null - }; - - readonly string[] _volumeSerial = - { - null, null, null, null, null, null, null, null, null, null, null - }; - - readonly string[] _type = - { - "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS" - }; - - [Test] - public void Test() - { - for(int i = 0; i < _testFiles.Length; i++) - { - string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (APM)", - _testFiles[i]); - - IFilter filter = new ZZZNoFilter(); - filter.Open(location); - IMediaImage image = new AaruFormat(); - Assert.AreEqual(true, image.Open(filter), _testFiles[i]); - Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); - Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); - List partitions = Core.Partitions.GetAll(image); - IFilesystem fs = new FFSPlugin(); - int part = -1; - - for(int j = 0; j < partitions.Count; j++) - if(partitions[j].Type == "Apple_UFS") - { - part = j; - - break; - } - - Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); - Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); - fs.GetInformation(image, partitions[part], out _, null); - Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); - Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); - Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); - Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); - Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); - } - } - } - - [TestFixture] - public class UfsMbr - { - readonly string[] _testFiles = - { - "ufs1/linux.aif", "ufs2/linux.aif", "ffs43/darwin_1.3.1.aif", "ffs43/darwin_1.4.1.aif", - "ffs43/darwin_6.0.2.aif", "ffs43/darwin_8.0.1.aif", "ffs43/dflybsd_1.2.0.aif", "ffs43/dflybsd_3.6.1.aif", - "ffs43/dflybsd_4.0.5.aif", "ffs43/netbsd_1.6.aif", "ffs43/netbsd_7.1.aif", "ufs1/darwin_1.3.1.aif", - "ufs1/darwin_1.4.1.aif", "ufs1/darwin_6.0.2.aif", "ufs1/darwin_8.0.1.aif", "ufs1/dflybsd_1.2.0.aif", - "ufs1/dflybsd_3.6.1.aif", "ufs1/dflybsd_4.0.5.aif", "ufs1/freebsd_6.1.aif", "ufs1/freebsd_7.0.aif", - "ufs1/freebsd_8.2.aif", "ufs1/netbsd_1.6.aif", "ufs1/netbsd_7.1.aif", "ufs1/solaris_7.aif", - "ufs1/solaris_9.aif", "ufs2/freebsd_6.1.aif", "ufs2/freebsd_7.0.aif", "ufs2/freebsd_8.2.aif", - "ufs2/netbsd_7.1.aif" - }; - - readonly ulong[] _sectors = - { - 262144, 262144, 1024000, 1024000, 1024000, 1024000, 1024000, 1024000, 1024000, 1024000, 409600, 204800, - 204800, 204800, 204800, 2097152, 2097152, 2097152, 2097152, 8388608, 8388608, 2097152, 1024000, 2097152, - 2097152, 16777216, 16777216, 16777216, 2097152 - }; - - readonly uint[] _sectorSize = - { - 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, - 512, 512, 512, 512, 512, 512, 512, 512 - }; - - readonly long[] _clusters = - { - 65024, 65024, 511024, 511024, 511024, 511488, 511950, 255470, 255470, 511992, 204768, 102280, 102280, - 102280, 102368, 1048500, 523758, 523758, 262138, 1048231, 2096462, 524284, 511968, 1038240, 1046808, - 2096472, 2096472, 4192945, 524272 - }; - - readonly int[] _clusterSize = - { - 2048, 2048, 1024, 1024, 1024, 1024, 1024, 2048, 2048, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 2048, 2048, - 4096, 4096, 2048, 2048, 1024, 1024, 1024, 4096, 4096, 2048, 2048 - }; - - readonly string[] _volumeName = - { - null, "VolumeLabel", null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, "VolumeLabel", "VolumeLabel", "VolumeLabel", "" - }; - - readonly string[] _volumeSerial = - { - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null - }; - - readonly string[] _type = - { - "UFS", "UFS2", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", - "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS2", "UFS2", "UFS2", "UFS2" - }; - - [Test] - public void Test() - { - for(int i = 0; i < _testFiles.Length; i++) - { - string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (MBR)", - _testFiles[i]); - - IFilter filter = new ZZZNoFilter(); - filter.Open(location); - IMediaImage image = new AaruFormat(); - Assert.AreEqual(true, image.Open(filter), _testFiles[i]); - Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); - Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); - List partitions = Core.Partitions.GetAll(image); - IFilesystem fs = new FFSPlugin(); - int part = -1; - - for(int j = 0; j < partitions.Count; j++) - if(partitions[j].Type == "0x63" || - partitions[j].Type == "0xA8" || - partitions[j].Type == "0xA5" || - partitions[j].Type == "0xA9" || - partitions[j].Type == "0x82" || - partitions[j].Type == "0x83" || - partitions[j].Type == "4.2BSD Fast File System" || - partitions[j].Type == "Sun boot") - { - part = j; - - break; - } - - Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); - Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); - fs.GetInformation(image, partitions[part], out _, null); - Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); - Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); - Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); - Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); - Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); - } - } - } - - [TestFixture] - public class UfsNeXt - { - readonly string[] _testFiles = - { - "nextstep_3.3.aif", "openstep_4.0.aif", "openstep_4.2.aif", "rhapsody_dr1.aif", "rhapsody_dr2.aif" - }; - - readonly ulong[] _sectors = - { - 409600, 409600, 409600, 409600, 409600 - }; - - readonly uint[] _sectorSize = - { - 512, 512, 512, 512, 512 - }; - - readonly long[] _clusters = - { - 204640, 204640, 204640, 204640, 204464 - }; - - readonly int[] _clusterSize = - { - 1024, 1024, 1024, 1024, 1024 - }; - - readonly string[] _volumeName = - { - null, null, null, null, null - }; - - readonly string[] _volumeSerial = - { - null, null, null, null, null - }; - - readonly string[] _type = - { - "UFS", "UFS", "UFS", "UFS", "UFS" - }; - - [Test] - public void Test() - { - for(int i = 0; i < _testFiles.Length; i++) - { - string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (NeXT)", - _testFiles[i]); - - IFilter filter = new ZZZNoFilter(); - filter.Open(location); - IMediaImage image = new AaruFormat(); - Assert.AreEqual(true, image.Open(filter), _testFiles[i]); - Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); - Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); - List partitions = Core.Partitions.GetAll(image); - IFilesystem fs = new FFSPlugin(); - int part = -1; - - for(int j = 0; j < partitions.Count; j++) - if(partitions[j].Type == "4.3BSD" || - partitions[j].Type == "4.4BSD") - { - part = j; - - break; - } - - Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); - Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); - fs.GetInformation(image, partitions[part], out _, null); - Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); - Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); - Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); - Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); - Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); - } - } - } - - [TestFixture] - public class UfsNeXtFloppy - { - readonly string[] _testFiles = - { - "nextstep_3.3_mf2dd.img.lz", "nextstep_3.3_mf2hd.img.lz", "openstep_4.0_mf2dd.img.lz", - "openstep_4.0_mf2hd.img.lz", "openstep_4.2_mf2dd.img.lz", "openstep_4.2_mf2hd.img.lz", - "rhapsody_dr1_mf2dd.img.lz", "rhapsody_dr1_mf2hd.img.lz", "rhapsody_dr2_mf2dd.img.lz", - "rhapsody_dr2_mf2hd.img.lz" - }; - - readonly ulong[] _sectors = - { - 1440, 2880, 1440, 2880, 1440, 2880, 1440, 2880, 1440, 2880 - }; - - readonly uint[] _sectorSize = - { - 512, 512, 512, 512, 512, 512, 512, 512, 512, 512 - }; - - readonly long[] _clusters = - { - 624, 1344, 624, 1344, 624, 1344, 624, 1344, 624, 1344 - }; - - readonly int[] _clusterSize = - { - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024 - }; - - readonly string[] _volumeName = - { - null, null, null, null, null, null, null, null, null, null - }; - - readonly string[] _volumeSerial = - { - null, null, null, null, null, null, null, null, null, null - }; - - readonly string[] _type = - { - "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS" - }; - - [Test] - public void Test() - { - for(int i = 0; i < _testFiles.Length; i++) - { - string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (NeXT)", - _testFiles[i]); - - IFilter filter = new LZip(); - filter.Open(location); - IMediaImage image = new ZZZRawImage(); - Assert.AreEqual(true, image.Open(filter), _testFiles[i]); - Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); - Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); - List partitions = Core.Partitions.GetAll(image); - IFilesystem fs = new FFSPlugin(); - int part = -1; - - for(int j = 0; j < partitions.Count; j++) - if(partitions[j].Type == "4.3BSD" || - partitions[j].Type == "4.4BSD") - { - part = j; - - break; - } - - Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); - Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); - fs.GetInformation(image, partitions[part], out _, null); - Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); - Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); - Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); - Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); - Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); - } - } - } - - [TestFixture] - public class UfsRdb - { - readonly string[] _testFiles = - { - "amix.aif" - }; - - readonly ulong[] _sectors = - { - 1024128 - }; - - readonly uint[] _sectorSize = - { - 512 - }; - - readonly long[] _clusters = - { - 511424 - }; - - readonly int[] _clusterSize = - { - 1024 - }; - - readonly string[] _volumeName = - { - null - }; - - readonly string[] _volumeSerial = - { - null - }; - - readonly string[] _type = - { - "UFS" - }; - - [Test] - public void Test() - { - for(int i = 0; i < _testFiles.Length; i++) - { - string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (RDB)", - _testFiles[i]); - - IFilter filter = new ZZZNoFilter(); - filter.Open(location); - IMediaImage image = new AaruFormat(); - Assert.AreEqual(true, image.Open(filter), _testFiles[i]); - Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); - Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); - List partitions = Core.Partitions.GetAll(image); - IFilesystem fs = new FFSPlugin(); - int part = -1; - - for(int j = 0; j < partitions.Count; j++) - if(partitions[j].Type == "\"UNI\\2\"") - { - part = j; - - break; - } - - Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); - Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); - fs.GetInformation(image, partitions[part], out _, null); - Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); - Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); - Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); - Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); - Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); - } - } - } - - [TestFixture] - public class UfsSuni86 - { - readonly string[] _testFiles = - { - "solaris_7.aif" - }; - - readonly ulong[] _sectors = - { - 4194304 - }; - - readonly uint[] _sectorSize = - { - 512 - }; - - readonly long[] _clusters = - { - 2063376 - }; - - readonly int[] _clusterSize = - { - 1024 - }; - - readonly string[] _volumeName = - { - null - }; - - readonly string[] _volumeSerial = - { - null - }; - - readonly string[] _type = - { - "UFS" - }; - - [Test] - public void Test() - { - for(int i = 0; i < _testFiles.Length; i++) - { - string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (SunOS x86)", - _testFiles[i]); - - IFilter filter = new ZZZNoFilter(); - filter.Open(location); - IMediaImage image = new AaruFormat(); - Assert.AreEqual(true, image.Open(filter), _testFiles[i]); - Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); - Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); - List partitions = Core.Partitions.GetAll(image); - IFilesystem fs = new FFSPlugin(); - int part = -1; - - for(int j = 0; j < partitions.Count; j++) - if(partitions[j].Type == "Replacement sectors") - { - part = j; - - break; - } - - Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); - Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); - fs.GetInformation(image, partitions[part], out _, null); - Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); - Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); - Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); - Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); - Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); - } - } - } -} \ No newline at end of file diff --git a/Aaru.Tests/Filesystems/UFS/APM.cs b/Aaru.Tests/Filesystems/UFS/APM.cs new file mode 100644 index 000000000..86f849d42 --- /dev/null +++ b/Aaru.Tests/Filesystems/UFS/APM.cs @@ -0,0 +1,122 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : UFS.cs +// Author(s) : Natalia Portillo +// +// Component : Aaru unit testing. +// +// --[ 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 © 2011-2021 Natalia Portillo +// ****************************************************************************/ + +using System.Collections.Generic; +using System.IO; +using Aaru.CommonTypes; +using Aaru.CommonTypes.Interfaces; +using Aaru.DiscImages; +using Aaru.Filesystems; +using Aaru.Filters; +using NUnit.Framework; + +namespace Aaru.Tests.Filesystems.UFS +{ + [TestFixture] + public class APM + { + readonly string[] _testFiles = + { + "ffs43/darwin_1.3.1.aif", "ffs43/darwin_1.4.1.aif", "ffs43/darwin_6.0.2.aif", "ffs43/darwin_8.0.1.aif", + "ufs1/darwin_1.3.1.aif", "ufs1/darwin_1.4.1.aif", "ufs1/darwin_6.0.2.aif", "ufs1/darwin_8.0.1.aif", + "ufs1/macosx_10.2.aif", "ufs1/macosx_10.3.aif", "ufs1/macosx_10.4.aif" + }; + + readonly ulong[] _sectors = + { + 1024000, 1024000, 1024000, 1024000, 204800, 204800, 204800, 204800, 2097152, 2097152, 2097152 + }; + + readonly uint[] _sectorSize = + { + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512 + }; + + readonly long[] _clusters = + { + 511488, 511488, 511488, 511488, 102368, 102368, 102368, 102368, 1047660, 1038952, 1038952 + }; + + readonly int[] _clusterSize = + { + 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024 + }; + + readonly string[] _volumeName = + { + null, null, null, null, null, null, null, null, null, null, null + }; + + readonly string[] _volumeSerial = + { + null, null, null, null, null, null, null, null, null, null, null + }; + + readonly string[] _type = + { + "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS" + }; + + [Test] + public void Test() + { + for(int i = 0; i < _testFiles.Length; i++) + { + string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (APM)", + _testFiles[i]); + + IFilter filter = new ZZZNoFilter(); + filter.Open(location); + IMediaImage image = new AaruFormat(); + Assert.AreEqual(true, image.Open(filter), _testFiles[i]); + Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); + Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); + List partitions = Core.Partitions.GetAll(image); + IFilesystem fs = new FFSPlugin(); + int part = -1; + + for(int j = 0; j < partitions.Count; j++) + if(partitions[j].Type == "Apple_UFS") + { + part = j; + + break; + } + + Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); + Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); + fs.GetInformation(image, partitions[part], out _, null); + Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); + Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); + Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); + Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); + Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); + } + } + } +} \ No newline at end of file diff --git a/Aaru.Tests/Filesystems/UFS/MBR.cs b/Aaru.Tests/Filesystems/UFS/MBR.cs new file mode 100644 index 000000000..b0350d5a9 --- /dev/null +++ b/Aaru.Tests/Filesystems/UFS/MBR.cs @@ -0,0 +1,143 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : UFS.cs +// Author(s) : Natalia Portillo +// +// Component : Aaru unit testing. +// +// --[ 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 © 2011-2021 Natalia Portillo +// ****************************************************************************/ + +using System.Collections.Generic; +using System.IO; +using Aaru.CommonTypes; +using Aaru.CommonTypes.Interfaces; +using Aaru.DiscImages; +using Aaru.Filesystems; +using Aaru.Filters; +using NUnit.Framework; + +namespace Aaru.Tests.Filesystems.UFS +{ + [TestFixture] + public class MBR + { + readonly string[] _testFiles = + { + "ufs1/linux.aif", "ufs2/linux.aif", "ffs43/darwin_1.3.1.aif", "ffs43/darwin_1.4.1.aif", + "ffs43/darwin_6.0.2.aif", "ffs43/darwin_8.0.1.aif", "ffs43/dflybsd_1.2.0.aif", "ffs43/dflybsd_3.6.1.aif", + "ffs43/dflybsd_4.0.5.aif", "ffs43/netbsd_1.6.aif", "ffs43/netbsd_7.1.aif", "ufs1/darwin_1.3.1.aif", + "ufs1/darwin_1.4.1.aif", "ufs1/darwin_6.0.2.aif", "ufs1/darwin_8.0.1.aif", "ufs1/dflybsd_1.2.0.aif", + "ufs1/dflybsd_3.6.1.aif", "ufs1/dflybsd_4.0.5.aif", "ufs1/freebsd_6.1.aif", "ufs1/freebsd_7.0.aif", + "ufs1/freebsd_8.2.aif", "ufs1/netbsd_1.6.aif", "ufs1/netbsd_7.1.aif", "ufs1/solaris_7.aif", + "ufs1/solaris_9.aif", "ufs2/freebsd_6.1.aif", "ufs2/freebsd_7.0.aif", "ufs2/freebsd_8.2.aif", + "ufs2/netbsd_7.1.aif" + }; + + readonly ulong[] _sectors = + { + 262144, 262144, 1024000, 1024000, 1024000, 1024000, 1024000, 1024000, 1024000, 1024000, 409600, 204800, + 204800, 204800, 204800, 2097152, 2097152, 2097152, 2097152, 8388608, 8388608, 2097152, 1024000, 2097152, + 2097152, 16777216, 16777216, 16777216, 2097152 + }; + + readonly uint[] _sectorSize = + { + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512 + }; + + readonly long[] _clusters = + { + 65024, 65024, 511024, 511024, 511024, 511488, 511950, 255470, 255470, 511992, 204768, 102280, 102280, + 102280, 102368, 1048500, 523758, 523758, 262138, 1048231, 2096462, 524284, 511968, 1038240, 1046808, + 2096472, 2096472, 4192945, 524272 + }; + + readonly int[] _clusterSize = + { + 2048, 2048, 1024, 1024, 1024, 1024, 1024, 2048, 2048, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 2048, 2048, + 4096, 4096, 2048, 2048, 1024, 1024, 1024, 4096, 4096, 2048, 2048 + }; + + readonly string[] _volumeName = + { + null, "VolumeLabel", null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, "VolumeLabel", "VolumeLabel", "VolumeLabel", "" + }; + + readonly string[] _volumeSerial = + { + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null + }; + + readonly string[] _type = + { + "UFS", "UFS2", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", + "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS2", "UFS2", "UFS2", "UFS2" + }; + + [Test] + public void Test() + { + for(int i = 0; i < _testFiles.Length; i++) + { + string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (MBR)", + _testFiles[i]); + + IFilter filter = new ZZZNoFilter(); + filter.Open(location); + IMediaImage image = new AaruFormat(); + Assert.AreEqual(true, image.Open(filter), _testFiles[i]); + Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); + Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); + List partitions = Core.Partitions.GetAll(image); + IFilesystem fs = new FFSPlugin(); + int part = -1; + + for(int j = 0; j < partitions.Count; j++) + if(partitions[j].Type == "0x63" || + partitions[j].Type == "0xA8" || + partitions[j].Type == "0xA5" || + partitions[j].Type == "0xA9" || + partitions[j].Type == "0x82" || + partitions[j].Type == "0x83" || + partitions[j].Type == "4.2BSD Fast File System" || + partitions[j].Type == "Sun boot") + { + part = j; + + break; + } + + Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); + Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); + fs.GetInformation(image, partitions[part], out _, null); + Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); + Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); + Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); + Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); + Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); + } + } + } +} \ No newline at end of file diff --git a/Aaru.Tests/Filesystems/UFS/NeXT Floppy.cs b/Aaru.Tests/Filesystems/UFS/NeXT Floppy.cs new file mode 100644 index 000000000..1540c03d8 --- /dev/null +++ b/Aaru.Tests/Filesystems/UFS/NeXT Floppy.cs @@ -0,0 +1,124 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : UFS.cs +// Author(s) : Natalia Portillo +// +// Component : Aaru unit testing. +// +// --[ 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 © 2011-2021 Natalia Portillo +// ****************************************************************************/ + +using System.Collections.Generic; +using System.IO; +using Aaru.CommonTypes; +using Aaru.CommonTypes.Interfaces; +using Aaru.DiscImages; +using Aaru.Filesystems; +using Aaru.Filters; +using NUnit.Framework; + +namespace Aaru.Tests.Filesystems.UFS +{ + [TestFixture] + public class NeXT_Floppy + { + readonly string[] _testFiles = + { + "nextstep_3.3_mf2dd.img.lz", "nextstep_3.3_mf2hd.img.lz", "openstep_4.0_mf2dd.img.lz", + "openstep_4.0_mf2hd.img.lz", "openstep_4.2_mf2dd.img.lz", "openstep_4.2_mf2hd.img.lz", + "rhapsody_dr1_mf2dd.img.lz", "rhapsody_dr1_mf2hd.img.lz", "rhapsody_dr2_mf2dd.img.lz", + "rhapsody_dr2_mf2hd.img.lz" + }; + + readonly ulong[] _sectors = + { + 1440, 2880, 1440, 2880, 1440, 2880, 1440, 2880, 1440, 2880 + }; + + readonly uint[] _sectorSize = + { + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512 + }; + + readonly long[] _clusters = + { + 624, 1344, 624, 1344, 624, 1344, 624, 1344, 624, 1344 + }; + + readonly int[] _clusterSize = + { + 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024 + }; + + readonly string[] _volumeName = + { + null, null, null, null, null, null, null, null, null, null + }; + + readonly string[] _volumeSerial = + { + null, null, null, null, null, null, null, null, null, null + }; + + readonly string[] _type = + { + "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS" + }; + + [Test] + public void Test() + { + for(int i = 0; i < _testFiles.Length; i++) + { + string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (NeXT)", + _testFiles[i]); + + IFilter filter = new LZip(); + filter.Open(location); + IMediaImage image = new ZZZRawImage(); + Assert.AreEqual(true, image.Open(filter), _testFiles[i]); + Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); + Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); + List partitions = Core.Partitions.GetAll(image); + IFilesystem fs = new FFSPlugin(); + int part = -1; + + for(int j = 0; j < partitions.Count; j++) + if(partitions[j].Type == "4.3BSD" || + partitions[j].Type == "4.4BSD") + { + part = j; + + break; + } + + Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); + Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); + fs.GetInformation(image, partitions[part], out _, null); + Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); + Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); + Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); + Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); + Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); + } + } + } +} \ No newline at end of file diff --git a/Aaru.Tests/Filesystems/UFS/NeXT.cs b/Aaru.Tests/Filesystems/UFS/NeXT.cs new file mode 100644 index 000000000..bbbc24214 --- /dev/null +++ b/Aaru.Tests/Filesystems/UFS/NeXT.cs @@ -0,0 +1,121 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : UFS.cs +// Author(s) : Natalia Portillo +// +// Component : Aaru unit testing. +// +// --[ 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 © 2011-2021 Natalia Portillo +// ****************************************************************************/ + +using System.Collections.Generic; +using System.IO; +using Aaru.CommonTypes; +using Aaru.CommonTypes.Interfaces; +using Aaru.DiscImages; +using Aaru.Filesystems; +using Aaru.Filters; +using NUnit.Framework; + +namespace Aaru.Tests.Filesystems.UFS +{ + [TestFixture] + public class NeXT + { + readonly string[] _testFiles = + { + "nextstep_3.3.aif", "openstep_4.0.aif", "openstep_4.2.aif", "rhapsody_dr1.aif", "rhapsody_dr2.aif" + }; + + readonly ulong[] _sectors = + { + 409600, 409600, 409600, 409600, 409600 + }; + + readonly uint[] _sectorSize = + { + 512, 512, 512, 512, 512 + }; + + readonly long[] _clusters = + { + 204640, 204640, 204640, 204640, 204464 + }; + + readonly int[] _clusterSize = + { + 1024, 1024, 1024, 1024, 1024 + }; + + readonly string[] _volumeName = + { + null, null, null, null, null + }; + + readonly string[] _volumeSerial = + { + null, null, null, null, null + }; + + readonly string[] _type = + { + "UFS", "UFS", "UFS", "UFS", "UFS" + }; + + [Test] + public void Test() + { + for(int i = 0; i < _testFiles.Length; i++) + { + string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (NeXT)", + _testFiles[i]); + + IFilter filter = new ZZZNoFilter(); + filter.Open(location); + IMediaImage image = new AaruFormat(); + Assert.AreEqual(true, image.Open(filter), _testFiles[i]); + Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); + Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); + List partitions = Core.Partitions.GetAll(image); + IFilesystem fs = new FFSPlugin(); + int part = -1; + + for(int j = 0; j < partitions.Count; j++) + if(partitions[j].Type == "4.3BSD" || + partitions[j].Type == "4.4BSD") + { + part = j; + + break; + } + + Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); + Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); + fs.GetInformation(image, partitions[part], out _, null); + Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); + Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); + Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); + Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); + Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); + } + } + } +} \ No newline at end of file diff --git a/Aaru.Tests/Filesystems/UFS/RDB.cs b/Aaru.Tests/Filesystems/UFS/RDB.cs new file mode 100644 index 000000000..5f6876433 --- /dev/null +++ b/Aaru.Tests/Filesystems/UFS/RDB.cs @@ -0,0 +1,120 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : UFS.cs +// Author(s) : Natalia Portillo +// +// Component : Aaru unit testing. +// +// --[ 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 © 2011-2021 Natalia Portillo +// ****************************************************************************/ + +using System.Collections.Generic; +using System.IO; +using Aaru.CommonTypes; +using Aaru.CommonTypes.Interfaces; +using Aaru.DiscImages; +using Aaru.Filesystems; +using Aaru.Filters; +using NUnit.Framework; + +namespace Aaru.Tests.Filesystems.UFS +{ + [TestFixture] + public class RDB + { + readonly string[] _testFiles = + { + "amix.aif" + }; + + readonly ulong[] _sectors = + { + 1024128 + }; + + readonly uint[] _sectorSize = + { + 512 + }; + + readonly long[] _clusters = + { + 511424 + }; + + readonly int[] _clusterSize = + { + 1024 + }; + + readonly string[] _volumeName = + { + null + }; + + readonly string[] _volumeSerial = + { + null + }; + + readonly string[] _type = + { + "UFS" + }; + + [Test] + public void Test() + { + for(int i = 0; i < _testFiles.Length; i++) + { + string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (RDB)", + _testFiles[i]); + + IFilter filter = new ZZZNoFilter(); + filter.Open(location); + IMediaImage image = new AaruFormat(); + Assert.AreEqual(true, image.Open(filter), _testFiles[i]); + Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); + Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); + List partitions = Core.Partitions.GetAll(image); + IFilesystem fs = new FFSPlugin(); + int part = -1; + + for(int j = 0; j < partitions.Count; j++) + if(partitions[j].Type == "\"UNI\\2\"") + { + part = j; + + break; + } + + Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); + Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); + fs.GetInformation(image, partitions[part], out _, null); + Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); + Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); + Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); + Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); + Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); + } + } + } +} \ No newline at end of file diff --git a/Aaru.Tests/Filesystems/UFS/Sun i86.cs b/Aaru.Tests/Filesystems/UFS/Sun i86.cs new file mode 100644 index 000000000..6a4a17caa --- /dev/null +++ b/Aaru.Tests/Filesystems/UFS/Sun i86.cs @@ -0,0 +1,120 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : UFS.cs +// Author(s) : Natalia Portillo +// +// Component : Aaru unit testing. +// +// --[ 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 © 2011-2021 Natalia Portillo +// ****************************************************************************/ + +using System.Collections.Generic; +using System.IO; +using Aaru.CommonTypes; +using Aaru.CommonTypes.Interfaces; +using Aaru.DiscImages; +using Aaru.Filesystems; +using Aaru.Filters; +using NUnit.Framework; + +namespace Aaru.Tests.Filesystems.UFS +{ + [TestFixture] + public class Sun_i86 + { + readonly string[] _testFiles = + { + "solaris_7.aif" + }; + + readonly ulong[] _sectors = + { + 4194304 + }; + + readonly uint[] _sectorSize = + { + 512 + }; + + readonly long[] _clusters = + { + 2063376 + }; + + readonly int[] _clusterSize = + { + 1024 + }; + + readonly string[] _volumeName = + { + null + }; + + readonly string[] _volumeSerial = + { + null + }; + + readonly string[] _type = + { + "UFS" + }; + + [Test] + public void Test() + { + for(int i = 0; i < _testFiles.Length; i++) + { + string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem (SunOS x86)", + _testFiles[i]); + + IFilter filter = new ZZZNoFilter(); + filter.Open(location); + IMediaImage image = new AaruFormat(); + Assert.AreEqual(true, image.Open(filter), _testFiles[i]); + Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); + Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); + List partitions = Core.Partitions.GetAll(image); + IFilesystem fs = new FFSPlugin(); + int part = -1; + + for(int j = 0; j < partitions.Count; j++) + if(partitions[j].Type == "Replacement sectors") + { + part = j; + + break; + } + + Assert.AreNotEqual(-1, part, $"Partition not found on {_testFiles[i]}"); + Assert.AreEqual(true, fs.Identify(image, partitions[part]), _testFiles[i]); + fs.GetInformation(image, partitions[part], out _, null); + Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); + Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); + Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); + Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); + Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); + } + } + } +} \ No newline at end of file diff --git a/Aaru.Tests/Filesystems/UFS/Whole.cs b/Aaru.Tests/Filesystems/UFS/Whole.cs new file mode 100644 index 000000000..1949f6dfd --- /dev/null +++ b/Aaru.Tests/Filesystems/UFS/Whole.cs @@ -0,0 +1,122 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : UFS.cs +// Author(s) : Natalia Portillo +// +// Component : Aaru unit testing. +// +// --[ 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 © 2011-2021 Natalia Portillo +// ****************************************************************************/ + +using System.IO; +using Aaru.CommonTypes; +using Aaru.CommonTypes.Interfaces; +using Aaru.DiscImages; +using Aaru.Filesystems; +using Aaru.Filters; +using NUnit.Framework; + +namespace Aaru.Tests.Filesystems.UFS +{ + [TestFixture] + public class Whole + { + readonly string[] _testFiles = + { + "amix_mf2dd.adf.lz", "netbsd_1.6_mf2hd.img.lz", "att_unix_svr4v2.1_dsdd.img.lz", + "att_unix_svr4v2.1_dshd.img.lz", "att_unix_svr4v2.1_mf2dd.img.lz", "att_unix_svr4v2.1_mf2hd.img.lz", + "solaris_2.4_mf2dd.img.lz", "solaris_2.4_mf2hd.img.lz" + }; + + readonly MediaType[] _mediaTypes = + { + MediaType.CBM_AMIGA_35_DD, MediaType.DOS_35_HD, MediaType.DOS_525_DS_DD_9, MediaType.DOS_525_HD, + MediaType.DOS_35_DS_DD_9, MediaType.DOS_35_HD, MediaType.DOS_35_DS_DD_9, MediaType.DOS_35_HD + }; + + readonly ulong[] _sectors = + { + 1760, 2880, 720, 2400, 1440, 2880, 1440, 2880 + }; + + readonly uint[] _sectorSize = + { + 512, 512, 512, 512, 512, 512, 512, 512 + }; + + readonly long[] _clusters = + { + 880, 2880, 360, 1200, 720, 1440, 711, 1422 + }; + + readonly int[] _clusterSize = + { + 1024, 512, 1024, 1024, 1024, 1024, 1024, 1024 + }; + + readonly string[] _volumeName = + { + null, null, null, null, null, null, null, null + }; + + readonly string[] _volumeSerial = + { + null, null, null, null, null, null, null, null + }; + + readonly string[] _type = + { + "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS", "UFS" + }; + + [Test] + public void Test() + { + for(int i = 0; i < _testFiles.Length; i++) + { + string location = Path.Combine(Consts.TEST_FILES_ROOT, "Filesystems", "UNIX filesystem", _testFiles[i]); + IFilter filter = new LZip(); + filter.Open(location); + IMediaImage image = new ZZZRawImage(); + Assert.AreEqual(true, image.Open(filter), _testFiles[i]); + Assert.AreEqual(_mediaTypes[i], image.Info.MediaType, _testFiles[i]); + Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); + Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); + IFilesystem fs = new FFSPlugin(); + + var wholePart = new Partition + { + Name = "Whole device", + Length = image.Info.Sectors, + Size = image.Info.Sectors * image.Info.SectorSize + }; + + Assert.AreEqual(true, fs.Identify(image, wholePart), _testFiles[i]); + fs.GetInformation(image, wholePart, out _, null); + Assert.AreEqual(_clusters[i], fs.XmlFsType.Clusters, _testFiles[i]); + Assert.AreEqual(_clusterSize[i], fs.XmlFsType.ClusterSize, _testFiles[i]); + Assert.AreEqual(_type[i], fs.XmlFsType.Type, _testFiles[i]); + Assert.AreEqual(_volumeName[i], fs.XmlFsType.VolumeName, _testFiles[i]); + Assert.AreEqual(_volumeSerial[i], fs.XmlFsType.VolumeSerial, _testFiles[i]); + } + } + } +} \ No newline at end of file diff --git a/Aaru.Tests/Filesystems/XFS.cs b/Aaru.Tests/Filesystems/XFS.cs index 7cdcf3f07..3459c0634 100644 --- a/Aaru.Tests/Filesystems/XFS.cs +++ b/Aaru.Tests/Filesystems/XFS.cs @@ -31,14 +31,13 @@ using System.IO; using Aaru.CommonTypes; using Aaru.CommonTypes.Interfaces; using Aaru.DiscImages; -using Aaru.Filesystems; using Aaru.Filters; using NUnit.Framework; namespace Aaru.Tests.Filesystems { [TestFixture] - public class XfsMbr + public class XFS { readonly string[] _testFiles = { @@ -88,7 +87,7 @@ namespace Aaru.Tests.Filesystems Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); List partitions = Core.Partitions.GetAll(image); - IFilesystem fs = new XFS(); + IFilesystem fs = new Aaru.Filesystems.XFS(); int part = -1; for(int j = 0; j < partitions.Count; j++) diff --git a/Aaru.Tests/Filesystems/Xia.cs b/Aaru.Tests/Filesystems/Xia.cs index aad749863..30c480342 100644 --- a/Aaru.Tests/Filesystems/Xia.cs +++ b/Aaru.Tests/Filesystems/Xia.cs @@ -31,14 +31,13 @@ using System.IO; using Aaru.CommonTypes; using Aaru.CommonTypes.Interfaces; using Aaru.DiscImages; -using Aaru.Filesystems; using Aaru.Filters; using NUnit.Framework; namespace Aaru.Tests.Filesystems { [TestFixture] - public class XiaMbr + public class Xia { readonly string[] _testFiles = { @@ -88,7 +87,7 @@ namespace Aaru.Tests.Filesystems Assert.AreEqual(_sectors[i], image.Info.Sectors, _testFiles[i]); Assert.AreEqual(_sectorSize[i], image.Info.SectorSize, _testFiles[i]); List partitions = Core.Partitions.GetAll(image); - IFilesystem fs = new Xia(); + IFilesystem fs = new Aaru.Filesystems.Xia(); int part = -1; for(int j = 0; j < partitions.Count; j++)