public void TestGetResponseFromSignal( int codeId, int signalId, int responseId, int numPeopleInFirstLine, int numPeopleInSecondLine, int numDifferentColors) { var code = this.CreateOneWayCodeFromTestCase(codeDictionary[codeId]); var signal = this.CreateSignalFromTestCase(signalDictionary[signalId], numPeopleInFirstLine + 1); var citizenRandomHatSolver = new CitizenRandomHatSolver(); var keySetOfFirstCode = citizenRandomHatSolver.GenerateAllPossibleHatAssignments( numPeopleInFirstLine, numDifferentColors, 1); var response = citizenRandomHatSolver.GetResponseFromSignal(signal, code, keySetOfFirstCode); var expectedResponse = this.CreateSignalFromTestCase(responseDictionary[responseId], 1); if (response == null && expectedResponse == null) { return; } Assert.AreEqual(response.Assignment.Length, expectedResponse.Assignment.Length); for (int i = 0; i < response.Assignment.Length; i++) { Assert.AreEqual(expectedResponse.Assignment[i].CitizenId, response.Assignment[i].CitizenId); Assert.AreEqual(expectedResponse.Assignment[i].HatColor, response.Assignment[i].HatColor); } }
public void TestSolution(int codeId, int numDifferentColors, int numPeopleInFirstLine, int numPeopleInSecondLine, bool expectedResult) { var code1 = this.CreateOneWayCodeFromTestCase(codeDictionary[codeId]); var citizenRandomHatSolver = new CitizenRandomHatSolver(); var code2 = citizenRandomHatSolver.GetSecondCodeFromFirstCode(code1, numDifferentColors); var code = new CitizenRandomHatSolver.Code { Code1 = code1, Code2 = code2 }; var isCorrectCode = citizenRandomHatSolver.VerifySolution(code, (numPeopleInFirstLine + numPeopleInSecondLine), numDifferentColors); Assert.AreEqual(expectedResult, isCorrectCode); }