Пример #1
0
        public void IsBorder_CorrectBorder()
        {
            // добавил ProgramImage, Calculater
            ProgramImage image = new ProgramImage();
            Bitmap       map   = new Bitmap(800, 600);

            for (int I = 0; I < 800; I++)
            {
                for (int J = 0; J < 600; J++)
                {
                    map.SetPixel(I, J, Color.Black);
                }
            }
            image.AddNewImage(map);
            Calculater item          = new Calculater(image);
            bool       correctanswer = true;
            int        h             = 3;
            int        w             = 3;
            int        x             = 1;
            int        y             = 1;

            //ProgramImage item = new ProgramImage();
            int[,] matrix = new int[w, h];
            for (int I = 0; I < w; I++)
            {
                for (int J = 0; J < h; J++)
                {
                    matrix[1, 1] = 1;
                }
            }
            Assert.AreEqual(item.IsBorder(matrix, x, y, h, w), correctanswer);
        }
Пример #2
0
        public void ColourComponent_InvalidPoint()
        {
            int          correctanswer = -1;
            ProgramImage item          = new ProgramImage();
            Bitmap       map           = new Bitmap(1, 1);

            map.SetPixel(0, 0, Color.FromArgb(255, 255, 255));
            int x1 = -1;
            int y1 = 0;
            int x2 = -1;
            int y2 = -1;
            int x3 = 0;
            int y3 = -1;
            int x4 = -1;
            int y4 = -1;
            int x5 = 1;
            int y5 = 0;
            int x6 = 1;
            int y6 = 1;
            int x7 = 0;
            int y7 = 1;
            int x8 = 1;
            int y8 = 1;

            Assert.AreEqual(item.ColourComponent(map, x1, y1), correctanswer);
            Assert.AreEqual(item.ColourComponent(map, x2, y2), correctanswer);
            Assert.AreEqual(item.ColourComponent(map, x3, y3), correctanswer);
            Assert.AreEqual(item.ColourComponent(map, x4, y4), correctanswer);
            Assert.AreEqual(item.ColourComponent(map, x5, y5), correctanswer);
            Assert.AreEqual(item.ColourComponent(map, x6, y6), correctanswer);
            Assert.AreEqual(item.ColourComponent(map, x7, y7), correctanswer);
            Assert.AreEqual(item.ColourComponent(map, x8, y8), correctanswer);
        }
Пример #3
0
        private void LoadAndRun()
        {
            string fileName = vm.PhysicalMemory.GetString(vm.Processor.DS, (ushort)vm.Processor.DX, 256, 0);
            var    filePath = new VirtualPath(fileName);

            var program = ProgramImage.Load(fileName, this.vm);

            if (vm.Processor.ES == 0)
            {
                LoadImage(program);
            }
            else
            {
                ushort envSegment     = vm.PhysicalMemory.GetUInt16(vm.Processor.ES, (ushort)vm.Processor.BX);
                ushort cmdLineOffset  = vm.PhysicalMemory.GetUInt16(vm.Processor.ES, (ushort)vm.Processor.BX + 2u);
                ushort cmdLineSegment = vm.PhysicalMemory.GetUInt16(vm.Processor.ES, (ushort)vm.Processor.BX + 4u);

                string cmdLineArgs = null;
                if (cmdLineSegment != 0)
                {
                    int count = vm.PhysicalMemory.GetByte(cmdLineSegment, cmdLineOffset);
                    if (count > 0)
                    {
                        cmdLineArgs = vm.PhysicalMemory.GetString(cmdLineSegment, cmdLineOffset + 1u, count);
                    }
                }

                LoadImage(program, envSegment, cmdLineArgs);
            }
        }
Пример #4
0
        public void ContrastPixelNoChange()
        {
            ProgramImage item = new ProgramImage();
            int          r    = 127;
            int          res  = 0;
            int          n    = 0;

            res = item.ContrastPixel(r, n);
            Assert.AreEqual(r, res);
        }
Пример #5
0
        public void ContrastPixelCorrect()
        {
            // changes for over 255
            ProgramImage item = new ProgramImage();
            int          r    = 0;
            int          res  = 2;
            int          n    = -1;

            r = item.ContrastPixel(r, n);
            Assert.AreEqual(r, res);
        }
Пример #6
0
        public void ContrastPixelBelowZero()
        {
            // changes for over 255
            ProgramImage item = new ProgramImage();
            int          r    = 0;
            int          res  = 255;
            int          n    = -255;

            res = item.ContrastPixel(r, n);
            Assert.AreEqual(r, res);
        }
Пример #7
0
        public void ContrastNoImage()
        {
            // поправил создание изображения
            ProgramImage item = new ProgramImage();
            int          err  = 0;
            Bitmap       map  = new Bitmap(1, 1);

            map.SetPixel(0, 0, Color.FromArgb(0, 0, 0));
            err = item.Contrast(0, 10);
            Assert.AreEqual(err, -1);
        }
Пример #8
0
        public static bool InsertImg(ProgramImage pi)
        {
            NGOEntities e = new NGOEntities();

            e.ProgramImages.Add(pi);
            if (e.SaveChanges() > 0)
            {
                return(true);
            }
            return(false);
        }
Пример #9
0
        public void IsBorder_InvalidStartPoint()
        {
            // добавил ProgramImage, Calculater
            ProgramImage image = new ProgramImage();
            Bitmap       map   = new Bitmap(800, 600);

            for (int I = 0; I < 800; I++)
            {
                for (int J = 0; J < 600; J++)
                {
                    map.SetPixel(I, J, Color.Black);
                }
            }
            image.AddNewImage(map);
            Calculater item          = new Calculater(image);
            bool       correctanswer = false;
            int        h             = 3;
            int        w             = 3;
            int        x1            = -1;
            int        y1            = 0;
            int        x2            = -1;
            int        y2            = -1;
            int        x3            = 0;
            int        y3            = -1;
            int        x4            = -1;
            int        y4            = -1;
            int        x5            = w + 1;
            int        y5            = 0;
            int        x6            = w + 1;
            int        y6            = h + 1;
            int        x7            = 0;
            int        y7            = h + 1;
            int        x8            = w + 1;
            int        y8            = h + 1;

            //ProgramImage item = new ProgramImage();
            int[,] matrix = new int[w, h];
            for (int I = 0; I < w; I++)
            {
                for (int J = 0; J < h; J++)
                {
                    matrix[1, 1] = 1;
                }
            }
            Assert.AreEqual(item.IsBorder(matrix, x1, y1, h, w), correctanswer);
            Assert.AreEqual(item.IsBorder(matrix, x2, y2, h, w), correctanswer);
            Assert.AreEqual(item.IsBorder(matrix, x3, y3, h, w), correctanswer);
            Assert.AreEqual(item.IsBorder(matrix, x4, y4, h, w), correctanswer);
            Assert.AreEqual(item.IsBorder(matrix, x5, y5, h, w), correctanswer);
            Assert.AreEqual(item.IsBorder(matrix, x6, y6, h, w), correctanswer);
            Assert.AreEqual(item.IsBorder(matrix, x7, y7, h, w), correctanswer);
            Assert.AreEqual(item.IsBorder(matrix, x8, y8, h, w), correctanswer);
        }
Пример #10
0
        public void ColourComponent_CorrectWork()
        {
            int          correctanswer = 255;
            ProgramImage item          = new ProgramImage();
            Bitmap       map           = new Bitmap(1, 1);

            map.SetPixel(0, 0, Color.FromArgb(255, 255, 255));
            int x = 0;
            int y = 0;

            Assert.AreEqual(item.ColourComponent(map, x, y), correctanswer);
        }
Пример #11
0
        public void ContrastCorrect()
        {
            // changes for over 255
            ProgramImage item = new ProgramImage();
            int          err  = 0;
            Bitmap       map  = new Bitmap(1, 1);

            map.SetPixel(0, 0, Color.FromArgb(0, 0, 0));
            item.AddNewImage(map);
            err = item.Contrast(0, 10);
            Assert.AreEqual(err, 0);
        }
Пример #12
0
        public void LoadImage(ProgramImage image, ushort environmentSegment = 0, string commandLineArgs = null, string stdOut = null)
        {
            memoryAllocator.LoadImage(image, environmentSegment, commandLineArgs);
            UpdateSDA();

            if (!string.IsNullOrEmpty(stdOut))
            {
                this.fileControl.SetStdOut(stdOut);
            }

            vm.OnCurrentProcessChanged(EventArgs.Empty);
        }
Пример #13
0
        private void LoadOverlay()
        {
            string fileName = vm.PhysicalMemory.GetString(vm.Processor.DS, (ushort)vm.Processor.DX, 256, 0);
            var    program  = ProgramImage.Load(fileName, vm);

            if (!(program is ExeFile))
            {
                throw new InvalidOperationException();
            }

            ushort overlaySegment   = vm.PhysicalMemory.GetUInt16(vm.Processor.ES, (ushort)vm.Processor.BX);
            short  relocationFactor = (short)vm.PhysicalMemory.GetUInt16(vm.Processor.ES, (ushort)vm.Processor.BX + 2u);

            program.LoadOverlay(vm, overlaySegment, relocationFactor);
        }
Пример #14
0
        public ActionResult InsertImg(ProgramImage pi, HttpPostedFileBase imgMain)
        {
            string FileName = DateTime.Now.Ticks + Path.GetFileName(imgMain.FileName);
            string path     = Path.Combine(Server.MapPath("~/Images"), FileName);

            imgMain.SaveAs(path);
            pi.ImgFileName = FileName;
            if (Repositories.InsertImg(pi) == true)
            {
                TempData["success"] = "Insert image successfully!";
            }
            else
            {
                TempData["error"] = "Insert image failed!";
            }
            return(RedirectToAction("ProgramDetail", new { id = pi.ProID }));
        }
Пример #15
0
        public ActionResult DelImg(int id)
        {
            ProgramImage model    = Repositories.GetImgByID(id);
            string       fullPath = Request.MapPath("~/Images/" + model.ImgFileName);

            if (System.IO.File.Exists(fullPath))
            {
                System.IO.File.Delete(fullPath);
            }
            if (Repositories.DelImg(id) == true)
            {
                TempData["success"] = "Delete image successfully!";
            }
            else
            {
                TempData["error"] = "Delete image failed!";
            }
            return(RedirectToAction("ProgramDetail", new { id = model.ProID }));
        }
Пример #16
0
        internal DosProcess(ProgramImage image, ushort pspSegment, ushort environmentSegment, string commandLineArgs)
        {
            if (image != null)
            {
                this.FullPath  = image.FullPath;
                this.ImageName = image.FileName;
            }
            else
            {
                this.FullPath  = VirtualPath.RelativeCurrent;
                this.ImageName = string.Empty;
            }
            this.PrefixSegment        = pspSegment;
            this.EnvironmentSegment   = environmentSegment;
            this.CommandLineArguments = commandLineArgs;

            // These get initialized to the command line data area.
            this.DiskTransferAreaSegment = pspSegment;
            this.DiskTransferAreaOffset  = 0x80;
        }
Пример #17
0
        public void PerimetrNoMatrix()
        {
            // добавил ProgramImage, Calculater
            ProgramImage image = new ProgramImage();
            Bitmap       map   = new Bitmap(800, 600);

            for (int I = 0; I < 800; I++)
            {
                for (int J = 0; J < 600; J++)
                {
                    map.SetPixel(I, J, Color.Black);
                }
            }
            image.AddNewImage(map);
            Calculater item  = new Calculater(image);
            int        count = 0;

            count = item.Perimetr(null, 2, 800, 600);
            Assert.AreEqual(count, -1);
        }
Пример #18
0
        public void SquareCalculate_InvalidHeightToCalculate_Above()
        {
            // добавил ProgramImage, Calculater
            ProgramImage image = new ProgramImage();
            Bitmap       map   = new Bitmap(800, 600);

            for (int I = 0; I < 800; I++)
            {
                for (int J = 0; J < 600; J++)
                {
                    map.SetPixel(I, J, Color.Black);
                }
            }
            image.AddNewImage(map);
            Calculater item          = new Calculater(image);
            int        correctanswer = -2;
            int        x             = 2;
            int        y             = 5;
            int        h             = 10;
            int        w             = 10;
            int        invalid_h     = 12;
            int        num           = 1;

            int[,] matrix = new int[w, h];
            for (int I = 0; I < w; I++)
            {
                for (int J = 0; J < h; J++)
                {
                    if (I == 5 && J == 5)
                    {
                        matrix[I, J] = 1;
                    }
                    else
                    {
                        matrix[I, J] = 0;
                    }
                }
            }
            //ProgramImage item = new ProgramImage();
            Assert.AreEqual(item.SquareCalculate(x, y, num, matrix, invalid_h, w), correctanswer);
        }
Пример #19
0
        public void SquareCalculate_CorrectCalculate()
        {
            // добавил создание ProgramImage и добавил картинку
            ProgramImage image = new ProgramImage();
            Bitmap       map   = new Bitmap(800, 600);

            for (int I = 0; I < 800; I++)
            {
                for (int J = 0; J < 600; J++)
                {
                    map.SetPixel(I, J, Color.Black);
                }
            }
            image.AddNewImage(map);
            int        correctanswer = 99;
            Calculater item          = new Calculater(image);
            int        x             = 2;
            int        y             = 2;
            int        num           = 1;
            int        h             = 10;
            int        w             = 10;

            int[,] matrix = new int[w, h];
            for (int I = 0; I < w; I++)
            {
                for (int J = 0; J < h; J++)
                {
                    if (I == 5 && J == 5)
                    {
                        matrix[I, J] = 1;
                    }
                    else
                    {
                        matrix[I, J] = 0;
                    }
                }
            }
            Assert.AreEqual(item.SquareCalculate(x, y, num, matrix, h, w), correctanswer);
        }
Пример #20
0
        public void PerimetrNegativeNum()
        {
            // добавил ProgramImage, Calculater
            ProgramImage image = new ProgramImage();
            Bitmap       map   = new Bitmap(800, 600);

            for (int I = 0; I < 800; I++)
            {
                for (int J = 0; J < 600; J++)
                {
                    map.SetPixel(I, J, Color.Black);
                }
            }
            image.AddNewImage(map);
            Calculater item  = new Calculater(image);
            int        count = 0;

            int[,] matr = new int[1, 1];
            matr[0, 0]  = 2;
            count       = item.Perimetr(matr, -1, 2000, 2000);
            Assert.AreEqual(count, -1);
        }
Пример #21
0
        public void IsBorder_NullMatrix()
        {
            // добавил ProgramImage, Calculater
            ProgramImage image = new ProgramImage();
            Bitmap       map   = new Bitmap(800, 600);

            for (int I = 0; I < 800; I++)
            {
                for (int J = 0; J < 600; J++)
                {
                    map.SetPixel(I, J, Color.Black);
                }
            }
            image.AddNewImage(map);
            Calculater item          = new Calculater(image);
            bool       correctanswer = false;
            int        h             = 3;
            int        w             = 3;
            int        x             = 1;
            int        y             = 1;

            //ProgramImage item = new ProgramImage();
            Assert.AreEqual(item.IsBorder(null, x, y, h, w), correctanswer);
        }
Пример #22
0
 public static bool InsertImg(ProgramImage pi)
 {
     return(ProgramImageDAO.InsertImg(pi));
 }
Пример #23
0
        public void SquareCalculate_InvalidStartPointToCalculate_Less()
        {
            // добавил ProgramImage, Calculater
            ProgramImage image = new ProgramImage();
            Bitmap       map   = new Bitmap(800, 600);

            for (int I = 0; I < 800; I++)
            {
                for (int J = 0; J < 600; J++)
                {
                    map.SetPixel(I, J, Color.Black);
                }
            }
            image.AddNewImage(map);
            Calculater item          = new Calculater(image);
            int        correctanswer = 0;
            int        x1            = -1;
            int        y1            = 0;
            int        x2            = -1;
            int        y2            = -1;
            int        x3            = 0;
            int        y3            = -1;
            int        x4            = -1;
            int        y4            = -1;
            int        x5            = 11;
            int        y5            = 0;
            int        x6            = 11;
            int        y6            = 11;
            int        x7            = 0;
            int        y7            = 11;
            int        x8            = 11;
            int        y8            = 11;
            int        h             = 10;
            int        w             = 10;
            int        num           = 1;

            int[,] matrix = new int[w, h];
            for (int I = 0; I < w; I++)
            {
                for (int J = 0; J < h; J++)
                {
                    if (I == 5 && J == 5)
                    {
                        matrix[I, J] = 1;
                    }
                    else
                    {
                        matrix[I, J] = 0;
                    }
                }
            }
            //ProgramImage item = new ProgramImage();
            Assert.AreEqual(item.SquareCalculate(x1, y1, num, matrix, h, w), correctanswer);
            Assert.AreEqual(item.SquareCalculate(x2, y2, num, matrix, h, w), correctanswer);
            Assert.AreEqual(item.SquareCalculate(x3, y3, num, matrix, h, w), correctanswer);
            Assert.AreEqual(item.SquareCalculate(x4, y4, num, matrix, h, w), correctanswer);
            Assert.AreEqual(item.SquareCalculate(x5, y5, num, matrix, h, w), correctanswer);
            Assert.AreEqual(item.SquareCalculate(x6, y6, num, matrix, h, w), correctanswer);
            Assert.AreEqual(item.SquareCalculate(x7, y7, num, matrix, h, w), correctanswer);
            Assert.AreEqual(item.SquareCalculate(x8, y8, num, matrix, h, w), correctanswer);
        }