コード例 #1
0
        public void T_GetNext_SimpleLongChain()
        {
            ChainGenerator chainGenerator = TestUtils.Create2WordGen(_simpleSentence);
            WordGenerator  wordGenerator  = InitSimpleWordGen();

            wordGenerator.ResetSubchains(new ChainCondition(ck => ck.Words[0] == null && ck.Words[1] == null), null);

            chainGenerator.GenerateChains();
            ChainMap origChains = chainGenerator.Chains;

            StringBuilder sb = new StringBuilder();

            sb.Append(wordGenerator.CurrentWord);
            for (int i = 0; i < 200; i++)
            {
                sb.Append(" ");
                sb.Append(wordGenerator.GetNextWord());
            }

            chainGenerator = TestUtils.Create2WordGen(sb.ToString());
            chainGenerator.GenerateChains();
            ChainMap resultChains = chainGenerator.Chains;

            //When we get to the end we should start from the beginning
            origChains.AddToChain(new ChainKey(new string[] { "two", "?" }), "hello");
            origChains.AddToChain(new ChainKey(new string[] { "?", "hello" }), "world");

            TestUtils.CompareChainTablesNoDuplicates(origChains, resultChains);
        }
コード例 #2
0
    // Init
    public void Start()
    {
        instance        = this;
        this.characters = GameManager.instance.FindPlayers();

        // the total possible number of chain links is given by the
        // number of links per character * the number of character in the scene
        this.instantiatedChainLinks = new GameObject[NUM_LINKS * this.characters.Length];
        this.lastActiveInputDevice  = InputManager.ActiveDevice;

        for (int i = 1; i < characters.Length; i++)
        {
            characters[i].transform.position = characters[i - 1].transform.position + (PLAYER_DISTANCE * Vector3.right);
//			characters[i].transform.Translate(Vector3.right * PLAYER_DISTANCE * i);
        }

        // Create prefabs for chain between players
        characters[0].playerOnTheEnd = true;
        for (int i = 1; i < characters.Length; i++)
        {
            if (characters[i].inGame)
            {
                CreateChain(i, characters[i - 1], characters[i]);
                // Set myself to the new player on the end and unless it's player 0, set the player behind me to no longer on the end
                if (i > 1)
                {
                    characters[i - 1].playerOnTheEnd = false;
                }
                characters[i].playerOnTheEnd = true;
            }
        }

        this.chainHasBeenSevered = false;
    }
コード例 #3
0
        /// <summary>
        /// Create a word generator with constant Random seed
        /// </summary>
        /// <returns></returns>
        private WordGenerator InitSimpleWordGen()
        {
            ChainGenerator chainGen =
                new ChainGenerator(_simpleSentence, TestUtils.StandardDelims.ToArray(), 2);

            chainGen.GenerateChains();
            return(new WordGenerator(chainGen.Chains, new Random(1000)));
        }
コード例 #4
0
        public void T_Chains_2()
        {
            ChainGenerator chainGenerator = new ChainGenerator(_advancedChainString, _delims, 2);

            chainGenerator.GenerateChains();

            Dictionary <ChainKey, List <string> > correctChains =
                new Dictionary <ChainKey, List <string> > {
                { new ChainKey(new string[] { null, null }), new List <string> {
                      "words"
                  } },
                { new ChainKey(new string[] { null, "words" }), new List <string> {
                      "from"
                  } },
                { new ChainKey(new string[] { "words", "from" }), new List <string> {
                      ".", "sentence"
                  } },
                { new ChainKey(new string[] { "from", "." }), new List <string> {
                      "sentence"
                  } },
                { new ChainKey(new string[] { ".", "sentence" }), new List <string> {
                      ","
                  } },
                { new ChainKey(new string[] { "sentence", "," }), new List <string> {
                      "will"
                  } },
                { new ChainKey(new string[] { ",", "will" }), new List <string> {
                      "never"
                  } },
                { new ChainKey(new string[] { "will", "never" }), new List <string> {
                      "end"
                  } },
                { new ChainKey(new string[] { "never", "end" }), new List <string> {
                      "?"
                  } },
                { new ChainKey(new string[] { "end", "?" }), new List <string> {
                      "because"
                  } },
                { new ChainKey(new string[] { "?", "because" }), new List <string> {
                      "words"
                  } },
                { new ChainKey(new string[] { "because", "words" }), new List <string> {
                      "from"
                  } },
                { new ChainKey(new string[] { "from", "sentence" }), new List <string> {
                      "is"
                  } },
                { new ChainKey(new string[] { "sentence", "is" }), new List <string> {
                      "good"
                  } },
                { new ChainKey(new string[] { "is", "good" }), new List <string> {
                      "."
                  } }
            };

            TestUtils.CompareChainTables(chainGenerator.Chains, correctChains);
        }
コード例 #5
0
        public void T_Constructor_Exceptions()
        {
            string         origText       = "Hello world string.";
            ChainGenerator chainGenerator = new ChainGenerator(origText, _delims, 2);

            Assert.Throws(typeof(Exceptions.InvalidArguments),
                          delegate { chainGenerator = new ChainGenerator(origText, _delims, 0); });
            Assert.Throws(typeof(Exceptions.InvalidArguments),
                          delegate { chainGenerator = new ChainGenerator(origText, _delims, 20); });
            Assert.Throws(typeof(Exceptions.InvalidArguments),
                          delegate { chainGenerator = new ChainGenerator(null, _delims, 2); });
        }