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); }
// 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; }
/// <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))); }
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); }
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); }); }