Esempio n. 1
0
        /// <summary>
        /// Runs an individual algorithm.
        /// </summary>
        /// <param name="algorithmContext">Algorithm context</param>
        /// <param name="algorithmStrategy">Algorithm to run</param>
        static int RunIndividualAlgorithm(AlgorithmContext algorithmContext, IAlgorithmStrategy algorithmStrategy)
        {
            algorithmContext.AlgorithmStrategy = algorithmStrategy;
            var missCount = algorithmContext.Execute();

            return(missCount);
        }
Esempio n. 2
0
        public void AfterSwitchCurrentAlgorithmIsAlgorithmTwo()
        {
            var context = AlgorithmContext.GetInitialised <AlgorithmOne>(CultureInfo.GetCultureInfo("en-GB"));

            context.Switch <AlgorithmTwo>();

            Assert.Equal(typeof(AlgorithmTwo), context.CurrentAlgorithmType);
        }
Esempio n. 3
0
 protected SqlServerOperation(IDatabaseConfiguration configuration)
 {
     if (configuration == null)
     {
         throw new ArgumentNullException();
     }
     Context = new AlgorithmContext(configuration);
 }
        public void ReturnsExpectedOutput(double input, string expectedOutput)
        {
            var context = AlgorithmContext.GetInitialised <AlgorithmOne>(CultureInfo.GetCultureInfo("en-GB"));

            var output = context.Withdraw(input);

            Assert.Equal(expectedOutput, output.Output);
        }
        public void BalanceIsUpdatedCorrectly(double input, double expectedOutput)
        {
            var context = AlgorithmContext.GetInitialised <AlgorithmTwo>(CultureInfo.GetCultureInfo("en-GB"));

            _ = context.Withdraw(input);

            Assert.Equal(expectedOutput, context.Balance);
        }
Esempio n. 6
0
 public Algorithm(AlgorithmContext context)
 {
     _context             = context;
     _context.Terminated += (sender, e) =>
     {
         Terminate();
     };
 }
        public void WithdrawReturnsMsgIfAmountGreaterThanBalance()
        {
            var context = AlgorithmContext.GetInitialised <AlgorithmOne>(CultureInfo.GetCultureInfo("en-GB"));

            var input  = 5000;
            var output = context.Withdraw(input);

            Assert.Equal("Insufficient funds!", output.Output);
        }
        public void WithdrawReturnsBalanceEqualToContextBalance()
        {
            var context = AlgorithmContext.GetInitialised <AlgorithmOne>(CultureInfo.GetCultureInfo("en-GB"));

            var input  = 5000;
            var output = context.Withdraw(input);

            Assert.Equal(context.Balance, output.Balance);
        }
Esempio n. 9
0
    public void Process(float[] imagedata)
    {
        var Task1 = Task.Run(() =>
        {
            using (var ctx = new AlgorithmContext("Context 1"))
            {
                SmoothImage smoothImage   = new SmoothImage(ctx);
                SharpenImage sharpenImage = new SharpenImage(ctx);
            }
        });

        // ...
        Task.WaitAll(Task1, Task2, Task3);
    }
Esempio n. 10
0
        static void Main(string[] args)
        {
            CultureInfo culture = CultureInfo.CreateSpecificCulture("en-GB");

            var context = AlgorithmContext.GetInitialised <AlgorithmOne>(culture);

            //context.Switch<AlgorithmOne>();
            //context.Switch<AlgorithmTwo>();

            while (true)
            {
                MakeAWithdrawl(context);

                Console.WriteLine();
                Console.Write("Another withdrawal? (Y/N): ");
                var info = Console.ReadKey();
                if (info.Key == ConsoleKey.N)
                {
                    break;
                }

                Console.Clear();
            }
        }
 public InterviewQuestionController(AlgorithmContext context)
 {
     _algorithmContext = context;
 }
Esempio n. 12
0
        /// <summary>
        /// Starts the program.
        /// </summary>
        /// <param name="options">Input parameters</param>
        static void RunOptions(Options options)
        {
            if (CheckOptions(options))
            {
                var virtualMemory    = new VirtualMemory(options.VirtualMemoryCapacity, options.PageCount);
                var pageSequence     = File.ReadAllLines(options.PageSequenceFile);
                var algorithmContext = new AlgorithmContext(virtualMemory, pageSequence);
                switch (options.Algorithm)
                {
                case "FIFO":
                    var missCount = RunIndividualAlgorithm(algorithmContext, new FirstInFirstOut());
                    Console.WriteLine($"Cantidad de misses FIFO: {missCount}");
                    break;

                case "LRU":
                    missCount = RunIndividualAlgorithm(algorithmContext, new LeastRecentlyUsed());
                    Console.WriteLine($"Cantidad de misses LRU: {missCount}");
                    break;

                case "CLK":
                    missCount = RunIndividualAlgorithm(algorithmContext, new Clock());
                    Console.WriteLine($"Cantidad de misses CLK: {missCount}");
                    break;

                case "ALL":
                    var currentMin          = int.MaxValue;
                    var currentMinAlgorithm = "Ninguno";
                    // Execute FIFO
                    var missCountFIFO = RunIndividualAlgorithm(algorithmContext, new FirstInFirstOut());
                    if (missCountFIFO < currentMin)
                    {
                        currentMin          = missCountFIFO;
                        currentMinAlgorithm = "FIFO";
                    }
                    // Execute LRU
                    var virtualMemory2 = new VirtualMemory(options.VirtualMemoryCapacity, options.PageCount);
                    algorithmContext.VirtualMemory = virtualMemory2;
                    var missCountLRU = RunIndividualAlgorithm(algorithmContext, new LeastRecentlyUsed());
                    if (missCountLRU < currentMin)
                    {
                        currentMin          = missCountLRU;
                        currentMinAlgorithm = "LRU";
                    }
                    // Execute CLK
                    var virtualMemory3 = new VirtualMemory(options.VirtualMemoryCapacity, options.PageCount);
                    algorithmContext.VirtualMemory = virtualMemory3;
                    var missCountCLK = RunIndividualAlgorithm(algorithmContext, new Clock());
                    if (missCountCLK < currentMin)
                    {
                        currentMin          = missCountCLK;
                        currentMinAlgorithm = "CLK";
                    }
                    // Print results
                    Console.WriteLine($"Cantidad de misses FIFO: {missCountFIFO}");
                    Console.WriteLine($"Cantidad de misses LRU: {missCountLRU}");
                    Console.WriteLine($"Cantidad de misses CLK: {missCountCLK}");
                    Console.WriteLine($"{currentMinAlgorithm} es el que tiene menos misses.");
                    break;
                }
            }
        }
 protected SqlServerOperation(IDatabaseConfiguration configuration)
 {
     if (configuration == null)
         throw new ArgumentNullException();
     Context = new AlgorithmContext(configuration);
 }
 public AlgorithmController(AlgorithmContext context)
 {
     _algorithmContext = context;
 }
        public void InitialBalanceEqual4638()
        {
            var context = AlgorithmContext.GetInitialised <AlgorithmOne>(CultureInfo.GetCultureInfo("en-GB"));

            Assert.Equal(4638.00, context.Balance);
        }
Esempio n. 16
0
 public SmoothImage(AlgorithmContext context) : base(context)
 {
 }
Esempio n. 17
0
        public void DefaultAlgorithmIsAlgorithmOne()
        {
            var context = AlgorithmContext.GetInitialised <AlgorithmOne>(CultureInfo.GetCultureInfo("en-GB"));

            Assert.Equal(typeof(AlgorithmOne), context.CurrentAlgorithmType);
        }
Esempio n. 18
0
 public SharpenImage(AlgorithmContext context) : base(context)
 {
 }