diff --git a/158.326 Software Architecture.sln b/158.326 Software Architecture.sln index dae3535..d4a4a12 100644 --- a/158.326 Software Architecture.sln +++ b/158.326 Software Architecture.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31702.278 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31717.71 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "158326 Week 7 Singletons", "158326 Week 7 Singletons\158326 Week 7 Singletons.csproj", "{DDB32161-79F3-4CCF-9CCC-44CCD562B15E}" EndProject @@ -31,6 +31,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Week 10 - TDD Tests", "Week EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Week 10 - Account Library", "Week 10 - Account Library\Week 10 - Account Library.csproj", "{82A3780B-823C-448F-AB58-262970DB77ED}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Week 11 - TTTLib", "Week 11 - TTTLib\Week 11 - TTTLib.csproj", "{48350610-2686-4B59-8EC5-0C0773FBF7EF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Week 11 - TTTTests", "Week 11 - TTTTests\Week 11 - TTTTests.csproj", "{FA247296-57A1-492B-9EFD-2CA90A392C1A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -93,6 +97,14 @@ Global {82A3780B-823C-448F-AB58-262970DB77ED}.Debug|Any CPU.Build.0 = Debug|Any CPU {82A3780B-823C-448F-AB58-262970DB77ED}.Release|Any CPU.ActiveCfg = Release|Any CPU {82A3780B-823C-448F-AB58-262970DB77ED}.Release|Any CPU.Build.0 = Release|Any CPU + {48350610-2686-4B59-8EC5-0C0773FBF7EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {48350610-2686-4B59-8EC5-0C0773FBF7EF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {48350610-2686-4B59-8EC5-0C0773FBF7EF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {48350610-2686-4B59-8EC5-0C0773FBF7EF}.Release|Any CPU.Build.0 = Release|Any CPU + {FA247296-57A1-492B-9EFD-2CA90A392C1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FA247296-57A1-492B-9EFD-2CA90A392C1A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FA247296-57A1-492B-9EFD-2CA90A392C1A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FA247296-57A1-492B-9EFD-2CA90A392C1A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Week 11 - TTTLib/GameWinnerService.cs b/Week 11 - TTTLib/GameWinnerService.cs new file mode 100644 index 0000000..9152003 --- /dev/null +++ b/Week 11 - TTTLib/GameWinnerService.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Week_11___TTTLib +{ + public class GameWinnerService : IGameWinnerService + { + public char Validate(char[,] board) + { + var rowOne = board[0,0]; + var rowTwo = board[0,1]; + var rowThree = board[0,2]; + if (rowOne == rowTwo && rowTwo == rowThree) + return rowOne; + + return ' '; + } + } + + public interface IGameWinnerService + { + char Validate(char[,] board); + + } +} diff --git a/Week 11 - TTTLib/Properties/AssemblyInfo.cs b/Week 11 - TTTLib/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a569ef0 --- /dev/null +++ b/Week 11 - TTTLib/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Week 11 - TTTLib")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Week 11 - TTTLib")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("48350610-2686-4b59-8ec5-0c0773fbf7ef")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Week 11 - TTTLib/Week 11 - TTTLib.csproj b/Week 11 - TTTLib/Week 11 - TTTLib.csproj new file mode 100644 index 0000000..8668b0a --- /dev/null +++ b/Week 11 - TTTLib/Week 11 - TTTLib.csproj @@ -0,0 +1,48 @@ + + + + + Debug + AnyCPU + {48350610-2686-4B59-8EC5-0C0773FBF7EF} + Library + Properties + Week_11___TTTLib + Week 11 - TTTLib + v4.7.2 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Week 11 - TTTTests/Properties/AssemblyInfo.cs b/Week 11 - TTTTests/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c1504ee --- /dev/null +++ b/Week 11 - TTTTests/Properties/AssemblyInfo.cs @@ -0,0 +1,20 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("Week 11 - TTTTests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Week 11 - TTTTests")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +[assembly: ComVisible(false)] + +[assembly: Guid("fa247296-57a1-492b-9efd-2ca90a392c1a")] + +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Week 11 - TTTTests/UnitTest1.cs b/Week 11 - TTTTests/UnitTest1.cs new file mode 100644 index 0000000..0e0c356 --- /dev/null +++ b/Week 11 - TTTTests/UnitTest1.cs @@ -0,0 +1,65 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using Week_11___TTTLib; + +namespace Week_11___TTTTests +{ + [TestClass] + public class UnitTest1 + { + [TestMethod] + public void TestMethod1() + { + + } + + [TestMethod] + public void TestEmptyArray() + { + IGameWinnerService gameWinnerService; + gameWinnerService = new GameWinnerService(); + const char expected = ' '; + var gameboard = new char[,] + { + {' ', ' ', ' ' }, + {' ', ' ', ' ' }, + {' ', ' ', ' ' } + }; + + var actual = gameWinnerService.Validate(gameboard); + Assert.AreEqual(expected, actual); + } + + [TestMethod] + public void TestPlayerWithAllCrossesInTopRowIsWinner() + { + IGameWinnerService gameWinnerService; + gameWinnerService = new GameWinnerService(); + const char expected = 'X'; + var gameboard = new char[,] + { + {'X', 'X', 'X' }, + {' ', ' ', ' ' }, + {' ', ' ', ' ' } + }; + var actual = gameWinnerService.Validate(gameboard); + Assert.AreEqual(expected, actual); + } + + [TestMethod] + public void TestPlayerWithAllNaughtsInTopRowIsWinner() + { + IGameWinnerService gameWinnerService; + gameWinnerService = new GameWinnerService(); + const char expected = 'O'; + var gameboard = new char[,] + { + {'O', 'O', 'O' }, + {' ', ' ', ' ' }, + {' ', ' ', ' ' } + }; + var actual = gameWinnerService.Validate(gameboard); + Assert.AreEqual(expected, actual); + } + } +} diff --git a/Week 11 - TTTTests/Week 11 - TTTTests.csproj b/Week 11 - TTTTests/Week 11 - TTTTests.csproj new file mode 100644 index 0000000..06c2e46 --- /dev/null +++ b/Week 11 - TTTTests/Week 11 - TTTTests.csproj @@ -0,0 +1,74 @@ + + + + + + Debug + AnyCPU + {FA247296-57A1-492B-9EFD-2CA90A392C1A} + Library + Properties + Week_11___TTTTests + Week 11 - TTTTests + v4.7.2 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 15.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll + + + ..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll + + + + + + + + + + + + + + {48350610-2686-4b59-8ec5-0c0773fbf7ef} + Week 11 - TTTLib + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + \ No newline at end of file diff --git a/Week 11 - TTTTests/packages.config b/Week 11 - TTTTests/packages.config new file mode 100644 index 0000000..f84cb10 --- /dev/null +++ b/Week 11 - TTTTests/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file