Advertisement
Lusien_Lashans

CVs

Feb 18th, 2017
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.04 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using NUnit.Framework;
  4.  
  5. namespace Clones
  6. {
  7.     public class CloneVersionSystem : ICloneVersionSystem
  8.     {
  9.         public string Execute(string query)
  10.         {
  11.             var segments = query.Split(' ');
  12.             var command = segments[0];
  13.             var ci = int.Parse(segments[1]);
  14.             switch (command)
  15.             {
  16.                 case "learn":
  17.                     var pi = int.Parse(segments[2]);
  18.                     Trooper.Learn(ci, pi);
  19.                     return null;
  20.                 case "relearn":
  21.                     Trooper.Relearn(ci);
  22.                     return null;
  23.                 case "rollback":
  24.                     Trooper.Rollback(ci);
  25.                     return null;
  26.                 case "clone":
  27.                     Trooper.CloneIt(ci);
  28.                     return null;
  29.                 case "check":
  30.                     return Trooper.CheckIt(ci);
  31.  
  32.                 default: throw new ArgumentException();
  33.             }
  34.  
  35.         }
  36.     }
  37.     public class Trooper
  38.     {
  39.         public static List<Trooper> SoldiersList = new List<Trooper>();
  40.         public Stack<int> ActivatedPrograms = new Stack<int>();
  41.         public Stack<int> CanceledPrograms = new Stack<int>();
  42.  
  43.         public static void Learn(int number, int program)
  44.         {
  45.             CaseOfNull(SoldiersList, number);
  46.             var soldier = SoldiersList[number];
  47.             soldier.ActivatedPrograms.Push(program);
  48.         }
  49.  
  50.         public static void Relearn(int number)
  51.         {
  52.             CaseOfNull(SoldiersList, number);
  53.             var soldier = SoldiersList[number];
  54.             if (soldier.CanceledPrograms.Count > 0)
  55.                 soldier.ActivatedPrograms.Push(soldier.CanceledPrograms.Pop());
  56.         }
  57.  
  58.         public static void Rollback(int number)
  59.         {
  60.             CaseOfNull(SoldiersList, number);
  61.             var soldier = SoldiersList[number];
  62.             if (soldier.ActivatedPrograms.Count > 0)
  63.                 soldier.CanceledPrograms.Push(soldier.ActivatedPrograms.Pop());
  64.         }
  65.  
  66.         public static void CloneIt(int number)
  67.         {
  68.             CaseOfNull(SoldiersList, number);
  69.             var soldier = SoldiersList[number];
  70.             SoldiersList.Add(new Trooper()
  71.             {
  72.                 ActivatedPrograms = soldier.ActivatedPrograms,
  73.                 CanceledPrograms = soldier.CanceledPrograms
  74.             });
  75.         }
  76.  
  77.         public static string CheckIt(int number)
  78.         {
  79.             CaseOfNull(SoldiersList, number);
  80.             var soldier = SoldiersList[number];
  81.             if (soldier.ActivatedPrograms.Count > 0)
  82.              {
  83.                  var lastProgram = soldier.ActivatedPrograms.Peek();
  84.                  return lastProgram.ToString();
  85.              }
  86.             return "basic";
  87.         }
  88.         private static void CaseOfNull(List<Trooper> soldiersList, int number)
  89.         {
  90.             if (soldiersList[number] == null)
  91.                 soldiersList.Add(new Trooper());
  92.         }
  93.  
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement