protected override ValidationResult IsValid(object value, ValidationContext validationContext) { PValueAdjustmentUserBasedInputsModel model = (PValueAdjustmentUserBasedInputsModel)validationContext.ObjectInstance; if (String.IsNullOrEmpty(model.PValues)) { return(new ValidationResult("P values have not been set")); } else //check to ensure that values in list are all numbers and are all comma separated and >0 { string[] pValues = model.PValues.Replace(" ", "").Split(','); //split list by comma foreach (string p in pValues) //go through list and check that is a number and is greater than 0 { if (!Double.TryParse(p, out double number) && p != "<0.001" && p != "<0.0001") //n.b. remove < sign when checking { return(new ValidationResult("P values contains non-numeric values detected or values are not comma separated.")); } else if (number < 0) { return(new ValidationResult("All p-values must be greater than zero")); } else if (number > 1) { return(new ValidationResult("All p-values must be less than 1.")); } } return(ValidationResult.Success); } }
public async Task PVA18() { string testName = "PVA18"; //Arrange HttpClient client = _factory.CreateClient(); PValueAdjustmentUserBasedInputsModel model = new PValueAdjustmentUserBasedInputsModel(); model.PValues = "<0.001,0.4"; model.SelectedTest = "Hochberg"; model.Significance = "0.10"; //Act HttpResponseMessage response = await client.PostAsync("Analyses/PValueAdjustmentUserBasedInputs", new FormUrlEncodedContent(model.ToKeyValue())); IEnumerable <string> warnings = await Helpers.ExtractWarnings(response); //Assert Assert.Contains("You have entered unadjusted p-value(s) of the form <0.001. For the purposes of the numerical calculations this value has been replaced with 0.00099 and hence the adjusted p-values may be unduly conservative.", warnings); Helpers.SaveOutput("PValueAdjustmentUserBasedInputs", testName, warnings); //Act - ignore warnings var modelIgnoreWarnings = model.ToKeyValue(); modelIgnoreWarnings.Add("ignoreWarnings", "true"); StatsOutput statsOutput = await Helpers.SubmitAnalysis(client, "PValueAdjustmentUserBasedInputs", new FormUrlEncodedContent(modelIgnoreWarnings)); Helpers.SaveTestOutput("PValueAdjustmentUserBasedInputs", model, testName, statsOutput); //Assert string expectedHtml = File.ReadAllText(Path.Combine("ExpectedResults", "PValueAdjustmentUserBasedInputs", testName + ".html")); Assert.Equal(Helpers.RemoveAllImageNodes(expectedHtml), Helpers.RemoveAllImageNodes(statsOutput.HtmlResults)); }
public void LoadArguments_ReturnsCorrectArguments() { //Arrange System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; PValueAdjustmentUserBasedInputsModel sut = new PValueAdjustmentUserBasedInputsModel(); List <Argument> arguments = new List <Argument>(); arguments.Add(new Argument { Name = "SelectedTest", Value = "Hochberg" }); arguments.Add(new Argument { Name = "Significance", Value = "0.01" }); arguments.Add(new Argument { Name = "PValues", Value = "0.01,0.01,0.5" }); Assert.Equal(3, arguments.Count); //Act sut.LoadArguments(arguments); //Assert Assert.Equal("Hochberg", sut.SelectedTest); Assert.Equal("0.01", sut.Significance); Assert.Equal("0.01,0.01,0.5", sut.PValues); }
private PValueAdjustmentUserBasedInputsModel GetModel() { var model = new PValueAdjustmentUserBasedInputsModel { SelectedTest = "Hochberg", Significance = "0.01", PValues = "0.01,0.01,0.5" }; return(model); }
public void ScriptFileName_ReturnsCorrectString() { //Arrange System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; PValueAdjustmentUserBasedInputsModel sut = new PValueAdjustmentUserBasedInputsModel(); //Act string result = sut.ScriptFileName; //Assert Assert.Equal("PValueAdjustmentUserBasedInputs", result); }
public void GetCommandLineArguments_ReturnsCorrectString() { //Arrange System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; PValueAdjustmentUserBasedInputsModel sut = GetModel(); //Act string result = sut.GetCommandLineArguments(); //Assert Assert.Equal("0.01,0.01,0.5 Hochberg 0.01", result); }
public void MultipleComparisonTestsList_ReturnsCorrectList() { //Arrange System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; PValueAdjustmentUserBasedInputsModel sut = new PValueAdjustmentUserBasedInputsModel(); //Act IEnumerable <string> result = sut.MultipleComparisonTests; //Assert Assert.IsAssignableFrom <IEnumerable <string> >(result); Assert.Equal(new List <string>() { "Holm", "Hochberg", "Hommel", "Benjamini-Hochberg", "Bonferroni" }, result); }
public void SignificancesList_ReturnsCorrectList() { //Arrange System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; PValueAdjustmentUserBasedInputsModel sut = new PValueAdjustmentUserBasedInputsModel(); //Act IEnumerable <string> result = sut.SignificancesList; //Assert Assert.IsAssignableFrom <IEnumerable <string> >(result); Assert.Equal(new List <string>() { "0.1", "0.05", "0.01", "0.001" }, result); }
public async Task PVA4() { string testName = "PVA4"; //Arrange HttpClient client = _factory.CreateClient(); PValueAdjustmentUserBasedInputsModel model = new PValueAdjustmentUserBasedInputsModel(); model.PValues = "<0.0001,0.02"; model.SelectedTest = "Holm"; //Act HttpResponseMessage response = await client.PostAsync("Analyses/PValueAdjustmentUserBasedInputs", new FormUrlEncodedContent(model.ToKeyValue())); IEnumerable <string> warnings = await Helpers.ExtractWarnings(response); //Assert Assert.Contains("You have entered unadjusted p-value(s) of the form <0.0001. For the purposes of the numerical calculations this value has been replaced with 0.000099 and hence the adjusted p-values may be unduly conservative.", warnings); Helpers.SaveOutput("PValueAdjustmentUserBasedInputs", testName, warnings); }
public async Task PVA2() { string testName = "PVA2"; //Arrange HttpClient client = _factory.CreateClient(); PValueAdjustmentUserBasedInputsModel model = new PValueAdjustmentUserBasedInputsModel(); model.PValues = "0.01 0.02 1.2"; model.SelectedTest = "Holm"; //Act HttpResponseMessage response = await client.PostAsync("Analyses/PValueAdjustmentUserBasedInputs", new FormUrlEncodedContent(model.ToKeyValue())); IEnumerable <string> errors = await Helpers.ExtractErrors(response); //Assert Assert.Contains("P values contains non-numeric values detected or values are not comma separated.", errors); Helpers.SaveOutput("PValueAdjustmentUserBasedInputs", testName, errors); }
public async Task PVA8() { string testName = "PVA8"; //Arrange HttpClient client = _factory.CreateClient(); PValueAdjustmentUserBasedInputsModel model = new PValueAdjustmentUserBasedInputsModel(); model.PValues = "0.06,0.1,0.2"; model.SelectedTest = "Holm"; //Act StatsOutput statsOutput = await Helpers.SubmitAnalysis(client, "PValueAdjustmentUserBasedInputs", new FormUrlEncodedContent(model.ToKeyValue())); Helpers.SaveTestOutput("PValueAdjustmentUserBasedInputs", model, testName, statsOutput); //Assert string expectedHtml = File.ReadAllText(Path.Combine("ExpectedResults", "PValueAdjustmentUserBasedInputs", testName + ".html")); Assert.Equal(Helpers.RemoveAllImageNodes(expectedHtml), Helpers.RemoveAllImageNodes(statsOutput.HtmlResults)); }
public void GetArguments_ReturnsCorrectArguments() { //Arrange System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; PValueAdjustmentUserBasedInputsModel sut = GetModel(); //Act List <Argument> result = sut.GetArguments().ToList(); //Assert var selectedTest = result.Single(x => x.Name == "SelectedTest"); Assert.Equal("Hochberg", selectedTest.Value); var significance = result.Single(x => x.Name == "Significance"); Assert.Equal("0.01", significance.Value); var pValues = result.Single(x => x.Name == "PValues"); Assert.Equal("0.01,0.01,0.5", pValues.Value); }
public async Task PVA16() { string testName = "PVA16"; //Arrange HttpClient client = _factory.CreateClient(); PValueAdjustmentUserBasedInputsModel model = new PValueAdjustmentUserBasedInputsModel(); model.PValues = "0.001,0.002,0.003,0.004,0.4"; model.SelectedTest = "Hochberg"; model.Significance = "0.10"; //Act StatsOutput statsOutput = await Helpers.SubmitAnalysis(client, "PValueAdjustmentUserBasedInputs", new FormUrlEncodedContent(model.ToKeyValue())); Helpers.SaveTestOutput("PValueAdjustmentUserBasedInputs", model, testName, statsOutput); //Assert string expectedHtml = File.ReadAllText(Path.Combine("ExpectedResults", "PValueAdjustmentUserBasedInputs", testName + ".html")); Assert.Equal(Helpers.FixForUnixOSs(expectedHtml), Helpers.FixForUnixOSs(statsOutput.HtmlResults)); }
public async Task <IActionResult> PValueAdjustmentUserBasedInputs(PValueAdjustmentUserBasedInputsModel model, bool ignoreWarnings) { return(await RunAnalysis(model, ignoreWarnings)); }
public PValueAdjustmentUserBasedInputsValidator(PValueAdjustmentUserBasedInputsModel pv) { pvVariables = pv; }