You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
4.4 KiB

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<char> hs)
{
return String.Join(',', hs.OrderBy(p => p));
}
}
}