Exemplo n.º 1
0
        public ActionResult GetCode(FormCollection codeCollection)
        {
            DateTime date;
            ulong    account;

            if (!DateTime.TryParse(ViewBag.RegDate = codeCollection["regDate"], out date))
            {
                ViewBag.Answer = "Неправильная дата";
                return(View());
            }

            if (!ulong.TryParse(ViewBag.PersAcc = codeCollection["persAcc"], out account))
            {
                ViewBag.Answer = "Счет должен быть целым числом!";
                return(View());
            }

            var heatObj = new HeatObject()
            {
                objName         = ViewBag.ObjName = codeCollection["objName"],
                personalAccount = account,
                registryDate    = date
            };

            try
            {
                switch (codeCollection["algoType"])
                {
                case "Simple":
                    ViewBag.Answer = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
                    break;

                case "Hex":
                    ViewBag.Answer = HeatObjectCodeGenerator.GetHexCode(heatObj);
                    break;

                default:
                    ViewBag.Answer = "Ошибка!";
                    break;
                }
            }
            catch (Exception ex)
            {
                ViewBag.Answer = ex.Message;
            }

            return(View());
        }
        public void TestGetCode_CorrectDefaultDateAndInt()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName = "ОТ1"
            };
            var expectedCodeS = "S010101ОТ1-0";
            var expectedCodeH = "HОТ1-0-65";

            //Act
            var actualCodeS = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCodeH = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCodeS);
            Assert.Equal(expectedCodeH, actualCodeH);
        }
        public void TestGetSimpleCode_IncorrectNameEmpty()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = String.Empty,
                personalAccount = 12345,
                registryDate    = new DateTime(2014, 3, 4)
            };

            //Act
            var actualExS = Assert.Throws <ArgumentNullException>(() => HeatObjectCodeGenerator.GetSimpleCode(heatObj));
            var actualExH = Assert.Throws <ArgumentNullException>(() => HeatObjectCodeGenerator.GetHexCode(heatObj));

            //Assert
            Assert.Contains("Наименование объекта не может быть пусто", actualExS.Message);
            Assert.Contains("Наименование объекта не может быть пусто", actualExH.Message);
        }
        public void TestGetSimpleCode_CorrectLongName()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = "ThisIsLongObjectName",
                personalAccount = 590,
                registryDate    = new DateTime(2019, 01, 31)
            };
            var expectedCodeS = "S310119ThisIsLongO";
            var expectedCodeH = "HThisIs-590-77";

            //Act
            var actualCodeS = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCodeH = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCodeS);
            Assert.Equal(expectedCodeH, actualCodeH);
        }
        public void TestGetCode_CorrectSimple()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = "ОТ123",
                personalAccount = 156,
                registryDate    = new DateTime(2019, 10, 1)
            };
            var expectedCodeS = "S011019ОТ123-156";
            var expectedCodeH = "HОТ123-156-3FB";

            //Act
            var actualCode  = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCode2 = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCode);
            Assert.Equal(expectedCodeH, actualCode2);
        }
        public void TestGetSimpleCode_CorrectMaxDate()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = "HO09",
                personalAccount = 45,
                registryDate    = DateTime.MaxValue
            };

            var expectedCodeS = "S311299HO09-45";
            var expectedCodeH = "HHO09-45-513";

            //Act
            var actualCodeS = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCodeH = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCodeS);
            Assert.Equal(expectedCodeH, actualCodeH);
        }
        public void TestGetSimpleCode_CorrectLongBoth()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = "LooooooooooooooooooongName",
                personalAccount = ulong.MaxValue,
                registryDate    = new DateTime(2020, 01, 01)
            };
            string codeUlong = ulong.MaxValue.ToString();

            var expectedCodeS = "S010120Loooooooooo";
            var expectedCodeH = $"HLooooo-{codeUlong.Remove(HeatObjectCodeGenerator.maxNameHexLength)}-78";

            //Act
            var actualCodeS = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCodeH = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCodeS);
            Assert.Equal(expectedCodeH, actualCodeH);
        }
        public void TestGetSimpleCode_CorrectLongAccount()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = "Obj34",
                personalAccount = ulong.MaxValue,
                registryDate    = new DateTime(2020, 01, 01)
            };
            string codeUlong = ulong.MaxValue.ToString();

            //MaxValue теоретически может меняться, поэтому пусть так
            var expectedCodeS = $"S010120Obj34-{codeUlong}".Remove(HeatObjectCodeGenerator.maxCountOfDigits);
            var expectedCodeH = $"HObj34-{codeUlong.Remove(HeatObjectCodeGenerator.maxNameHexLength)}-78";

            //Act
            var actualCodeS = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCodeH = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCodeS);
            Assert.Equal(expectedCodeH, actualCodeH);
        }