示例#1
0
        public void TestAnteriorMaiorMaximo()
        {
            decimal cilindroMaximo = 300;
            decimal cilindroTeste  = 350;

            Algoritimos alg = new Sstf(cilindroMaximo);

            alg.cilindroAnterior = cilindroTeste;
        }
示例#2
0
        public void TestAtualIgualMaximo()
        {
            decimal cilindroMaximo = 300;
            decimal cilindroTeste  = 300;

            Algoritimos alg = new Sstf(cilindroMaximo);

            alg.cilindroAtual = cilindroTeste;
        }
示例#3
0
        public void TestSentidoParado()
        {
            decimal     cilindroAnterior = 0;
            decimal     cilindroAtual    = 0;
            Algoritimos alg = new Sstf(this.cilindroMaximo);

            alg.cilindroAnterior = cilindroAnterior;
            alg.cilindroAtual    = cilindroAtual;

            Assert.AreEqual("Parado", alg.getSentido());
        }
示例#4
0
        public void TestSentidoIndoBorda()
        {
            decimal     cilindroAnterior = 0;
            decimal     cilindroAtual    = 299;
            Algoritimos alg = new Sstf(this.cilindroMaximo);

            alg.cilindroAnterior = cilindroAnterior;
            alg.cilindroAtual    = cilindroAtual;

            Assert.AreEqual("Indo para a borda", alg.getSentido());
        }
示例#5
0
        public void TestSentidoIntroTrilha0Intermediario()
        {
            decimal     cilindroAnterior = 43;
            decimal     cilindroAtual    = 30;
            Algoritimos alg = new Sstf(this.cilindroMaximo);

            alg.cilindroAnterior = cilindroAnterior;
            alg.cilindroAtual    = cilindroAtual;

            Assert.AreEqual("Indo para a trilha 0", alg.getSentido());
        }
示例#6
0
        public void TestExercicio2Sequencia()
        {
            String  seqExercicio     = "86,1470,913,1774,948,1509,1022,1750,130";
            decimal cilindroAnterior = 125;
            decimal cilindroAtual    = 143;
            Sstf    alg = new Sstf(5000);
            String  seqLeitura;

            alg.cilindroAnterior = Convert.ToInt32(cilindroAnterior);
            alg.cilindroAtual    = Convert.ToInt32(cilindroAtual);
            alg.setSequencia(seqExercicio);

            alg.processa();

            seqLeitura = alg.getSequenciaLeitura();

            Assert.AreEqual("130,86,913,948,1022,1470,1509,1750,1774", seqLeitura);
        }
示例#7
0
        public void TestExercicio2Distancia()
        {
            String  seqExercicio     = "86,1470,913,1774,948,1509,1022,1750,130";
            decimal cilindroAnterior = 125;
            decimal cilindroAtual    = 143;
            Sstf    alg       = new Sstf(5000);
            int     distancia = 0;

            alg.cilindroAnterior = Convert.ToInt32(cilindroAnterior);
            alg.cilindroAtual    = Convert.ToInt32(cilindroAtual);
            alg.setSequencia(seqExercicio);

            alg.processa();

            distancia = alg.getDistancia();

            Assert.AreEqual(1745, distancia);
        }
示例#8
0
        public void TestSequenciaLeitura()
        {
            String  seqExercicio     = "68,14,6,28,130,94,6,42";
            decimal cilindroAnterior = 37;
            decimal cilindroAtual    = 20;
            Sstf    alg = new Sstf(300);
            String  seqLeitura;

            alg.cilindroAnterior = Convert.ToInt32(cilindroAnterior);
            alg.cilindroAtual    = Convert.ToInt32(cilindroAtual);
            alg.setSequencia(seqExercicio);

            alg.processa();

            seqLeitura = alg.getSequenciaLeitura();

            Assert.AreEqual("14,6,6,28,42,68,94,130", seqLeitura);
        }
示例#9
0
        public void TestNumeroCilindros()
        {
            String  seqExercicio     = "68,14,6,28,130,94,6,42";
            decimal cilindroAnterior = 37;
            decimal cilindroAtual    = 20;
            Sstf    alg       = new Sstf(300);
            int     distancia = 0;

            alg.cilindroAnterior = Convert.ToInt32(cilindroAnterior);
            alg.cilindroAtual    = Convert.ToInt32(cilindroAtual);
            alg.setSequencia(seqExercicio);

            alg.processa();

            distancia = alg.getDistancia();

            Assert.AreEqual(138, distancia);
        }
示例#10
0
        static void Main(string[] args)
        {
            //var lines = File.ReadAllLines("teste1.txt").Select(x => int.Parse(x)).ToList();

            //var disc = new Disk();
            //disc.SetQueue(lines.Skip(2).ToList());
            //disc.HeadPosition = lines[1];
            //disc.Size = lines[0];

            ////var fcfs = new Fcfs(disc);

            ////fcfs.Resolve();
            ////fcfs.Print();


            ////var sstf = new Sstf(disc);

            ////sstf.Resolve();
            ////sstf.Print();

            //var scan = new Scan(disc);

            //scan.Resolve();
            //scan.Print();


inicio:
            string path = "";

            while (true)
            {
                Console.WriteLine("Digite o nome do arquivo:");
                path = Console.ReadLine();
                if (path.Equals("SAIR", StringComparison.InvariantCultureIgnoreCase))
                {
                    Environment.Exit(0);
                }
                if (!File.Exists(path))
                {
                    Console.WriteLine($"Arquivo não encontrado em: {path}");
                    continue;
                }

                break;
            }

            var lines = File.ReadAllLines(path).Select(x => int.Parse(x)).ToList();
            var disc  = new Disk();

            disc.SetQueue(lines.Skip(2).ToList());
            disc.HeadPosition = lines[1];
            disc.Size         = lines[0];


            var fcfs = new Fcfs(disc);
            var scan = new Scan(disc);
            var sstf = new Sstf(disc);

            string outputText = "";

            fcfs.Resolve();
            outputText += fcfs.Print() + Environment.NewLine;
            disc.Free();
            sstf.Resolve();
            outputText += sstf.Print() + Environment.NewLine;
            disc.Free();
            scan.Resolve();
            outputText += scan.Print() + Environment.NewLine;

            var output = path.Replace(".txt", "_resolved.txt");

            File.WriteAllText(output, outputText);
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine($"ARQUIVO GERADO: {output}");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Digite SAIR para sair.");
            Console.WriteLine();
            goto inicio;
        }