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