public void Generate_Monthly_Tasks_WeekdayRecurrence_SpecialLastWeekdayinMonth()
        {
            var cut    = new TaskGenerator();
            var config = AdvancedSetup();

            var beginFirst  = new DateTime(2013, 5, 31, 10, 0, 0);
            var endFirst    = new DateTime(2013, 5, 31, 11, 0, 0);
            var beginMiddle = new DateTime(2013, 7, 26, 10, 0, 0);
            var endMiddle   = new DateTime(2013, 7, 26, 11, 0, 0);
            var beginEnd    = new DateTime(2013, 9, 27, 10, 0, 0);
            var endEnd      = new DateTime(2013, 9, 27, 11, 0, 0);

            config.Begin = new DateTime(2013, 5, 31, 10, 0, 0);
            config.End   = new DateTime(2013, 5, 31, 11, 0, 0);
            config.IsWeekdayRecurrence = true;
            config.RecurrenceInterval  = 1;
            config.Cycle = 2;
            var result = cut.GenerateFillLevelReadings(config);

            Assert.AreEqual(5, result.Count());
            Assert.AreEqual(beginFirst, result.First()
                            .DueDate.Begin);
            Assert.AreEqual(endFirst, result.First()
                            .DueDate.End);
            Assert.AreEqual(beginMiddle, result.Take(3)
                            .Last()
                            .DueDate.Begin);
            Assert.AreEqual(endMiddle, result.Take(3)
                            .Last()
                            .DueDate.End);
            Assert.AreEqual(beginEnd, result.Last()
                            .DueDate.Begin);
            Assert.AreEqual(endEnd, result.Last()
                            .DueDate.End);
        }
        public void Generate_Monthly_Tasks_End_Date_DayOfMonthRecurrence()
        {
            var cut    = new TaskGenerator();
            var config = AdvancedSetup();

            var RepeatUntilDate = new DateTime(2014, 1, 23, 0, 0, 0);

            config.RepeatUntilDate     = RepeatUntilDate;
            config.EndsWithDate        = true;
            config.NumberOfRecurrences = 10;
            config.Cycle = 2;
            var beginFirst  = new DateTime(2013, 5, 21, 10, 0, 0);
            var endFirst    = new DateTime(2013, 5, 21, 11, 0, 0);
            var beginMiddle = new DateTime(2013, 9, 21, 10, 0, 0);
            var endMiddle   = new DateTime(2013, 9, 21, 11, 0, 0);
            var beginEnd    = new DateTime(2014, 1, 21, 10, 0, 0);
            var endEnd      = new DateTime(2014, 1, 21, 11, 0, 0);
            var result      = cut.GenerateFillLevelReadings(config);

            Assert.AreEqual(5, result.Count());
            Assert.AreEqual(beginFirst, result.First()
                            .DueDate.Begin);
            Assert.AreEqual(endFirst, result.First()
                            .DueDate.End);
            Assert.AreEqual(beginMiddle, result.Take(3)
                            .Last()
                            .DueDate.Begin);
            Assert.AreEqual(endMiddle, result.Take(3)
                            .Last()
                            .DueDate.End);
            Assert.AreEqual(beginEnd, result.Last()
                            .DueDate.Begin);
            Assert.AreEqual(endEnd, result.Last()
                            .DueDate.End);
        }
        public void Generate_Weekly_Task_On_Multiple_Weekdays_Recurrence()
        {
            var cut    = new TaskGenerator();
            var config = AdvancedSetup();

            config.Cycle = 1;
            var beginFirst  = new DateTime(2013, 5, 22, 10, 0, 0);
            var endFirst    = new DateTime(2013, 5, 22, 11, 0, 0);
            var beginMiddle = new DateTime(2013, 6, 5, 10, 0, 0);
            var endMiddle   = new DateTime(2013, 6, 5, 11, 0, 0);
            var beginEnd    = new DateTime(2013, 6, 19, 10, 0, 0);
            var endEnd      = new DateTime(2013, 6, 19, 11, 0, 0);
            var result      = cut.GenerateFillLevelReadings(config);

            Assert.AreEqual(5, result.Count());
            Assert.AreEqual(beginFirst, result.First()
                            .DueDate.Begin);
            Assert.AreEqual(endFirst, result.First()
                            .DueDate.End);
            Assert.AreEqual(beginMiddle, result.Take(3)
                            .Last()
                            .DueDate.Begin);
            Assert.AreEqual(endMiddle, result.Take(3)
                            .Last()
                            .DueDate.End);
            Assert.AreEqual(beginEnd, result.Last()
                            .DueDate.Begin);
            Assert.AreEqual(endEnd, result.Last()
                            .DueDate.End);
        }
        public void Generate_Yearly_Tasks_Recurrence()
        {
            var cut    = new TaskGenerator();
            var config = AdvancedSetup();

            config.Cycle        = 3;
            config.EndsWithDate = false;

            var beginFirst  = new DateTime(2013, 5, 21, 10, 0, 0);
            var endFirst    = new DateTime(2013, 5, 21, 11, 0, 0);
            var beginMiddle = new DateTime(2017, 5, 21, 10, 0, 0);
            var endMiddle   = new DateTime(2017, 5, 21, 11, 0, 0);
            var beginEnd    = new DateTime(2021, 5, 21, 10, 0, 0);
            var endEnd      = new DateTime(2021, 5, 21, 11, 0, 0);
            var result      = cut.GenerateFillLevelReadings(config);

            Assert.AreEqual(5, result.Count());
            Assert.AreEqual(beginFirst, result.First()
                            .DueDate.Begin);
            Assert.AreEqual(endFirst, result.First()
                            .DueDate.End);
            Assert.AreEqual(beginMiddle, result.Take(3)
                            .Last()
                            .DueDate.Begin);
            Assert.AreEqual(endMiddle, result.Take(3)
                            .Last()
                            .DueDate.End);
            Assert.AreEqual(beginEnd, result.Last()
                            .DueDate.Begin);
            Assert.AreEqual(endEnd, result.Last()
                            .DueDate.End);
        }
        public void Generate_Daily_Task_End_Date()
        {
            var cut    = new TaskGenerator();
            var config = AdvancedSetup();

            config.RepeatUntilDate = new DateTime(2013, 5, 30, 0, 0, 0);
            config.EndsWithDate    = true;

            var beginFirst  = new DateTime(2013, 5, 21, 10, 0, 0);
            var endFirst    = new DateTime(2013, 5, 21, 11, 0, 0);
            var beginMiddle = new DateTime(2013, 5, 25, 10, 0, 0);
            var endMiddle   = new DateTime(2013, 5, 25, 11, 0, 0);
            var beginEnd    = new DateTime(2013, 5, 29, 10, 0, 0);
            var endEnd      = new DateTime(2013, 5, 29, 11, 0, 0);
            var result      = cut.GenerateFillLevelReadings(config);

            Assert.AreEqual(5, result.Count());
            Assert.AreEqual(beginFirst, result.First()
                            .DueDate.Begin);
            Assert.AreEqual(endFirst, result.First()
                            .DueDate.End);
            Assert.AreEqual(beginMiddle, result.Take(3)
                            .Last()
                            .DueDate.Begin);
            Assert.AreEqual(endMiddle, result.Take(3)
                            .Last()
                            .DueDate.End);
            Assert.AreEqual(beginEnd, result.Last()
                            .DueDate.Begin);
            Assert.AreEqual(endEnd, result.Last()
                            .DueDate.End);
        }
예제 #6
0
 void CollectData(object sender, DoWorkEventArgs e)
 {
     GetDisplayed();
     //по всем задачам
     for (int i = minTaskSize; i <= maxTaskSize; i++)
     {
         var      task      = TaskGenerator.GetRandomTask(i);
         double[] solutions = new double[solvers.Count]; //решения для каждого метода
         for (int j = 0; j < solvers.Count; j++)         //по всем методам
         {
             Stopwatch sw = new Stopwatch();
             solvers[j].MaxWeight = task.Item2;
             sw.Start();
             var solution = solvers[j].SolveZeroOne(task.Item1);
             sw.Stop();
             this.Invoke(new Action(() => { chartTime.Series[j].Points.AddXY(
                                                i, sw.ElapsedMilliseconds > 0? sw.ElapsedMilliseconds : 1); }));
             solutions[j] = solvers[j].TotalCost(task.Item1, solution);
         }
         double max = solutions.Max();
         for (int j = 0; j < solvers.Count; j++)
         {
             this.Invoke(
                 new Action(() => { chartError.Series[j].Points.AddXY(i, (max - solutions[j]) / max); }));
         }
     }
 }
        public void Generate_Daily_Tasks_Every_Other_Day()
        {
            var cut    = new TaskGenerator();
            var config = Setup();

            var beginMiddle = new DateTime(2000, 1, 3, 0, 0, 0);
            var endMiddle   = new DateTime(2000, 1, 3, 1, 0, 0);
            var beginEnd    = new DateTime(2000, 1, 5, 0, 0, 0);
            var endEnd      = new DateTime(2000, 1, 5, 1, 0, 0);
            var result      = cut.GenerateFillLevelReadings(config);

            Assert.AreEqual(3, result.Count());
            Assert.AreEqual(config.Begin, result.First()
                            .DueDate.Begin);
            Assert.AreEqual(config.End, result.First()
                            .DueDate.End);
            Assert.AreEqual(beginMiddle, result.Take(2)
                            .Last()
                            .DueDate.Begin);
            Assert.AreEqual(endMiddle, result.Take(2)
                            .Last()
                            .DueDate.End);
            Assert.AreEqual(beginEnd, result.Last()
                            .DueDate.Begin);
            Assert.AreEqual(endEnd, result.Last()
                            .DueDate.End);
        }
예제 #8
0
    void Start()
    {
        costTask = 10;
        poolr    = GameObject.Find("PoolReference").GetComponent <PoolR>();

        //poolr.TaskCanvas.gameObject.SetActive(false);
        //PoolReference.TableScene[EnumInPool.TaskCanvas.ToString()].SetActive( false );
        gameObject.SetActive(false);
        poolr.TaskNumber.enabled = false;

        if (!File.Exists(putTaskBase))
        {
            TaskGenerator tg = new TaskGenerator();
            tg.GenerationXML();
            tg.BattleTaskGenerationXML();
        }
        ReadXML();
        loadNumTask = poolr.loadStats.numTask;
        if (numTask < loadNumTask)
        {
            numTask = loadNumTask;
        }


        poolr.BonusTextTask.text = poolr.coinText.text;
        VisibleTask();
        //Debug.Log ("EndStart");
    }
예제 #9
0
        public static bool IsUpToDate()
        {
            List <Task> tasks = new List <Task>();

            TaskGenerator.Generate(tasks);

            return(!tasks.Any(t => t.type != Task.Type.Missing));
        }
예제 #10
0
 // Start is called before the first frame update
 void Start()
 {
     taskGenerator = new TaskGenerator();
     buttonHistory = new List <ButtonHistory>();
     setStartingTasks();
     requiresValidation = false;
     updateTaskList();
 }
예제 #11
0
    // Start is called before the first frame update
    void Start()
    {
        textComponent      = textObject.GetComponent <Text>();
        textComponent.text = "";

        taskGenerator = gameObject.GetComponent <TaskGenerator>();
        scoreManager  = gameObject.GetComponent <ScoreManager>();
    }
예제 #12
0
        public void ThrowsExceptionWhenContextIsNull()
        {
            // Arrange
            const int request = 3;
            var       sut     = new TaskGenerator();

            // Act & assert
            Assert.Throws <ArgumentNullException>(() => sut.Create(request, null));
        }
예제 #13
0
        public void TestGenerateToFile()
        {
            string xml = @"<ProjectSchemaDefinitions xmlns=`clr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Framework` xmlns:x=`http://schemas.microsoft.com/winfx/2006/xaml` xmlns:sys=`clr-namespace:System;assembly=mscorlib` xmlns:impl=`clr-namespace:Microsoft.VisualStudio.Project.Contracts.Implementation;assembly=Microsoft.VisualStudio.Project.Contracts.Implementation`>
                             <Rule Name=`CL`>
                               <EnumProperty Name=`GeneratePreprocessedFile` Switch=`nologo`>
                                 <EnumValue Name=`Disabled` />
                                 <EnumValue Name=`Yes` Switch=`P` />
                                 <EnumValue Name=`NoLineNumbers` Switch=`EP` />
                               </EnumProperty>
                             </Rule>
                           </ProjectSchemaDefinitions>";

            TaskParser      tp            = XamlTestHelpers.LoadAndParse(xml, "CL");
            TaskGenerator   tg            = new TaskGenerator(tp);
            CodeCompileUnit compileUnit   = tg.GenerateCode();
            CodeDomProvider codeGenerator = CodeDomProvider.CreateProvider("CSharp");

            try
            {
                using (StreamWriter sw = new StreamWriter("XamlTaskFactory_Tests_TestGenerateToFile.cs"))
                {
                    CodeGeneratorOptions options = new CodeGeneratorOptions();
                    options.BlankLinesBetweenMembers = true;
                    options.BracingStyle             = "C";

                    codeGenerator.GenerateCodeFromCompileUnit(compileUnit, sw, options);
                }

                CSharpCodeProvider provider = new CSharpCodeProvider();
                // Build the parameters for source compilation.
                CompilerParameters cp = new CompilerParameters();

                // Add an assembly reference.
                cp.ReferencedAssemblies.Add("System.dll");
                cp.ReferencedAssemblies.Add("System.Xml.dll");
                cp.ReferencedAssemblies.Add(Path.Combine(XamlTestHelpers.PathToMSBuildBinaries, "Microsoft.Build.Utilities.Core.dll"));
                cp.ReferencedAssemblies.Add(Path.Combine(XamlTestHelpers.PathToMSBuildBinaries, "Microsoft.Build.Tasks.Core.dll"));
                cp.ReferencedAssemblies.Add(Path.Combine(XamlTestHelpers.PathToMSBuildBinaries, "Microsoft.Build.Framework.dll"));
                cp.ReferencedAssemblies.Add("System.Data.dll");

                // Generate an executable instead of
                // a class library.
                cp.GenerateExecutable = false;
                // Set the assembly file name to generate.
                cp.GenerateInMemory = true;
                // Invoke compilation
                CompilerResults cr = provider.CompileAssemblyFromFile(cp, "XamlTaskFactory_Tests_TestGenerateToFile.cs");
                Assert.Empty(cr.Errors); // "Compilation Failed"
            }
            finally
            {
                if (File.Exists("XamlTaskFactory_Tests_TestGenerateToFile.cs"))
                {
                    File.Delete("XamlTaskFactory_Tests_TestGenerateToFile.cs");
                }
            }
        }
예제 #14
0
        public void TestUnlimitedCorrectness()
        {
            var task           = TaskGenerator.GetPredictableTask();
            AbstractBackpack b = new ExhausiveSearchBackpack(task.Item2);

            uint[] result = b.SolveUnlimited(task.Item1);
            Assert.IsTrue(b.TotalCost(task.Item1, result) == 44);
            Assert.IsTrue(b.TotalWeight(task.Item1, result) <= task.Item2);
        }
예제 #15
0
        public void TestZeroOneCorrectness()
        {
            var task           = TaskGenerator.GetPredictableTask();
            AbstractBackpack b = new ExhausiveSearchBackpack(task.Item2);

            bool[] result = b.SolveZeroOne(task.Item1);
            Assert.IsTrue(b.TotalCost(task.Item1, result) == 36);
            Assert.IsTrue(b.TotalWeight(task.Item1, result) <= task.Item2);
        }
        public async Task MoveNext_HappyPath_RandomSort()
        {
            var taskGenerator = new TaskGenerator();

            mockTaskRepository.Setup(tr => tr.ReadAsync(It.IsAny <ContestType>())).Returns(Task.FromResult(new Result <IEnumerable <TaskBase> >(taskGenerator.GetAllTasksAsList())));
            mockTaskRepository.Setup(tr => tr.ReadAsync(It.IsAny <string>()))
            .Returns <string>((id) => Task.FromResult(new Result <TaskBase>(taskGenerator.GetAllTasksAsList().Where(t => t.Id == id).Single())));

            var allPilots = ContestThatHasStartedData_RandomSort.GetAllPilots();

            mockPilotRepository.Setup(p => p.ReadAsync()).Returns(Task.FromResult(new Result <IEnumerable <Pilot> >(allPilots)));

            mockFlightMatrixRepository.Setup(fmr => fmr.ReadAsync(It.IsAny <string>())).Returns(Task.FromResult(ContestThatHasStartedData_RandomSort.GetFlightMatrix()));

            // We are testing random sort
            mockAlgo.Setup(algo => algo.IsSingleRoundSort()).Returns(false);

            var contestEngine = new F3KContestEngine(
                new TaskQueryInteractor(mockTaskRepository.Object, mockLogger.Object),
                new ContestStorageCmdInteractor(mockContestRepository.Object, mockLogger.Object),
                new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object),
                new ScoringQueryInteractor(mockScoringRepository.Object, mockLogger.Object),
                new ScoringContestScoreAggInteractor(mockContestScoreAggrigator.Object, mockLogger.Object),
                new FlightMatrixStorageCmdInteractor(mockFlightMatrixRepository.Object, mockLogger.Object),
                new FlightMatrixQueryInteractor(mockFlightMatrixRepository.Object, mockLogger.Object),
                new PilotQueryInteractor(mockPilotRepository.Object, mockLogger.Object),
                mockAlgo.Object,
                new Top10PilotsFlyoffsSort(),
                mockLogger.Object);

            var contest = ContestThatHasStartedData_RandomSort.GetContest();

            await contestEngine.Initialize(ContestThatHasStartedData_RandomSort.GetContest());

            Assert.AreEqual(0, contestEngine.CurrentRoundOrdinal);
            Assert.AreEqual(FlightGroup.B, contestEngine.CurrentFlightGroup);
            Assert.IsNotNull(contestEngine.CurrentTask as TaskA_LastFlightSevenMin);

            await contestEngine.MoveToNextContestStage();

            Assert.AreEqual(0, contestEngine.CurrentRoundOrdinal);
            Assert.AreEqual(FlightGroup.C, contestEngine.CurrentFlightGroup);

            // Set up the repository to return an appropriate updated contest for this test.
            var updatedContest = ContestThatHasStartedData_RandomSort.GetContest();

            updatedContest.State.CurrentFlightGroup  = FlightGroup.A;
            updatedContest.State.CurrentRoundOrdinal = 1;
            mockContestRepository.Setup(cr => cr.UpdateAsync(It.IsAny <Contest>())).Returns(Task.FromResult <Result <Contest> >(new Result <Contest>(updatedContest)));

            await contestEngine.MoveToNextContestStage();

            Assert.AreEqual(1, contestEngine.CurrentRoundOrdinal);
            Assert.AreEqual(FlightGroup.A, contestEngine.CurrentFlightGroup);
            Assert.IsNotNull(contestEngine.CurrentTask as TaskB_LastTwoFlights4MinMax);
        }
예제 #17
0
        public void ThrowsExceptionWhenContextIsNull()
        {
            // Fixture setup
            const int request = 3;
            var       sut     = new TaskGenerator();

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() => sut.Create(request, null));
            // Teardown
        }
예제 #18
0
        public void ReturnsNoSpecimenWhenRequestIsNull()
        {
            // Arrange
            var context = new SpecimenContext(new Fixture());
            var sut     = new TaskGenerator();
            // Act
            var result = sut.Create(null, context);

            // Assert
            Assert.IsType <NoSpecimen>(result);
        }
예제 #19
0
        public void TestElapsedTime()
        {
            Stopwatch        sw   = new Stopwatch();
            var              task = TaskGenerator.GetRandomTask(25);
            AbstractBackpack b    = new ExhausiveSearchBackpack(task.Item2);

            sw.Start();
            bool[] result = b.SolveZeroOne(task.Item1);
            sw.Stop();
            Trace.WriteLine(string.Format("{0} c", (double)sw.ElapsedMilliseconds / 1000));
        }
예제 #20
0
        public void CreatesGenericTasks()
        {
            // Arrange
            var request = typeof(Task <int>);
            var context = new SpecimenContext(new Fixture());
            var sut     = new TaskGenerator();
            // Act
            var result = sut.Create(request, context);

            // Assert
            Assert.IsType <Task <int> >(result);
        }
예제 #21
0
        public void ReturnsNoSpecimenForUnknownGenericTaskRequests()
        {
            // Arrange
            var request = typeof(CustomGenericTask <int>);
            var context = new SpecimenContext(new Fixture());
            var sut     = new TaskGenerator();
            // Act
            var result = sut.Create(request, context);

            // Assert
            Assert.IsType <NoSpecimen>(result);
        }
예제 #22
0
        public void ReturnsNoSpecimenForNonTaskTypeRequests()
        {
            // Arrange
            var request = typeof(string);
            var context = new SpecimenContext(new Fixture());
            var sut     = new TaskGenerator();
            // Act
            var result = sut.Create(request, context);

            // Assert
            Assert.IsType <NoSpecimen>(result);
        }
예제 #23
0
        public void CreatesNonGenericTasks()
        {
            // Arrange
            var request = typeof(Task);
            var context = new SpecimenContext(new Fixture());
            var sut     = new TaskGenerator();
            // Act
            var result = sut.Create(request, context);

            // Assert
            Assert.IsAssignableFrom <Task>(result);
        }
예제 #24
0
        public void CreatedGenericTasksAreMarkedAsComplete()
        {
            // Arrange
            var request = typeof(Task <int>);
            var context = new SpecimenContext(new Fixture());
            var sut     = new TaskGenerator();
            // Act
            var task = (Task <int>)sut.Create(request, context);

            // Assert
            Assert.Equal(TaskStatus.RanToCompletion, task.Status);
        }
예제 #25
0
        public void ReturnsNoSpecimenWhenRequestIsNull()
        {
            // Fixture setup
            var context = new SpecimenContext(new Fixture());
            var sut     = new TaskGenerator();
            // Exercise system
            var result = sut.Create(null, context);

            // Verify outcome
            Assert.IsType <NoSpecimen>(result);
            // Teardown
        }
예제 #26
0
        public void CreatesGenericTasks()
        {
            // Fixture setup
            var request = typeof(Task <int>);
            var context = new SpecimenContext(new Fixture());
            var sut     = new TaskGenerator();
            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            Assert.IsType <Task <int> >(result);
            // Teardown
        }
예제 #27
0
        public void CreatedGenericTasksAreMarkedAsComplete()
        {
            // Fixture setup
            var request = typeof(Task <int>);
            var context = new SpecimenContext(new Fixture());
            var sut     = new TaskGenerator();
            // Exercise system
            var task = (Task <int>)sut.Create(request, context);

            // Verify outcome
            Assert.Equal(TaskStatus.RanToCompletion, task.Status);
            // Teardown
        }
예제 #28
0
        public void ReturnsNoSpecimenForUnknownGenericTaskRequests()
        {
            // Fixture setup
            var request = typeof(CustomGenericTask <int>);
            var context = new SpecimenContext(new Fixture());
            var sut     = new TaskGenerator();
            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            Assert.IsType <NoSpecimen>(result);
            // Teardown
        }
예제 #29
0
        void PopulateTasks()
        {
            tasks.Clear();

            TaskGenerator.Generate(tasks);

            SetTaskSequence();
            UpdateTaskCount();
            SetDefaultStatus();

            taskView.Reload();
            taskView.SortRows();
        }
예제 #30
0
        public void ReturnsNoSpecimenForNonTypeRequests()
        {
            // Fixture setup
            const int request = 3;
            var       context = new SpecimenContext(new Fixture());
            var       sut     = new TaskGenerator();
            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            Assert.IsType <NoSpecimen>(result);
            // Teardown
        }
예제 #31
0
    void Start()
    {
        costTask = 10;
        poolr = GameObject.Find("PoolReference").GetComponent<PoolR>();

        //poolr.TaskCanvas.gameObject.SetActive(false);
        //PoolReference.TableScene[EnumInPool.TaskCanvas.ToString()].SetActive( false );
        gameObject.SetActive( false );
        poolr.TaskNumber.enabled = false;

        if (!File.Exists(putTaskBase))
        {
            TaskGenerator tg = new TaskGenerator();
            tg.GenerationXML();
            tg.BattleTaskGenerationXML();
        }
        ReadXML();
        loadNumTask = poolr.loadStats.numTask;
        if (numTask < loadNumTask)
            numTask = loadNumTask;

        poolr.BonusTextTask.text = poolr.coinText.text;
        VisibleTask();
        //Debug.Log ("EndStart");
    }