Exemplo n.º 1
0
        private SubmitRunResult Run(Task task, string input, string runString)
        {
            var runService    = new RunService(_runnerPath, _workingDirectory);
            var configuration = new Configuration(runString, _workingDirectory, task.TimeLimitMilliseconds, task.MemoryLimitBytes);

            configuration.InputFile  = input;
            configuration.OutputFile = "output.txt"; //TODO

            var runResult = runService.Run(configuration);

            var result = new SubmitRunResult
            {
                Description              = runResult.Description,
                Output                   = runResult.Output,
                PeakMemoryBytes          = runResult.PeakMemoryBytes,
                RunStatus                = runResult.RunStatus,
                TextStatus               = runResult.TextStatus,
                TimeConsumedMilliseconds = runResult.TimeConsumedMilliseconds,
                TimePassedMilliseconds   = runResult.TimePassedMilliseconds
            };

            if (runResult.RunStatus == RunStatus.Success)
            {
                var checkAnswerResult = CheckAnswer(configuration);
                result.CheckMessage = checkAnswerResult.Message;
                result.CheckStatus  = checkAnswerResult.CheckStatus;
            }

            return(result);
        }
Exemplo n.º 2
0
        public void RunCmdTest()
        {
            var service = new RunService(_runnerPath, _workingDirectory);

            var configuration = new Configuration("cmd", _workingDirectory, 1000, 10 * 1024 * 1024);

            service.Run(configuration);
        }
Exemplo n.º 3
0
        public void MemoryLimitTest()
        {
            var service = new RunService(_runnerPath, _workingDirectory);

            var configuration = new Configuration(@"notepad", _workingDirectory, 1000, 10 * 1024);

            var result = service.Run(configuration);

            Assert.That(result.RunStatus, Is.EqualTo(RunStatus.MemoryLimitExceeded));
        }
Exemplo n.º 4
0
        public void RuntimeErrorSolutionTest()
        {
            var service = new RunService(_runnerPath, _workingDirectory);

            var fileName      = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestSolutions\RuntimeError.exe");
            var configuration = new Configuration(fileName, _workingDirectory, 1000, 10 * 1024 * 1024);

            var result = service.Run(configuration);

            Assert.That(result.RunStatus, Is.EqualTo(RunStatus.RuntimeError));
        }
Exemplo n.º 5
0
        public void InvocationFailedTest()
        {
            var service = new RunService(_runnerPath, _workingDirectory);

            var fileName      = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestSolutions\AB.exe");
            var configuration = new Configuration(fileName, _workingDirectory, 1000, 10 * 1024 * 1024)
            {
                InputFile  = "input.txt",
                OutputFile = "output.txt"
            };

            var result = service.Run(configuration);

            Assert.That(result.RunStatus, Is.EqualTo(RunStatus.InvocationFailed));
        }
Exemplo n.º 6
0
        public void UseFilesTest()
        {
            using (var input = CreateFile("input.txt"))
            {
                input.Write("1 2");
            }

            var service = new RunService(_runnerPath, _workingDirectory);

            var fileName      = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestSolutions\AB.exe");
            var configuration = new Configuration(fileName, _workingDirectory, 1000, 10 * 1024 * 1024)
            {
                InputFile  = "input.txt",
                OutputFile = "output.txt"
            };

            var result = service.Run(configuration);

            Assert.That(result.RunStatus, Is.EqualTo(RunStatus.Success));
        }
Exemplo n.º 7
0
        public void MultiFocusTest()
        {
            TraceFile.SetName("MultiFocusTest");

            AddAction(KeyModifier.Alt, "S", "Quit", () => RunService.Stop());

            var testWindows      = GetTestWindows.ToList();
            var testWindowsCount = testWindows.Count;
            int currentPosition  = -1;

            var     screens = ScreenOsService.GetScreens();
            IScreen screen  = screens.Last();

            foreach (var testWindow in testWindows)
            {
                this.LogLine("Window : {0}", testWindow.ToRepr());
            }

            var trayWindows = GetTrayWindows;

            trayWindows = trayWindows.Where(w => RectangleService.Intersect(w.RectangleCurrent, screen.Rectangle) != null);

            foreach (var trayWindowItem in trayWindows)
            {
                this.LogLine("Tray Window : {0}", trayWindowItem.ToRepr());
            }
            var trayWindow = trayWindows.First();

            void focusNext()
            {
                currentPosition++;
                currentPosition %= testWindowsCount;
                this.LogLine("  -> Focusing {0}]", testWindows[currentPosition].ToRepr());
                WindowOsServiceImpl.FocusWindowSync(testWindows[currentPosition]);
            }

            void focusPrev()
            {
                currentPosition += testWindowsCount;
                currentPosition--;
                currentPosition %= testWindowsCount;
                this.LogLine("  -> Focusing {0}]", testWindows[currentPosition].ToRepr());
                WindowOsServiceImpl.FocusWindowSync(testWindows[currentPosition]);
            }

            void moveToNewPosition(int newPosition)
            {
                var currentWindow = testWindows[currentPosition];

                testWindows.Remove(currentWindow);
                testWindows.Insert(newPosition, currentWindow);

                this.LogLine("  -> Moving {0}]", currentWindow.ToRepr());

                DispatchOnScreen(testWindows, screen);
                currentPosition = newPosition;
                WindowOsServiceImpl.FocusWindowSync(currentWindow);
            }

            void moveToNext()
            {
                var newPosition = (currentPosition + 1) % testWindowsCount;

                moveToNewPosition(newPosition);
            }

            void moveToPrev()
            {
                var newPosition = (currentPosition + testWindowsCount - 1) % testWindowsCount;

                moveToNewPosition(newPosition);
            }

            AddAction(KeyModifier.Alt, "Left", "FocusPrev", focusPrev);
            AddAction(KeyModifier.Alt, "Right", "FocusNext", focusNext);
            AddAction(KeyModifier.Alt, "J", "MoveToPrev", moveToPrev);
            AddAction(KeyModifier.Alt, "K", "MoveToNext", moveToNext);

            DispatchOnScreen(testWindows, screen);

            WindowOsServiceImpl.HideSync(trayWindow);
            focusNext();
            RunService.Run();

            foreach (var testWindow in testWindows)
            {
                WindowOsServiceImpl.UnmanageSync(testWindow);
            }
            WindowOsServiceImpl.ShowSync(trayWindow);
        }