using Microsoft.VisualStudio.TestTools.UnitTesting; using FiveLetters.Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FiveLetters.Model.Tests { [TestClass()] public class FiveLetterServerTests { [TestMethod()] public void shouldCreateOk() { var st = new FiveLetterServer(new FileTaskProvider(), new FileDictionaryProvider(), 10); Assert.AreNotEqual(st, null); } [TestMethod()] public void shouldTurnOk() { string u1 = "9131212121"; string u2 = "9131212122"; // ----------- СЛОВО --------------- var st = new FiveLetterServer(new MockTaskProvider("СЛОВО"), new FileDictionaryProvider(), 6); var r1 = st.GetResult(u1); Assert.AreEqual(r1.User, u1); var r2 = st.GetResult(u2); Assert.AreEqual(r2.User, u2); // первый пользователь int iCount = 1; FiveLettersResult r3 = st.Turn(u1, "ЙЦУКЕ"); Assert.AreEqual(r3.Attempts.Count, iCount++); Assert.AreEqual("", h_HsToString(r3.Attempts.Last().GetLettersFullMatch())); Assert.AreEqual("", h_HsToString(r3.Attempts.Last().GetLettersPartialMatch())); r3 = st.Turn(u1, "НГШЩЗ"); Assert.AreEqual(r3.Attempts.Count, iCount++); Assert.AreEqual("", h_HsToString(r3.Attempts.Last().GetLettersFullMatch())); Assert.AreEqual("", h_HsToString(r3.Attempts.Last().GetLettersPartialMatch())); Assert.AreEqual("", h_HsToString(r3.GetLettersFullMatch())); Assert.AreEqual("", h_HsToString(r3.GetLettersPartialMatch())); r3 = st.Turn(u1, "ХФЫВА"); Assert.AreEqual(r3.Attempts.Count, iCount++); Assert.AreEqual("В", h_HsToString(r3.Attempts.Last().GetLettersFullMatch())); Assert.AreEqual("", h_HsToString(r3.Attempts.Last().GetLettersPartialMatch())); Assert.AreEqual("В", h_HsToString(r3.GetLettersFullMatch())); Assert.AreEqual("", h_HsToString(r3.GetLettersPartialMatch())); r3 = st.Turn(u1, "ПРОЛД"); Assert.AreEqual(r3.Attempts.Count, iCount++); Assert.AreEqual("О", h_HsToString(r3.Attempts.Last().GetLettersFullMatch())); Assert.AreEqual("Л", h_HsToString(r3.Attempts.Last().GetLettersPartialMatch())); Assert.AreEqual("В,О", h_HsToString(r3.GetLettersFullMatch())); Assert.AreEqual("Л", h_HsToString(r3.GetLettersPartialMatch())); r3 = st.Turn(u1, "ЖЯЧСМ"); Assert.AreEqual(r3.Attempts.Count, iCount++); Assert.AreEqual("", h_HsToString(r3.Attempts.Last().GetLettersFullMatch())); Assert.AreEqual("С", h_HsToString(r3.Attempts.Last().GetLettersPartialMatch())); Assert.AreEqual("В,О", h_HsToString(r3.GetLettersFullMatch())); Assert.AreEqual("Л,С", h_HsToString(r3.GetLettersPartialMatch())); // второй пользователь var r4 = st.Turn(u2, "ИТЬЬБ"); Assert.AreEqual(r4.Attempts.Count, 1); Assert.AreEqual("", h_HsToString(r4.Attempts.Last().GetLettersFullMatch())); Assert.AreEqual("", h_HsToString(r4.Attempts.Last().GetLettersPartialMatch())); Assert.AreEqual("", h_HsToString(r4.GetLettersFullMatch())); Assert.AreEqual("", h_HsToString(r4.GetLettersPartialMatch())); Assert.AreEqual(r3.Result, EResultGameType.InProcess); r3 = st.Turn(u1, "ЮЪХХХ"); Assert.AreEqual(r3.Attempts.Count, iCount++); // TODO: check for status Assert.AreEqual(r3.Result, EResultGameType.Failed); } [TestMethod()] public void GetResultTest() { string u1 = "9131212121"; string u2 = "9131212122"; var st = new FiveLetterServer(new MockTaskProvider("12345"), new FileDictionaryProvider(), 10); var r1 = st.GetResult(u1); Assert.AreEqual(r1.User, u1); var r2 = st.GetResult(u2); Assert.AreEqual(r2.User, u2); } private string h_HsToString(HashSet hs) { return String.Join(',', hs.OrderBy(p => p)); } } }