public void EvaluateHoverability_PickedTempIsCarriedGear_PickedEqpIIIsInPoolIG_PickedEqpIIIsEquipped_CallsEngineBecomeHoverable()
    {
        IEquipToolPanelConstArg      arg;
        EquipToolEquippedItemsPanel  eqpItemsPanel = CreateEqpToolEqpItemsPanel(out arg);
        IEquippableItemIcon          pickedEqpII   = CreateStubEqpII(isBowOrWear: false, isInEqpIG: false, isEquipped: true);
        IPanelTransactionStateEngine mockEngine    = arg.panelTransactionStateEngine;

        eqpItemsPanel.EvaluateHoverability(pickedEqpII);

        mockEngine.Received(1).BecomeHoverable();
    }
    public void CheckAndRemoveEmptyEqpIIs_RelevEqpCGIGIsOfCarriedGearsTemp_CallsRelevIGRemoveEmpty()
    {
        IEquipToolPanelConstArg          arg;
        EquipToolEquippedItemsPanel      eqpItemsPanel = CreateEqpToolEqpItemsPanel(out arg);
        IEquipToolEquippedCarriedGearsIG relevEqpIG    = Substitute.For <IEquipToolEquippedCarriedGearsIG>();
        IEquippableItemIcon pickedEqpII = Substitute.For <IEquippableItemIcon>();

        arg.eqpIITAM.GetPickedEqpII().Returns(pickedEqpII);
        arg.eqpIITAM.GetRelevantEquipIG(pickedEqpII).Returns(relevEqpIG);

        eqpItemsPanel.CheckAndRemoveEmptyEqpIIs();

        relevEqpIG.Received(1).RemoveEmptyIIs();
    }
    public void EvaluateHoverability_PickedTempIsCarriedGear_PickedEqpIIIsInPoolIG_PickedEqpIIIsNotEquipped_RelevantEqpIGSizeIsOne_CallsEngineBecomeHoverable()
    {
        IEquipToolPanelConstArg      arg;
        EquipToolEquippedItemsPanel  eqpItemsPanel = CreateEqpToolEqpItemsPanel(out arg);
        IEquippableItemIcon          pickedEqpII   = CreateStubEqpII(isBowOrWear: false, isInEqpIG: false, isEquipped: false);
        IPanelTransactionStateEngine mockEngine    = arg.panelTransactionStateEngine;
        IEquipToolEquipIG            relevantIG    = Substitute.For <IEquipToolEquipIG>();

        relevantIG.GetSize().Returns(1);
        arg.eqpIITAM.GetRelevantEquipIG(pickedEqpII).Returns(relevantIG);

        eqpItemsPanel.EvaluateHoverability(pickedEqpII);

        mockEngine.Received(1).BecomeHoverable();
    }
    public void CheckAndAddEmptyAddTarget_PickedEqpIIIsBowOrWear_DoesNotCallRelevEqpCGIGAddEmpty()
    {
        IEquipToolPanelConstArg     arg;
        EquipToolEquippedItemsPanel eqpItemsPanel = CreateEqpToolEqpItemsPanel(out arg);
        IEquippableItemIcon         pickedEqpII   = Substitute.For <IEquippableItemIcon>();

        pickedEqpII.IsBowOrWearItemIcon().Returns(true);
        IEquipToolEquipIG relevEqpCGIG = Substitute.For <IEquipToolEquipIG>();

        arg.eqpIITAM.GetRelevantEquippedCarriedGearsIG().Returns(relevEqpCGIG);

        eqpItemsPanel.CheckAndAddEmptyAddTarget(pickedEqpII);

        relevEqpCGIG.DidNotReceive().AddEmptyAddTarget(Arg.Any <IEquippableUIItem>());
    }
    public void HoverDefaultTransactionTargetEqpII_WhenCalled_CallsRelevEqpIGDefTATarEqpIICheckForHover()
    {
        IEquipToolPanelConstArg     arg;
        EquipToolEquippedItemsPanel eqpItemsPanel = CreateEqpToolEqpItemsPanel(out arg);
        IEquippableItemIcon         pickedEqpII   = Substitute.For <IEquippableItemIcon>();
        IEquipToolEquipIG           relevantIG    = Substitute.For <IEquipToolEquipIG>();
        IEquippableItemIcon         mockTarEqpII  = Substitute.For <IEquippableItemIcon>();

        relevantIG.GetDefaultTATargetEqpII(pickedEqpII).Returns(mockTarEqpII);
        arg.eqpIITAM.GetRelevantEquipIG(pickedEqpII).Returns(relevantIG);

        eqpItemsPanel.HoverDefaultTransactionTargetEqpII(pickedEqpII);

        mockTarEqpII.Received(1).CheckForHover();
    }
    /*  */
    public EquipToolEquippedItemsPanel CreateEqpToolEqpItemsPanel(out IEquipToolPanelConstArg arg)
    {
        IUIManager uim = Substitute.For <IUIManager>();
        IPickUpSystemProcessFactory pickUpSystemProcessFactory = Substitute.For <IPickUpSystemProcessFactory>();
        IEquipToolUIEFactory        equipToolUIEFactory        = Substitute.For <IEquipToolUIEFactory>();
        IUIAdaptor                   uia           = Substitute.For <IUIAdaptor>();
        IUIImage                     image         = Substitute.For <IUIImage>();
        IEquippableIITAManager       eqpIITAM      = Substitute.For <IEquippableIITAManager>();
        IEquipTool                   eqpTool       = Substitute.For <IEquipTool>();
        IPanelTransactionStateEngine engine        = Substitute.For <IPanelTransactionStateEngine>();
        IEquipToolPanelConstArg      thisArg       = new EquipToolPanelConstArg(uim, pickUpSystemProcessFactory, equipToolUIEFactory, uia, image, eqpTool, eqpIITAM, engine);
        EquipToolEquippedItemsPanel  eqpItemsPanel = new EquipToolEquippedItemsPanel(thisArg);

        arg = thisArg;
        return(eqpItemsPanel);
    }
    public void CheckAndAddEmptyAddTarget_PickedEqpIIIsNotBowOrWear_RelevEqpCGIGDoesNotHaveSameItem_CallRelevEqpCGIGAddEmpty()
    {
        IEquipToolPanelConstArg     arg;
        EquipToolEquippedItemsPanel eqpItemsPanel = CreateEqpToolEqpItemsPanel(out arg);
        IEquippableItemIcon         pickedEqpII   = Substitute.For <IEquippableItemIcon>();

        pickedEqpII.IsBowOrWearItemIcon().Returns(false);
        IEquippableUIItem pickedEqpItem = Substitute.For <IEquippableUIItem>();

        pickedEqpII.GetEquippableItem().Returns(pickedEqpItem);
        IEquipToolEquippedCarriedGearsIG relevEqpCGIG = Substitute.For <IEquipToolEquippedCarriedGearsIG>();

        arg.eqpIITAM.GetRelevantEquippedCarriedGearsIG().Returns(relevEqpCGIG);
        relevEqpCGIG.GetItemIconFromItem(pickedEqpItem).Returns((IEquippableItemIcon)null);

        eqpItemsPanel.CheckAndAddEmptyAddTarget(pickedEqpII);

        relevEqpCGIG.Received(1).AddEmptyAddTarget(Arg.Any <IEquippableUIItem>());
    }