예제 #1
0
        private void App_OnStartup(object sender, StartupEventArgs e)
        {
            var parser = new QuestionParser();
            var errors = parser.TryParse(e.Args, out var questions);

            if (errors.Any())
            {
                Console.Error.WriteLine("Failed to parse arguments");
                errors.ForEach(err => Console.Error.WriteLine(err));
            }

            if (!questions.Any())
            {
                Console.WriteLine(
                    @"Usage: askme.exe ""question"" [""question=answer"", ""key:question"", ""key:question=answer""...]");
                ExitWithCode(1);
                return;
            }

            var dialog    = new QueryFormWindow(new QueryFormViewModel(questions));
            var submitted = dialog.ShowDialog() ?? false;

            if (!submitted)
            {
                ExitWithCode(2);
                return;
            }

            var response = dialog.Model.ToPromptResponse();

            Console.WriteLine(JsonSerializer.Serialize(response.Answers));
        }
예제 #2
0
        public void FailsWithEmptyQuestion()
        {
            const string q      = "key:";
            var          parser = new QuestionParser();

            var result = parser.TryParse(q, out var prompt);

            Assert.False(result);
            Assert.Null(prompt);
        }
예제 #3
0
        public void IgnoresEmptyAnswer()
        {
            const string q      = "question=";
            var          parser = new QuestionParser();

            var result = parser.TryParse(q, out var prompt);

            Assert.True(result);
            Assert.Equal("question", prompt.Question);
            Assert.Null(prompt.Answer);
        }
예제 #4
0
        public void CanParseSimpleQuestions()
        {
            const string q      = "question";
            var          parser = new QuestionParser();

            var result = parser.TryParse(q, out var prompt);

            Assert.True(result);
            Assert.Equal(q, prompt.Question);
            Assert.Equal(q, prompt.Key);
        }
예제 #5
0
    // Start is called before the first frame update
    void Start()
    {
        QuestionParser qp = new QuestionParser();

        List <Question> questions = qp.ParseTxt();

        for (int i = 0; i < questions.Count; i++)
        {
            questions[i].DebugQuestion();
        }
    }
예제 #6
0
        public void CanParseKeyQuestionAndAnswer()
        {
            const string q      = "key:question=answer";
            var          parser = new QuestionParser();

            var result = parser.TryParse(q, out var prompt);

            Assert.True(result);
            Assert.Equal("question", prompt.Question);
            Assert.Equal("key", prompt.Key);
            Assert.Equal("answer", prompt.Answer);
        }
예제 #7
0
        public void Parse_MultiLine_ValueVariable()
        {
            var questions = new string[]
            {
                "pi = 3.14",
                "2 * pi"
            };

            string[] answers = QuestionParser.Parse(questions);

            Assert.AreEqual("6.28", answers[1]);
        }
예제 #8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DependencyRegistry" /> class.
        /// </summary>
        public DependencyRegistry()
        {
            string[]   questionLines   = Resource1.code_challenge_question_dump.Split('\n').Skip(1).Select(x => x.Trim()).Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();
            Question[] questionsToLoad = QuestionParser.Parse(questionLines);
            InMemoryQuestionRepository questionRepository = new InMemoryQuestionRepository();

            foreach (Question question in questionsToLoad)
            {
                questionRepository.Insert(question);
            }

            For <IQuestionRepository>().Singleton().Use(questionRepository);
        }
예제 #9
0
        public void Parse_MultiLine_LineVariable()
        {
            var questions = new string[]
            {
                "3 + 7",
                "line1 * 2"
            };

            string[] answers = QuestionParser.Parse(questions);

            Assert.AreEqual("10", answers[0]);
            Assert.AreEqual("20", answers[1]);
        }
예제 #10
0
    void Start()
    {
        vocaList      = FindObjectOfType <QuestionParser>();
        randomIntList = new Queue <int>();

        for (int i = 0; i < CAPACITY; i++)
        {
            randomIntList.Enqueue(Random.Range(0, vocaList.voca.Count));
        }
        display = FindObjectOfType <QuestionDisplay>();

        StartCoroutine(AssignQuestions());
    }
예제 #11
0
 void Awake()
 {
     if (instance != null && instance != this)
     {
         Destroy(this.gameObject);
         return;
     }
     else
     {
         instance = this;
     }
     DontDestroyOnLoad(this.gameObject);
 }
예제 #12
0
        public void Parse_MultiLine_MultiValueVariables()
        {
            var questions = new string[]
            {
                "pi = 3.14",
                "pi2 = 2 * pi",
                "pi + pi2"
            };

            string[] answers = QuestionParser.Parse(questions);

            Assert.AreEqual("9.42", answers[2]);
        }
        public void Test_multiple_lines()
        {
            string[] lines = new string[]
            {
                "What is 1754 - 3936?|-2182|3176, 6529, 6903",
                "What is 7269 * 2771?|20142399|874",
            };

            Question[] questions = QuestionParser.Parse(lines);
            Assert.AreEqual(2, questions.Length);
            Assert.AreEqual("What is 7269 * 2771?", questions[1].Text);
            Assert.AreEqual("20142399", questions[1].Answer);
            Assert.AreEqual(1, questions[1].Distractors.Length);
            Assert.AreEqual("874", questions[1].Distractors[0]);
        }
예제 #14
0
        public void Parse_PercentOff()
        {
            var questions = new string[]
            {
                "25% off $100",
                "30% off 50",
                "12.5% off 25.5"
            };

            string[] answers = QuestionParser.Parse(questions);

            Assert.AreEqual((100 - (100 * 25 / 100)).ToString(), answers[0]);
            Assert.AreEqual((50 - (50 * 30 / 100)).ToString(), answers[1]);
            Assert.AreEqual((25.5 - (25.5 * 12.5 / 100)).ToString(), answers[2]);
        }
        public void Test_single_line()
        {
            string[] lines = new string[]
            {
                "What is 1754 - 3936?|-2182|3176, 6529, 6903"
            };

            Question[] questions = QuestionParser.Parse(lines);
            Assert.AreEqual(1, questions.Length);
            Assert.AreEqual("What is 1754 - 3936?", questions[0].Text);
            Assert.AreEqual("-2182", questions[0].Answer);
            Assert.AreEqual(3, questions[0].Distractors.Length);
            Assert.AreEqual("3176", questions[0].Distractors[0]);
            Assert.AreEqual("6529", questions[0].Distractors[1]);
            Assert.AreEqual("6903", questions[0].Distractors[2]);
        }
        public void Test_blank_answer_throws_exception()
        {
            string[] lines = new string[]
            {
                "What is 7269 * 2771?||874",
            };

            try
            {
                Question[] questions = QuestionParser.Parse(lines);
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.AreEqual("Missing Answer: What is 7269 * 2771?||874", e.Message);
            }
        }
        public void Test_blank_question_throws_exception()
        {
            string[] lines = new string[]
            {
                "|20142399|874",
            };

            try
            {
                Question[] questions = QuestionParser.Parse(lines);
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.AreEqual("Missing question text: |20142399|874", e.Message);
            }
        }
        public void Test_too_few_tabs_question_throws_exception()
        {
            string[] lines = new string[]
            {
                "What is 7269 * 2771?|20142399",
            };

            try
            {
                Question[] questions = QuestionParser.Parse(lines);
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.AreEqual("Invalid line: What is 7269 * 2771?|20142399", e.Message);
            }
        }
        public void Test_blank_distractors_throws_exception()
        {
            string[] lines = new string[]
            {
                "What is 7269 * 2771?|20142399|",
            };

            try
            {
                Question[] questions = QuestionParser.Parse(lines);
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.AreEqual("Missing distractors: What is 7269 * 2771?|20142399|", e.Message);
            }
        }
예제 #20
0
        public void Parse_MultiLine_MultiLineVariables()
        {
            var questions = new string[]
            {
                "3 + 7",
                "line1 * 2",
                "(line1 + line2) / 2",
                "",
                "line3"
            };

            string[] answers = QuestionParser.Parse(questions);

            Assert.AreEqual("10", answers[0]);
            Assert.AreEqual("20", answers[1]);
            Assert.AreEqual("15", answers[2]);
            Assert.AreEqual("", answers[3]);
            Assert.AreEqual("15", answers[4]);
        }
예제 #21
0
        static void Main(string[] args)
        {
            Win32Console.AttachConsole();

            if (!args.Any())
            {
                Console.WriteLine(
                    @"Usage: askme.exe ""question"" [""question=answer"", ""key:question"", ""key:question=answer""...]");
                Exit(1);
                return;
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            var parser = new QuestionParser();
            var errors = parser.TryParse(args, out var qs);

            if (errors.Any())
            {
                Console.Error.WriteLine("Failed to parse questions");
                errors.ForEach(e => Console.Error.WriteLine($"Failed to parse: {e}"));
                Exit(1);
                return;
            }

            using var form = new PromptForm(qs);
            var result = form.ShowDialog();

            if (result != DialogResult.OK)
            {
                Exit(-1);
                return;
            }

            var answers = form.Response.Answers;

            Console.WriteLine(JsonSerializer.Serialize(answers));

            Exit();
        }
예제 #22
0
    IEnumerator GetQuestion()
    {
        string          url     = $"https://www.zutto-oreno-turn.com/cdn/eigo/question/category/tweet/CNN.json";
        UnityWebRequest request = UnityWebRequest.Get(url);

        request.SetRequestHeader("Content-Type", "application/json");
        yield return(request.SendWebRequest());

        QuestionParser data = JsonUtility.FromJson <QuestionParser>(request.downloadHandler.text);

        Questions = data.questions;

        if (PlayData.CurrentQuestionNumber >= Questions.Length)
        {
            MakeWaitScreen();
        }
        else
        {
            MakePlayPanel();
        }
    }
예제 #23
0
 public DispenseController(IHostingEnvironment env)
 {
     _qParser = new QuestionParser(env.ContentRootPath + "//Tests//");
 }
 public void Test_parse_sample_file()
 {
     string[]   lines     = Resource1.code_challenge_question_dump.Split('\n').Skip(1).Select(x => x.Trim()).ToArray();
     Question[] questions = QuestionParser.Parse(lines);
     Assert.AreEqual(4000, questions.Length);
 }
예제 #25
0
        private void txtQuestions_TextChanged(object sender, EventArgs e)
        {
            SetLineNumbers();

            txtAnswers.Lines = QuestionParser.Parse(txtQuestions.Lines);
        }
 public static void AddParser(QuestionParser parser)
 {
     Parsers.Add(parser);
 }
예제 #27
0
 public static void AddParser(QuestionParser parser)
 {
     Pipeline.Add(parser);
 }