public static bool Validate_ColorPicker(SubPrompt prompt, UserSubForm subForm)
        {
            bool promptedForColorPicker = prompt.ColorPicker;
            bool providedColorPicker    = !string.IsNullOrWhiteSpace(subForm.Color);

            return(promptedForColorPicker == providedColorPicker);
        }
        public static bool Validate_Drawing(SubPrompt prompt, UserSubForm subForm)
        {
            bool promptedForDrawing = prompt.Drawing != null;
            bool providedDrawing    = !string.IsNullOrWhiteSpace(subForm.Drawing);

            return(promptedForDrawing == providedDrawing);
        }
        public static bool Validate_ShortAnswer(SubPrompt prompt, UserSubForm subForm)
        {
            bool promptedForShortAnswer = prompt.ShortAnswer;
            bool providedShortAnswer    = !string.IsNullOrWhiteSpace(subForm.ShortAnswer);

            return(promptedForShortAnswer == providedShortAnswer);
        }
        public static bool Validate_Dropdown(SubPrompt prompt, UserSubForm subForm)
        {
            bool promptedForDropdown = prompt.Dropdown != null;
            bool providedDropdown    = subForm.DropdownChoice.HasValue;
            bool validSubmission     = !providedDropdown || (subForm.DropdownChoice.Value >= 0 && subForm.DropdownChoice.Value < prompt.Dropdown.Length);

            return((promptedForDropdown == providedDropdown) && validSubmission);
        }
        public static bool Validate_Selector(SubPrompt prompt, UserSubForm subForm)
        {
            bool promptedForSelector = prompt.Selector != null;
            bool providedSelector    = subForm.Selector.HasValue;
            bool submissionValid     = !providedSelector || (subForm.Selector.Value >= 0 && subForm.Selector.Value < (prompt.Selector?.ImageList?.Length ?? 0));

            return((promptedForSelector == providedSelector) && submissionValid);
        }
        public static bool Validate_Answers(SubPrompt prompt, UserSubForm subForm)
        {
            bool promptedForAnswers = prompt.Answers != null;
            bool providedAnswers    = subForm.RadioAnswer.HasValue;
            bool submissionValid    = !providedAnswers || (subForm.RadioAnswer.Value >= 0 && subForm.RadioAnswer.Value < prompt.Answers.Length);

            return((promptedForAnswers == providedAnswers) && submissionValid);
        }
Example #7
0
        private T TryExtractObjectVotedFor(User user, UserFormSubmission submission)
        {
            SubPrompt subPrompt      = this.PromptsPerUser[user].SubPrompts[0];
            T         objectVotedFor = null;

            if (subPrompt?.Answers != null && (submission?.SubForms?.FirstOrDefault()?.RadioAnswer != null))
            {
                objectVotedFor = this.ObjectList[submission.SubForms.FirstOrDefault().RadioAnswer.Value];
            }
            else if (subPrompt?.Selector?.ImageList != null && (submission?.SubForms?.FirstOrDefault()?.Selector != null))
            {
                objectVotedFor = this.ObjectList[submission.SubForms[0].Selector.Value];
            }
            return(objectVotedFor);
        }
Example #8
0
        private void ValidateUserPrompt(UserPrompt prompt)
        {
            // Syntax below is from Fluent assertions
            prompt.SubPrompts.Should().NotBeNull().And.HaveCount(1, because: "VotingGameState only equipped to handle 1 subprompt.");

            SubPrompt subPrompt = prompt.SubPrompts[0];

            if (subPrompt.Answers != null)
            {
                subPrompt.Answers.Should().HaveCount(this.ObjectList.Count, "Answers list length should match length of voting object list");
            }
            if (subPrompt?.Selector?.ImageList != null)
            {
                subPrompt.Selector.ImageList.Should().HaveCount(this.ObjectList.Count, "Answers list length should match length of voting object list");
            }
        }
        public static bool Validate_Slider(SubPrompt prompt, UserSubForm subForm)
        {
            bool promptedForSlider = prompt.Slider != null;
            bool providedSlider    = subForm.Slider != null;

            if (!promptedForSlider || !providedSlider)
            {
                return(promptedForSlider == providedSlider);
            }

            bool validSubmission = true;

            // Range sliders should have a list of length 2 (min, max). Nonrange sliders should only have one value.
            validSubmission &= (subForm.Slider.Count == (prompt.Slider.Range ? 2 : 1));
            validSubmission &= subForm.Slider.All(val => (val >= prompt.Slider.Min) && (val <= prompt.Slider.Max));
            validSubmission &= subForm.Slider.Count == 1 || (subForm.Slider[0] <= subForm.Slider[1]);

            return(validSubmission);
        }
Example #10
0
 public static UserSubForm WithDefaults(UserSubForm partialSubmission, SubPrompt prompt)
 {
     if (prompt == null)
     {
         throw new ArgumentNullException($"prompt was null");
     }
     // TODO: default to selecting random choice.
     return(new UserSubForm()
     {
         Id = prompt.Id,
         ShortAnswer = prompt.ShortAnswer ? (partialSubmission?.ShortAnswer ?? "N/A") : null,
         Drawing = (prompt.Drawing != null) ? (partialSubmission?.Drawing ?? Constants.Drawings.DefaultDrawing(prompt.Drawing.DrawingType)) : null,
         Selector = (prompt.Selector != null) ? (partialSubmission?.Selector ?? (int?)0) : null,
         Slider = (prompt.Slider != null) ? (partialSubmission?.Slider ?? (prompt.Slider.Range ? new List <int> {
             prompt.Slider.Min, prompt.Slider.Max
         } : new List <int> {
             prompt.Slider.Min
         })): null,
         DropdownChoice = (prompt.Dropdown != null) ? (partialSubmission?.DropdownChoice ?? (int?)0): null,
         RadioAnswer = (prompt.Answers != null) ? (partialSubmission?.RadioAnswer ?? (int?)0) : null,
         Color = prompt.ColorPicker ? (partialSubmission?.Color ?? Constants.Colors.DarkGray) : null,
     });
 }