public TestEqpIITAM CreateTestEqpIITAM(out IEqpIITAMConstArg arg)
    {
        IEqpIITAMConstArg thisArg      = CreateStubEqpIITAMConstArg();
        TestEqpIITAM      testEqpIITAM = new TestEqpIITAM(thisArg);

        arg = thisArg;
        return(testEqpIITAM);
    }
    public void ExcecuteTransaction_ThisEIIToEquipIsNotNull_CallsItEquip()
    {
        IEqpIITAMConstArg   arg;
        TestEqpIITAM        testEqpIITAM = CreateTestEqpIITAM(out arg);
        IEquippableItemIcon eii          = Substitute.For <IEquippableItemIcon>();

        testEqpIITAM.SetEIIToEquip(eii);
        Assert.That(testEqpIITAM.GetEIIToEquip(), Is.SameAs(eii));

        testEqpIITAM.ExecuteTransaction();

        eii.Received(1).Equip();
    }
    public void HoverInitialPickUpReceiver_PickedEqpIIIsNotInEqpIG_CallsPoolPanelCheckForHover()
    {
        IEqpIITAMConstArg   arg;
        TestEqpIITAM        testEqpIITAM = CreateTestEqpIITAM(out arg);
        IEquippableItemIcon pickedEqpII  = Substitute.For <IEquippableItemIcon>();

        pickedEqpII.IsInEqpIG().Returns(false);
        testEqpIITAM.SetPickedII(pickedEqpII);

        testEqpIITAM.HoverInitialPickUpReceiver();

        arg.poolItemsPanel.Received(1).CheckForHover();
    }
    public void ExcecuteTransaction_ThisEIIToEquipIsNotNull_ThisEIIToEquipIsSameAsPickedEqpII_CallsItImmigrateToRelevEqpIG()
    {
        IEqpIITAMConstArg   arg;
        TestEqpIITAM        testEqpIITAM = CreateTestEqpIITAM(out arg);
        IEquippableItemIcon eii          = Substitute.For <IEquippableItemIcon>();

        testEqpIITAM.SetEIIToEquip(eii);
        Assert.That(testEqpIITAM.GetEIIToEquip(), Is.SameAs(eii));
        testEqpIITAM.SetPickedII(eii);
        Assert.That(testEqpIITAM.GetPickedEqpII(), Is.SameAs(testEqpIITAM.GetEIIToEquip()));
        IEquipToolEquipIG eqpIG = arg.eqpToolIGManager.GetRelevantEquipIG(eii);

        testEqpIITAM.ExecuteTransaction();

        eii.Received(1).TravelTransfer(eqpIG);
    }
    public void ExcecuteTransaction_ThisEIIToUnequipIsNotNull_ThisEIIToUnequipIsNotSameAsPickedEqpII_CallsItTransferToPool()
    {
        IEqpIITAMConstArg   arg;
        TestEqpIITAM        testEqpIITAM = CreateTestEqpIITAM(out arg);
        IEquippableItemIcon eii          = Substitute.For <IEquippableItemIcon>();

        testEqpIITAM.SetEIIToUnequip(eii);
        Assert.That(testEqpIITAM.GetEIIToUnequip(), Is.SameAs(eii));
        IEquippableItemIcon otherEii = Substitute.For <IEquippableItemIcon>();

        testEqpIITAM.SetPickedII(otherEii);
        Assert.That(testEqpIITAM.GetPickedEqpII(), Is.Not.SameAs(testEqpIITAM.GetEIIToUnequip()));
        IEquipToolPoolIG poolIG = arg.eqpToolIGManager.GetRelevantPoolIG();

        testEqpIITAM.ExecuteTransaction();

        eii.Received(1).SpotTransfer(poolIG);
    }