public void MethodsTest()
        {
            var bat  = new TankBattalion <Tank>(tanks);
            var tank = new Tank(new RussianFactory(), TypeOfArmor.Dynamic, TypeOfGun.Artillery, TypeOfEngine.Diesel);

            bat.Add(tank);
            Assert.AreEqual(5, bat.Count);

            Assert.True(bat.Contains(tank));

            bat[0] = tank;
            Assert.AreEqual(tank, bat[0]);

            bat.Remove(tank);
            Assert.AreEqual(4, bat.Count);

            bat.Clear();
            Assert.AreEqual(0, bat.Count);

            Assert.DoesNotThrow(() =>
            {
                var enumerator = bat.GetEnumerator();
            });

            Assert.IsFalse(bat.IsReadOnly);
        }
 public void Serialize(TankBattalion <T> tank, string filePath)
 {
     using (Stream fStream = new FileStream(filePath,
                                            FileMode.Create, FileAccess.Write, FileShare.None))
     {
         _binFormat.Serialize(fStream, tank);
     }
 }
        public void SortTest()
        {
            var bat = new TankBattalion <Tank>(tanks);

            bat.Sort();

            Assert.IsTrue(bat[0].typeOfArmor == TypeOfArmor.Composite);
        }
示例#4
0
        public void Serialize(TankBattalion <T> tank, string filePath)
        {
            var wrap = new TankPack <T>(tank);

            using (Stream fStream = new FileStream(filePath,
                                                   FileMode.Create, FileAccess.Write, FileShare.None))
            {
                xml.Serialize(fStream, wrap);
            }
        }
示例#5
0
        public void Serialize(TankBattalion <T> tank, string filePath)
        {
            TankPack <T> wrap = new TankPack <T>(tank);
            var          jset = new JsonSerializerSettings()
            {
                TypeNameHandling = TypeNameHandling.All
            };
            var json = JsonConvert.SerializeObject(wrap, jset);

            File.WriteAllText(filePath, json);
        }
示例#6
0
        public void Init()
        {
            var tanks = new List <Tank>
            {
                new Tank(new RussianFactory(), TypeOfArmor.Dynamic, TypeOfGun.Artillery, TypeOfEngine.Gasturbine),
                new Tank(new AmericanFactory(), TypeOfArmor.Composite, TypeOfGun.Artillery, TypeOfEngine.Gasturbine),
                new Tank(new RussianFactory(), TypeOfArmor.Dynamic, TypeOfGun.Tank, TypeOfEngine.Gasturbine),
                new Tank(new RussianFactory(), TypeOfArmor.Dynamic, TypeOfGun.Artillery, TypeOfEngine.Diesel),
            };

            bat = new TankBattalion <Tank>(tanks);
        }
 public TankBattalion <T> Deserialize(string filePath)
 {
     using (var fs = new FileStream(filePath, FileMode.Open))
     {
         TankBattalion <T> bat = (TankBattalion <T>)_binFormat.Deserialize(fs);
         foreach (Tank t in bat)
         {
             t.SetComponents();
         }
         return(bat);
     }
 }
示例#8
0
        /// <summary>
        /// Метод перевода коллекции в json-строку
        /// </summary>
        /// <typeparam name="T">Тип обобощенной коллекции</typeparam>
        /// <param name="bat">Коллекция</param>
        /// <returns>json-строка с объектами коллекции</returns>
        public static string ConvertToString <T>(this TankBattalion <T> bat) where T : Tank
        {
            ExtensionLogger.Log("Вызван метод конвертации коллекции в строку");
            TankPack <T> wrap = new TankPack <T>(bat);
            var          jset = new JsonSerializerSettings()
            {
                TypeNameHandling = TypeNameHandling.All
            };
            var json = JsonConvert.SerializeObject(wrap, jset);

            return(json);
        }
示例#9
0
        static void Main(string[] args)
        {
            RussianFactory russianFactory = new RussianFactory();

            TankBattalion <Tank> tankBattalion = new TankBattalion <Tank>(2);

            foreach (Tank tank in tankBattalion.FindTanksWithGunStrength(50))
            {
                tank.GetStatus();
            }
            Console.WriteLine(tankBattalion.ConvertToString());

            Console.Read();
        }
示例#10
0
        public TankBattalion <T> Deserialize(string filePath)
        {
            var json = File.ReadAllText(filePath);
            var jset = new JsonSerializerSettings()
            {
                TypeNameHandling = TypeNameHandling.All
            };
            var wrap = JsonConvert.DeserializeObject <TankPack <T> >(json, jset);
            var bar  = new TankBattalion <T>(wrap.tanks);

            foreach (Tank t in bar)
            {
                t.SetComponents();
            }
            return(bar);
        }
示例#11
0
        public TankBattalion <T> Deserialize(string filePath)
        {
            TankPack <T> wrap;

            using (Stream fStream = new FileStream(filePath, FileMode.Open))
            {
                wrap = (TankPack <T>)xml.Deserialize(fStream);
            }
            var temp = wrap.tanks.Select(tank => (T)tank).ToList();
            TankBattalion <T> bat = new TankBattalion <T>(temp);

            foreach (Tank t in bat)
            {
                t.SetComponents();
            }
            return(bat);
        }
示例#12
0
 /// <summary>
 /// Специальный конструктор который по Номеру Типа автоматически создает конкретный заполненный Юнит
 /// 1 - Группа Быкова
 /// 2 - Японцы
 /// 3 - Танки
 /// </summary>
 /// <param name="poligon">Область Юнита</param>
 /// <param name="type">Номер Типа</param>
 public Unit(ConvexPolygon poligon, int type)
 {
     Polygon = poligon;
     if (type == 1) // Тип 1
     {
         props    = BikovGroup.BikovFea();
         UnitType = UnitType.Infantry;
     }
     if (type == 2) // Тип 2
     {
         props    = JapaneseGroup.JapaneseGroupFea();
         UnitType = UnitType.Infantry;
     }
     if (type == 3)  // Тип 3
     {
         props    = TankBattalion.TankBattalionFea();
         UnitType = UnitType.Armor;
     }
 }
示例#13
0
        public void BattalionGenTest()
        {
            var bat = new TankBattalion <Tank>(10);

            CollectionAssert.AllItemsAreNotNull(bat.tanks);
        }
示例#14
0
        public void PrintTest()
        {
            var bat = new TankBattalion <Tank>(tanks);

            Assert.DoesNotThrow(() => bat.PrintTanks());
        }
示例#15
0
        public void CreateTest()
        {
            var bat = new TankBattalion <Tank>(tanks);

            Assert.AreEqual(4, bat.Count);
        }
示例#16
0
 /// <summary>
 /// Поиск всех таков с заданым уровнем силы оружия
 /// </summary>
 /// <typeparam name="T">Тип коллекции</typeparam>
 /// <param name="bat">Коллекция</param>
 /// <param name="strength">Сила</param>
 /// <returns>Список танков</returns>
 public static List <T> FindTanksWithGunStrength <T>(this TankBattalion <T> bat, int strength)
     where T : Tank
 {
     ExtensionLogger.Log("Вызван метод расширения найти танк с максимальной силой оружия");
     return(bat.Where(t => t.gun.strength == strength).ToList());
 }
示例#17
0
 public TankPack(TankBattalion <T> tank)
 {
     tanks = tank.tanks;
 }