public void TotalNumberOfSocksStartsAtZero()
        {
            var expected = 0;

            var sockTracker = new SockTracker()
            {
                MatchingPairs = new List <Color>(), UnmatchedSocks = new List <Color>()
            };

            var actual = sockTracker.TotalNumberOfSocks();

            Assert.AreEqual(expected, actual);
        }
        public void AnUnmatchedSockCountsAsOneSock()
        {
            var expected = 2;

            var sockTracker = new SockTracker()
            {
                MatchingPairs = new List <Color>(), UnmatchedSocks = new List <Color>()
                {
                    Color.Black, Color.Blue
                }
            };

            var actual = sockTracker.TotalNumberOfSocks();

            Assert.AreEqual(expected, actual);
        }
        public void MatchingPairsAndUnmatchedSocksAreBothCounted()
        {
            var expected = 5;

            var sockTracker = new SockTracker()
            {
                MatchingPairs = new List <Color>()
                {
                    Color.Red
                }, UnmatchedSocks = new List <Color>()
                {
                    Color.Green, Color.Blue, Color.Brown
                }
            };

            var actual = sockTracker.TotalNumberOfSocks();

            Assert.AreEqual(expected, actual);
        }
        public void OneMatchingPairZeroLooseSocks()
        {
            var expected = new SockTracker()
            {
                MatchingPairs = new List <Color>()
                {
                    Color.Pink
                }, UnmatchedSocks = new List <Color>()
            };

            var utility = new Utility();
            var actual  = utility.GetMatchingPairs(new List <Color>()
            {
                Color.Pink, Color.Pink
            });

            CollectionAssert.AreEqual(expected.MatchingPairs, actual.MatchingPairs);
            CollectionAssert.AreEqual(expected.UnmatchedSocks, actual.UnmatchedSocks);
        }
        public void ZeroMatchingPairsOneLooseSock()
        {
            var expected = new SockTracker()
            {
                MatchingPairs = new List <Color>(), UnmatchedSocks = new List <Color>()
                {
                    Color.Yellow
                }
            };

            var utility = new Utility();
            var actual  = utility.GetMatchingPairs(new List <Color>()
            {
                Color.Yellow
            });

            CollectionAssert.AreEqual(expected.MatchingPairs, actual.MatchingPairs);
            CollectionAssert.AreEqual(expected.UnmatchedSocks, actual.UnmatchedSocks);
        }
        public void ThreeMatchingPairsFiveLooseSocks()
        {
            var expected = new SockTracker()
            {
                MatchingPairs = new List <Color>()
                {
                    Color.Red, Color.Blue, Color.Orange
                }, UnmatchedSocks = new List <Color>()
                {
                    Color.Green, Color.Orange, Color.Black, Color.Pink, Color.Brown
                }
            };

            var utility = new Utility();
            var actual  = utility.GetMatchingPairs(new List <Color>()
            {
                Color.Green, Color.Orange, Color.Pink, Color.Brown, Color.Orange, Color.Blue, Color.Red, Color.Orange, Color.Black, Color.Blue, Color.Red
            });

            CollectionAssert.AreEqual(expected.MatchingPairs, actual.MatchingPairs);
            CollectionAssert.AreEqual(expected.UnmatchedSocks, actual.UnmatchedSocks);
        }