public void ItemBlockItemMatch_SocketGroupBlockItem_MultipleItemSocketGroup_SingleBlockItemSocketGroup_Match_ReturnsCorrectResult()
        {
            //Arrange
            var testInputBlockItem = new SocketGroupBlockItem();

            testInputBlockItem.Items.Add("RGB");
            testInputBlockItem.Items.Add("RGWW");
            testInputBlockItem.Items.Add("RGWG");
            testInputBlockItem.Items.Add("WWWW");

            var testInputItem = Mock.Of <IItem>(i => i.LinkedSocketGroups == new List <SocketGroup>
            {
                new SocketGroup(new List <Socket>
                {
                    new Socket(SocketColor.Red),
                    new Socket(SocketColor.Green),
                    new Socket(SocketColor.White),
                    new Socket(SocketColor.Green)
                }, true)
            });

            //Act
            var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);

            //Assert
            Assert.IsTrue(result);
        }
 private static bool SocketGroupBlockItemMatch(SocketGroupBlockItem socketGroupBlockItem, IItem item)
 {
     foreach (var blockItemSocketGroup in socketGroupBlockItem.SocketGroups) // for each group of sockets in the block item
     {
         foreach (var itemLinkedSocketGroup in item.LinkedSocketGroups)      // for each linked socket group in the item
         {
             if (SocketGroupHasRequiredSocketColors(itemLinkedSocketGroup, blockItemSocketGroup))
             {
                 return(true);
             }
         }
     }
     return(false);
 }