Пример #1
0
        public void Mapping_IntAsString_Maps_To_CorrectValidatedInt(string initialValue, bool expectedValid, int expectedValue)
        {
            Mapper.CreateMap<ExampleViewModel, ExampleRequest>();
            var source = new ExampleViewModel { IntProperty = initialValue };

            var destination = Mapper.Map(source, new ExampleRequest());

            destination.IntProperty.IsValid.Should().Be(expectedValid);
            destination.IntProperty.Value.Should().Be(expectedValue);
        }
Пример #2
0
        public void Mapping_Null_ToValidatedNullableInt_Maps_To_ValidValidatedInt_WithNullValue()
        {
            Mapper.CreateMap<ExampleViewModel, ExampleRequest>();
            var source = new ExampleViewModel { NullableIntProperty = null };

            var destination = Mapper.Map(source, new ExampleRequest());

            destination.NullableIntProperty.IsValid.Should().BeTrue();
            destination.NullableIntProperty.Value.Should().Be(null);
        }
Пример #3
0
 public IActionResult JSSelectExample(ExampleViewModel model)
 {
     model.SelectList = new SelectList(GetSelectListItems(), "Value", "Text", model.ThingId);
     return(View(model));
 }
Пример #4
0
 public IActionResult TagHelperSelectExample(ExampleViewModel model)
 {
     // set breakpoint and inspect model.ThingId
     model.SelectList = new SelectList(GetSelectListItems(), "Value", "Text", model.ThingId);
     return(View(model));
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ExampleView"/> class.
 /// </summary>
 /// <param name="viewModel">The view model to inject.</param>
 /// <remarks>
 /// This constructor can be used to use view-model injection.
 /// </remarks>
 public ExampleView(ExampleViewModel viewModel)
     : base(viewModel)
 {
     InitializeComponent();
 }
 public MainWindowViewModel(ExampleViewModel example2ViewModel)
 {
 }
Пример #7
0
 public async Task <int> UpdateExampleAsync(int Id, ExampleViewModel vm, string User)
 {
     return(await _ctx.Database.ExecuteSqlInterpolatedAsync($"[dbo].[spUpdateInsertExample] {Id}, {vm.Active}, {User}"));
 }
Пример #8
0
        public ActionResult StoreStudentRecord(ExampleViewModel exampleVM)
        {
            bool    checkExist      = false;
            int     userID          = (int)Session["userID"];
            int     exerciseID      = exampleVM.StudentRecord.ExerciseID;
            Exercis currentExercise = db.Exercises.SingleOrDefault(x => x.Id == exerciseID);
            string  submittedAnswer = exampleVM.StudentRecord.TempAnswer;
            string  correctAnswer   = "";

            if (currentExercise.CorrectAnswer == "Answer1")
            {
                correctAnswer = currentExercise.Answer1;
            }
            else if (currentExercise.CorrectAnswer == "Answer2")
            {
                correctAnswer = currentExercise.Answer2;
            }
            else if (currentExercise.CorrectAnswer == "Answer3")
            {
                correctAnswer = currentExercise.Answer3;
            }
            else if (currentExercise.CorrectAnswer == "Answer4")
            {
                correctAnswer = currentExercise.Answer4;
            }


            checkExist = db.StudentRecords.Any(x => x.UserID == userID && x.ExerciseID == exerciseID);
            StudentRecord existingStudentRecord = db.StudentRecords.SingleOrDefault(x => x.UserID == userID && x.ExerciseID == exerciseID);

            if (checkExist && existingStudentRecord.CorrectAttempt == null)
            {
                //if student record exist update the record.

                if (existingStudentRecord.Attempt2 == null)
                {
                    existingStudentRecord.Attempt2 = submittedAnswer;
                    if (submittedAnswer == correctAnswer)
                    {
                        existingStudentRecord.CorrectAttempt = "Attempt2";
                    }
                }
                else if (existingStudentRecord.Attempt3 == null)
                {
                    existingStudentRecord.Attempt3 = submittedAnswer;
                    if (submittedAnswer == correctAnswer)
                    {
                        existingStudentRecord.CorrectAttempt = "Attempt3";
                    }
                }
                else
                {
                    existingStudentRecord.Attempt4 = submittedAnswer;
                    if (submittedAnswer == correctAnswer)
                    {
                        existingStudentRecord.CorrectAttempt = "Attempt4";
                    }
                }

                existingStudentRecord.Date = DateTime.Now;

                if (ModelState.IsValid)
                {
                    db.Entry(existingStudentRecord).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            else if (!checkExist)
            {
                //if student record not exist then create a new student record

                StudentRecord newStudentRecord = new StudentRecord();
                newStudentRecord.UserID     = userID;
                newStudentRecord.ExerciseID = exerciseID;
                newStudentRecord.Attempt1   = submittedAnswer;

                if (submittedAnswer == correctAnswer)
                {
                    newStudentRecord.CorrectAttempt = "Attempt1";
                }

                newStudentRecord.Date = DateTime.Now;

                db.StudentRecords.Add(newStudentRecord);
                db.SaveChanges();
            }

            //send feedback
            string feedbackMessage;

            if (submittedAnswer == correctAnswer)
            {
                feedbackMessage = "Well done! Correct Answer.";
            }
            else
            {
                feedbackMessage = "Wrong Answer!";
            }

            return(RedirectToAction("Show", "Example", new { exampleID = currentExercise.ExampleID, feedback = feedbackMessage }));
        }
Пример #9
0
 // static constructor
 static DesignTimeModels()
 {
     ExampleViewModelForDesignTime =
         new ExampleViewModel(new EventAggregator(), new WindowManager());
 }
Пример #10
0
 public MainWindow()
 {
     DataContext = new ExampleViewModel();
     InitializeComponent();
 }
Пример #11
0
 public string Submit(ExampleViewModel model)
 {
     return(model.Age.ToString());
 }
Пример #12
0
 public MainWindow()
 {
     InitializeComponent();
     m_ViewModel = new ExampleViewModel();
     DataContext = m_ViewModel;
 }
        public ExampleView()
        {
            Title = "Hours";
            var exampleViewModel = new ExampleViewModel();

            BindingContext = exampleViewModel;

            var listView = new ListView
            {
                ItemTemplate = new DataTemplate(() =>
                {
                    var jobId             = new Label();
                    jobId.Font            = Font.SystemFontOfSize(20);
                    jobId.WidthRequest    = 105;
                    jobId.VerticalOptions = LayoutOptions.Center;
                    jobId.SetBinding(Label.TextProperty, "JobId");
                    jobId.HorizontalOptions = LayoutOptions.StartAndExpand;
                    var jobName             = new Label();
                    jobName.VerticalOptions = LayoutOptions.Center;
                    jobName.SetBinding(Label.TextProperty, "JobName");
                    jobName.WidthRequest      = 175;
                    jobName.HorizontalOptions = LayoutOptions.CenterAndExpand;
                    var hours               = new Label();
                    hours.WidthRequest      = 45;
                    hours.VerticalOptions   = LayoutOptions.Center;
                    hours.XAlign            = TextAlignment.End;
                    hours.HorizontalOptions = LayoutOptions.EndAndExpand;
                    hours.SetBinding(Label.TextProperty, new Binding("Hours", BindingMode.OneWay, new DoubleStringConverter()));
                    var hlayout = new StackLayout();
                    hlayout.Children.Add(jobId);
                    hlayout.Children.Add(jobName);
                    hlayout.Children.Add(hours);
                    hlayout.Orientation = StackOrientation.Horizontal;
                    return((Cell) new ViewCell(hlayout));
                })
            };

            listView.SetBinding(ListView.ItemSourceProperty, new Binding("Jobs", BindingMode.TwoWay));

            var addOneJobButton = new Button
            {
                Text = "Add One"
            };

            addOneJobButton.SetBinding(Button.CommandProperty, new Binding("AddOneCommand"));

            var addTwoJobsButton = new Button
            {
                Text = "Add Two"
            };

            addTwoJobsButton.SetBinding(Button.CommandProperty, new Binding("AddTwoCommand"));

            var layout = new StackLayout
            {
                Orientation     = StackOrientation.Vertical,
                VerticalOptions = LayoutOptions.Start,
                Spacing         = 15
            };

            layout.Children.Add(listView);
            layout.Children.Add(addOneJobButton);
            layout.Children.Add(addTwoJobsButton);
            Content = layout;
        }
Пример #14
0
        public ExampleViewModel GetExample(string course, string name)
        {
            var dir        = _bl.GetExampleDir(course, name);
            var example    = _bl.GetExamples(course).Single(i => i.Name == name);
            var userUID    = _bl.GetCurrentUserUID();
            var pastResult = _bl.GetExampleResult(userUID, null, course, name);

            var vmdl = new ExampleViewModel(example);

            vmdl.SessionID = Guid.NewGuid();
            vmdl.StartTime = DateTime.Now;

            var angabe = Directory.GetFiles(Path.Combine(dir, "text"), "*Angabe_full.md").FirstOrDefault();

            if (angabe != null)
            {
                vmdl.Instruction = _bl.FixMarkdown(_bl.ReadTextFile(angabe));
            }
            else
            {
                _bl.LogParseError(Path.Combine(dir, "text", "*Angabe_full.md"), "No text/*Angabe_full.md file found.");
            }

            var use_this_main = Directory.GetFiles(Path.Combine(dir, "src"), "use_this_main.*").FirstOrDefault();

            if (use_this_main != null)
            {
                vmdl.UseThisMain = _bl.ReadTextFile(use_this_main);
            }
            else
            {
                vmdl.UseThisMain = "";
            }

            if (pastResult != null && !string.IsNullOrWhiteSpace(userUID))
            {
                try
                {
                    var store = _submissionStoreFactory(course, "^" + Path.GetFileName(name) + "$", userUID);
                    var main  = store.GetItems().FirstOrDefault(i => i.Name == example.FileName);
                    if (main != null)
                    {
                        using (var sr = new StreamReader(main.GetStream()))
                        {
                            vmdl.SourceCode = sr.ReadToEnd();
                        }
                    }
                }
                catch (Exception ex)
                {
                    _log.Warn("Error getting source code from git repo", ex);
                }
            }

            if (string.IsNullOrWhiteSpace(vmdl.SourceCode))
            {
                vmdl.SourceCode = vmdl.UseThisMain;
            }

            vmdl.TestFiles = Directory.GetFiles(Path.Combine(dir, "tests"), "*.in").Select(inFile =>
            {
                var path    = Path.GetDirectoryName(inFile);
                var result  = new TestFileViewModel();
                result.Name = Path.GetFileNameWithoutExtension(inFile);

                result.In   = _bl.ReadTextFile(inFile);
                result.SExp = _bl.ReadTextFile(Path.Combine(path, result.Name + ".sexp"));

                return(result);
            })
                             .OrderBy(i => i.Name)
                             .ToList();

            if (vmdl.TestFiles.Count == 0)
            {
                _bl.LogParseError(Path.Combine(dir, "tests", "*.in"), "No test files found.");
            }

            return(vmdl);
        }
        private void ExampleViewLoaded(object sender, RoutedEventArgs e)
        {
            DataContext = new ExampleViewModel();

            // DataContext = new ExampleViewModel2();
        }
Пример #16
0
 public async Task <IActionResult> Post([FromBody] ExampleViewModel model) => Ok(await _repo.InsertExampleAsync(model, User.FindFirst("uid")?.Value).ConfigureAwait(false));
Пример #17
0
 public async Task <IActionResult> Put(int Id, [FromBody] ExampleViewModel model) => Ok(await _repo.UpdateExampleAsync(Id, model, User.FindFirst("uid")?.Value).ConfigureAwait(false));
Пример #18
0
        public void LogicTest()
        {
            var test = new ExampleViewModel();

            StringAndObjectBindingAssert("(A == B) ? 10 : 20", test,
                                         () => { test.A = 4; test.B = 4; }, "10", 10,
                                         () => { test.A = 5; }, "20", 20
                                         );

            BoolBindingAssert("!IsChecked", test,
                              () => test.IsChecked = true, false,
                              () => test.IsChecked = false, true
                              );

            BoolBindingAssert("not IsChecked", test,
                              () => test.IsChecked = true, false,
                              () => test.IsChecked = false, true
                              );

            BoolBindingAssert("!IsChecked and IsFull", test,
                              () => { test.IsChecked = false; test.IsFull = false; }, false,
                              () => { test.IsChecked = false; test.IsFull = true; }, true
                              );

            BoolBindingAssert("IsChecked and not IsFull", test,
                              () => { test.IsChecked = true; test.IsFull = true; }, false,
                              () => { test.IsChecked = true; test.IsFull = false; }, true
                              );

            BoolBindingAssert("!IsChecked && IsFull", test,
                              () => { test.IsChecked = false; test.IsFull = false; }, false,
                              () => { test.IsChecked = false; test.IsFull = true; }, true
                              );

            BoolBindingAssert("!IsChecked or (A > B)", test,
                              () => { test.IsChecked = false; test.A = 20; test.B = 10; }, true,
                              () => { test.IsChecked = true; test.A = 4; }, false
                              );

            BoolBindingAssert("IsChecked || !IsFull", test,
                              () => { test.IsChecked = false; test.IsFull = true; }, false,
                              () => { test.IsFull = false; }, true
                              );

            BoolBindingAssert("A == 1 and (B <= 5)", test,
                              () => { test.A = 1; test.B = 10; }, false,
                              () => { test.B = 4; }, true
                              );

            BoolBindingAssert("A == 1 and (B less= 5)", test,
                              () => { test.A = 1; test.B = 6; }, false,
                              () => { test.B = 5; }, true
                              );

            BoolBindingAssert("A == 1 and (B less= 5)", test,
                              () => { test.A = 1; test.B = 5; }, true,
                              () => { test.B = 4; }, true
                              );

            BoolBindingAssert("A == 1 and (B less 5)", test,
                              () => { test.A = 1; test.B = 6; }, false,
                              () => { test.B = 5; }, false
                              );

            BoolBindingAssert("A == 1 and (B less 5)", test,
                              () => { test.A = 1; test.B = 5; }, false,
                              () => { test.B = 4; }, true
                              );
        }
Пример #19
0
 public async Task <int> InsertExampleAsync(ExampleViewModel vm, string User)
 {
     return(await _ctx.Database.ExecuteSqlInterpolatedAsync($"[dbo].[spInsertExample] {vm.Id}, {vm.Name}, {vm.DOB}, {vm.Active}, {User}"));
 }
Пример #20
0
        public void MathTest()
        {
            var test = new ExampleViewModel();

            StringAndObjectBindingAssert("A", test,
                                         () => test.A = 10, "10", (double)10,
                                         () => test.A = 20.34, "20.34", 20.34
                                         );

            StringAndObjectBindingAssert("A+B+C", test,
                                         () => { test.A = 10; test.B = 20; test.C = -2; }, "28", (double)28,
                                         () => { test.A = 20.34; test.B = 15; test.C = 12; }, "47.34", 47.34
                                         );

            StringAndObjectBindingAssert("A-B-C", test,
                                         () => { test.A = 10; test.B = 20; test.C = 5; }, "-15", (double)-15,
                                         () => { test.A = 5; test.B = 3; test.C = -7; }, "9", (double)9
                                         );

            StringAndObjectBindingAssert("A*(B-C)", test,
                                         () => { test.A = 10; test.B = 20; test.C = 5; }, "150", (double)150,
                                         () => { test.A = 5.4; test.B = 3; test.C = -8; },
                                         59.400000000000006.ToString(CultureInfo.InvariantCulture),
                                         59.400000000000006

                                         );

            StringAndObjectBindingAssert("2*A-B*0.5", test,
                                         () => { test.A = 10; test.B = 20; }, "10", (double)10,
                                         () => { test.A = 5.4; test.B = 3; }, "9.3", (double)9.3
                                         );

            StringAndObjectBindingAssert("A % B", test,
                                         () => { test.A = 10; test.B = 4; }, "2", (double)2,
                                         () => { test.A = 12; test.B = 7; }, "5", (double)5
                                         );

            //String Format with many values
            var calcBinding = new CalcBinding.Binding("A/B")
            {
                StringFormat = "{0:n2}"
            };

            StringBindingAssert(calcBinding, test,
                                () => { test.A = 10; test.B = 3; }, "3.33",
                                () => { test.A = 20; test.B = -30; }, "-0.67"
                                );

            //String Format with one value
            calcBinding = new CalcBinding.Binding("Math.Sin(A)")
            {
                StringFormat = "{0:n2}"
            };

            StringBindingAssert(calcBinding, test,
                                () => { test.A = 10; }, "-0.54",
                                () => { test.A = 20; }, "0.91"
                                );

            //many entries of parameter
            StringAndObjectBindingAssert("A + 0.5*NestedViewModel.A + A + B + C + A - B", test,
                                         () => { test.A = 10; test.NestedViewModel.A = 4; test.B = 5; test.C = 2; }, "34", (double)34,
                                         () => { test.A = 12; test.NestedViewModel.A = 14; test.B = -2; test.C = 9; }, "52", (double)52
                                         );

            StringAndObjectBindingAssert("-4+B", test,
                                         () => { test.B = 7; }, "3", 3,
                                         () => { test.B = 12; }, "8", 8
                                         );
        }
Пример #21
0
 static DocumentEditorViewModelMocks()
 {
     ExampleViewModelForDesignTime =
         new ExampleViewModelForDesignTime(new EventAggregator(), new WindowManager());
 }
Пример #22
0
        public void MathBackTest()
        {
            var test = new ExampleViewModel();

            StringAndObjectBindingBackAssert("A+5", test, () => test.A,
                                             "10.2", "-5", 10.2, -5,
                                             5.1999999999999993, (double)-10);

            StringAndObjectBindingBackAssert("-B+3.2", test, () => test.B,
                                             "-3.8", "8.3", -3.8, 8.3,
                                             7, -5);

            StringAndObjectBindingBackAssert("-4+B", test, () => test.B,
                                             "3", "5", 3, 5,
                                             7, 9);

            StringAndObjectBindingBackAssert("((A+5)*3)/4-32", test, () => test.A,
                                             "10.2", "-5", 10.2, -5,
                                             51.266666666666673, (double)31);

            // Math

            Console.WriteLine(Math.Sin(31 / 100.0));
            StringAndObjectBindingBackAssert("Math.Sin(B/100.0)", test, () => test.B,
                                             "0.5", "-0.9", 0.5, -0.9,
                                             52, -111);

            StringAndObjectBindingBackAssert("Math.Cos(B/100.0)", test, () => test.B,
                                             "0.5", "-0.9", 0.5, -0.9,
                                             104, 269);

            StringAndObjectBindingBackAssert("Math.Tan(B/100.0)", test, () => test.B,
                                             "0.5", "-0.9", 0.5, -0.9,
                                             46, -73);

            //inversed
            StringAndObjectBindingBackAssert("Math.Asin(B/100.0)", test, () => test.B,
                                             "0.5", "-0.9", 0.5, -0.9,
                                             47, -78);

            StringAndObjectBindingBackAssert("Math.Acos(B/100.0)", test, () => test.B,
                                             "0.5", "-0.9", 0.5, -0.9,
                                             87, 62);

            StringAndObjectBindingBackAssert("Math.Atan(B/100.0)", test, () => test.B,
                                             "0.5", "-0.9", 0.5, -0.9,
                                             54, -126);

            StringAndObjectBindingBackAssert("Math.Pow(B, 4)", test, () => test.B,
                                             "16", "256", 16, 256,
                                             2, 4);

            StringAndObjectBindingBackAssert("Math.Pow(4, B)", test, () => test.B,
                                             "16", "1", 16, 1,
                                             2, 0);

            StringAndObjectBindingBackAssert("Math.Pow(B, -1)", test, () => test.B,
                                             "0.1", "0.05", 0.1, 0.05,
                                             10, 20);

            StringAndObjectBindingBackAssert("Math.Log(B, 5)", test, () => test.B,
                                             "4", "-3.4", 4, -3.4,
                                             625, 0);

            StringAndObjectBindingBackAssert("Math.Log(16, B)", test, () => test.B,
                                             "2", "1", 2, 1,
                                             4, 16);

            StringAndObjectBindingBackAssert("Math.Sin(Math.Cos(B/100.0))", test, () => test.B,
                                             "0.8", "-0.2", 0.8, -0.2,
                                             38, 177);
        }
Пример #23
0
        public void DataTriggerTest()
        {
            var viewModel = new ExampleViewModel()
            {
                A = 1, B = 1
            };
            var text = new TextBox
            {
                DataContext = viewModel
            };

            var dataTrigger1 = new DataTrigger
            {
                Value = true
            };

            dataTrigger1.Setters.Add(new Setter {
                Property = TextBox.BackgroundProperty, Value = Brushes.Red
            });
            dataTrigger1.Setters.Add(new Setter {
                Property = TextBox.IsEnabledProperty, Value = true
            });

            var calcBinding1 = new CalcBinding.Binding("(A+B)>10");

            var bindingExpression1 = calcBinding1.ProvideValue(
                new ServiceProviderMock(dataTrigger1, typeof(DataTrigger).GetProperty("Binding"), null)
                .WithNullXamlSchemaContextProvider()
                );

            dataTrigger1.Binding = bindingExpression1 as BindingBase;

            var dataTrigger2 = new DataTrigger
            {
                Value = true,
            };

            dataTrigger2.Setters.Add(new Setter {
                Property = TextBox.BackgroundProperty, Value = Brushes.Green
            });
            dataTrigger2.Setters.Add(new Setter {
                Property = TextBox.IsEnabledProperty, Value = false
            });

            var calcBinding2 = new CalcBinding.Binding("(A+B)<=10");

            var bindingExpression2 = calcBinding2.ProvideValue(
                new ServiceProviderMock(dataTrigger2, typeof(DataTrigger).GetProperty("Binding"), null)
                .WithNullXamlSchemaContextProvider()
                );

            dataTrigger2.Binding = bindingExpression2 as BindingBase;

            var style = new Style();

            style.Triggers.Add(dataTrigger1);
            style.Triggers.Add(dataTrigger2);

            text.Style = style;

            // act, assert
            viewModel.A = 5;
            viewModel.B = 7;

            Assert.AreEqual(Brushes.Red, text.Background);
            Assert.AreEqual(true, text.IsEnabled);

            viewModel.B = 2;

            Assert.AreEqual(Brushes.Green, text.Background);
            Assert.AreEqual(false, text.IsEnabled);
        }
Пример #24
0
        public IActionResult Index()
        {
            ExampleViewModel viewModel = new ExampleViewModel();

            return(View(viewModel));
        }