예제 #1
0
        public void InvalidDiskSize(int diskSizeMiB, TOSVersion tosVersion)
        {
            AtariDiskSettings diskSettings = new AtariDiskSettings()
            {
                DiskSizeMiB          = diskSizeMiB,
                DiskTOSCompatibility = tosVersion,
                RootDirectorySectors = 8
            };

            Assert.That(() => { new DiskParameters(".", diskSettings, _logger.Object); },
                        Throws.TypeOf <ArgumentException>()
                        .With.Message.Contains($"{diskSizeMiB}MiB is larger than the maximum possible disk size"));
        }
예제 #2
0
        public void GetDiskClusters(int diskSizeMiB, int expectedClusters, TOSVersion tosVersion)
        {
            AtariDiskSettings diskSettings = new AtariDiskSettings()
            {
                DiskSizeMiB          = diskSizeMiB,
                DiskTOSCompatibility = tosVersion,
                RootDirectorySectors = 8
            };

            diskParams = new DiskParameters(".", diskSettings, _logger.Object);

            int diskClusters = diskParams.DiskClusters;

            Assert.AreEqual(expectedClusters, diskClusters);
        }
예제 #3
0
        public void GetBytesPerSector(int diskSizeMiB, int expectedBytesPerSector, TOSVersion tosVersion)
        {
            AtariDiskSettings diskSettings = new AtariDiskSettings()
            {
                DiskSizeMiB          = diskSizeMiB,
                DiskTOSCompatibility = tosVersion,
                RootDirectorySectors = 8
            };

            diskParams = new DiskParameters(".", diskSettings, _logger.Object);

            int bytesPerSector = diskParams.BytesPerSector;

            Assert.AreEqual(expectedBytesPerSector, bytesPerSector);
        }
예제 #4
0
        public void GetSectorsPerFat(int diskSizeMiB, int expectedSectorsPerFat, TOSVersion tosVersion)
        {
            AtariDiskSettings diskSettings = new AtariDiskSettings()
            {
                DiskSizeMiB          = diskSizeMiB,
                DiskTOSCompatibility = tosVersion,
                RootDirectorySectors = 8
            };

            diskParams = new DiskParameters(".", diskSettings, _logger.Object);

            int sectorsPerFat = diskParams.SectorsPerFat;

            Assert.AreEqual(expectedSectorsPerFat, sectorsPerFat);
        }
예제 #5
0
        public void ValidDiskSizes(TOSVersion tosVersion, int expectedMaxDiskSizeBytes)
        {
            var maxDiskSizeBytes = FAT16Helper.MaxDiskSizeBytes(tosVersion, _sectorsPerCluster);

            Assert.AreEqual(expectedMaxDiskSizeBytes, maxDiskSizeBytes);
        }
예제 #6
0
 public static int MaxDiskSizeBytes(TOSVersion tosVersion, int sectorsPerCluster)
 {
     return(MaxDiskClusters(tosVersion) * (MaxSectorSize * sectorsPerCluster));
 }
예제 #7
0
 public static int MaxDiskClusters(TOSVersion minimumTOSVersion)
 {
     return(minimumTOSVersion == TOSVersion.TOS100 ? 0x3FFF : 0x7FFF);
 }