public void Test_DialogueController_StartDialogue()
        {
            Assert.AreEqual(m_currentDialogue, null);

            for (int i = 0; i < 3; i++)
            {
                m_dialogueController.StartDialogue();
                Assert.AreEqual(m_currentDialogue, m_dialogue);

                // begin text
                m_dialogueController.Next();
                Assert.AreEqual(m_currentDialogueText, "Begin Text");

                m_dialogueController.Next();
                Assert.AreEqual(m_currentDialogueText, "Text 1");

                m_dialogueController.Next();
                Assert.AreEqual(m_currentDialogueText, "Text 2.1");

                m_dialogueController.Next();
                Assert.AreEqual(m_currentDialogueText, null);

                // current dialogue has ended
                Assert.AreEqual(m_currentDialogue, null);
            }
        }
Beispiel #2
0
        public void TestOptions()
        {
            Assert.AreEqual(m_currentDialogue, null);

            /**
             * Test to select Option 1
             */

            // begin dialogue
            m_dialogueController.StartDialogue();
            Assert.AreEqual(m_currentDialogue, m_dialogue);

            // begin text
            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, "Begin Text");

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, "Text 1");
            Assert.AreEqual(m_currentDialogueOptions, null);

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, null);
            Assert.AreNotEqual(m_currentDialogueOptions, null);

            // Dialogue options keep emitting
            m_dialogueController.Next();
            Assert.AreNotEqual(m_currentDialogueOptions, null);
            Assert.AreEqual(m_currentDialogueOptions.Count, 2);

            DialogueOption dialogueOption1 = m_currentDialogueOptions[0];

            m_dialogueController.SelectOption(dialogueOption1);
            Assert.AreEqual(m_currentDialogueText, "Text 2.1");
            Assert.AreEqual(m_currentDialogueOptions, null);

            // No effect
            m_dialogueController.SelectOption(dialogueOption1);
            Assert.AreEqual(m_currentDialogueText, "Text 2.1");
            Assert.AreEqual(m_currentDialogueOptions, null);

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, null);

            // current dialogue has ended
            Assert.AreEqual(m_currentDialogue, null);

            /**
             * Test to select Option 1
             */

            // begin dialogue
            m_dialogueController.StartDialogue();
            Assert.AreEqual(m_currentDialogue, m_dialogue);

            // begin text
            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, "Begin Text");

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, "Text 1");
            Assert.AreEqual(m_currentDialogueOptions, null);

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, null);
            Assert.AreNotEqual(m_currentDialogueOptions, null);

            // Dialogue options keep emitting
            m_dialogueController.Next();
            Assert.AreNotEqual(m_currentDialogueOptions, null);
            Assert.AreEqual(m_currentDialogueOptions.Count, 2);

            DialogueOption dialogueOption2 = m_currentDialogueOptions[0];

            m_dialogueController.SelectOption(dialogueOption2);
            Assert.AreEqual(m_currentDialogueText, "Text 2.1");
            Assert.AreEqual(m_currentDialogueOptions, null);

            // No effect
            m_dialogueController.SelectOption(dialogueOption2);
            Assert.AreEqual(m_currentDialogueText, "Text 2.1");
            Assert.AreEqual(m_currentDialogueOptions, null);

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, null);

            /**
             * Test to select Option 2
             */

            // begin dialogue
            m_dialogueController.StartDialogue();
            Assert.AreEqual(m_currentDialogue, m_dialogue);

            // begin text
            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, "Begin Text");

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, "Text 1");
            Assert.AreEqual(m_currentDialogueOptions, null);

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, null);
            Assert.AreNotEqual(m_currentDialogueOptions, null);

            // Dialogue options keep emitting
            m_dialogueController.Next();
            Assert.AreNotEqual(m_currentDialogueOptions, null);
            Assert.AreEqual(m_currentDialogueOptions.Count, 2);

            DialogueOption dialogueOption3 = m_currentDialogueOptions[1];

            m_dialogueController.SelectOption(dialogueOption3);
            Assert.AreEqual(m_currentDialogueText, "Text 2.2");
            Assert.AreEqual(m_currentDialogueOptions, null);

            // No effect
            m_dialogueController.SelectOption(dialogueOption3);
            Assert.AreEqual(m_currentDialogueText, "Text 2.2");
            Assert.AreEqual(m_currentDialogueOptions, null);

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, null);
        }
        public void TestLinearDialogue()
        {
            /* Setup */
            Dialogue linearDialogue = ScriptableObject.CreateInstance <Dialogue>();

            DialogueText beginText = ScriptableObject.CreateInstance <DialogueText>();

            Utils.ExecuteSetter(beginText, "m_text", (textProp) => {
                textProp.stringValue = "Begin Text";
            });

            Utils.ExecuteSetter(linearDialogue, "m_finalBeginText", (finalBeginTextProp) => {
                finalBeginTextProp.objectReferenceValue = beginText;
            });
            Utils.ExecuteSetter(linearDialogue, "m_dialogueNodes", (dialogueNodesProp) => {
                DialogueText text1 = ScriptableObject.CreateInstance <DialogueText>();
                Utils.ExecuteSetter(text1, "m_text", (textProp) => textProp.stringValue = "Text 1");

                DialogueText text2 = ScriptableObject.CreateInstance <DialogueText>();
                Utils.ExecuteSetter(text2, "m_text", (textProp) => textProp.stringValue = "Text 2");

                Utils.ExecuteSetterArrayAutoIncrement(dialogueNodesProp, null, (dialogueNodeProp) => {
                    Utils.ExecuteSetter(dialogueNodeProp, "m_dialogueText", (dialogueTextProp) => {
                        dialogueTextProp.objectReferenceValue = beginText;
                    });
                    Utils.ExecuteSetter(dialogueNodeProp, "m_finalNext", (finalNextProp) => {
                        finalNextProp.objectReferenceValue = text1;
                    });
                });
                Utils.ExecuteSetterArrayAutoIncrement(dialogueNodesProp, null, (dialogueNodeProp) => {
                    Utils.ExecuteSetter(dialogueNodeProp, "m_dialogueText", (dialogueTextProp) => {
                        dialogueTextProp.objectReferenceValue = text1;
                    });
                    Utils.ExecuteSetter(dialogueNodeProp, "m_finalNext", (finalNextProp) => {
                        finalNextProp.objectReferenceValue = text2;
                    });
                });
                Utils.ExecuteSetterArrayAutoIncrement(dialogueNodesProp, null, (dialogueNodeProp) => {
                    Utils.ExecuteSetter(dialogueNodeProp, "m_dialogueText", (dialogueTextProp) => {
                        dialogueTextProp.objectReferenceValue = text2;
                    });
                    Utils.ExecuteSetter(dialogueNodeProp, "m_finalNext", (finalNextProp) => {
                        finalNextProp.objectReferenceValue = null;
                    });
                });
            });
            /** End setup **/

            Utils.ExecuteSetter(m_dialogueController, "m_dialogue", (dialogueProp) => {
                dialogueProp.objectReferenceValue = linearDialogue;
            });

            Assert.AreEqual(m_currentDialogue, null);

            // begin dialogue
            m_dialogueController.StartDialogue();
            Assert.AreEqual(m_currentDialogue, linearDialogue);

            // begin text
            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, "Begin Text");

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, "Text 1");

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, "Text 2");

            m_dialogueController.Next();
            Assert.AreEqual(m_currentDialogueText, null);

            // current dialogue has ended
            Assert.AreEqual(m_currentDialogue, null);
        }