public void SectionController_IOleCommandTargetQueryStatus_OLECMD_Conversion()
        {
            // Arrange
            var testSubject = this.CreateTestSubject();
            TF_IOleCommandTarget testSubjectCommandTarget = testSubject;

            testSubject.CommandTargets.Clear();
            var command1 = new TestCommandTarget();

            testSubject.CommandTargets.Add(command1);
            Guid   group    = Guid.Empty;
            uint   cCmds    = 0;
            IntPtr pCmdText = IntPtr.Zero;

            // Case 1 : null input TF_OLECMD
            // Act+Verify
            testSubjectCommandTarget.QueryStatus(ref group, cCmds, null, pCmdText).Should().Be(SectionController.CommandNotHandled);
            command1.QueryStatusNumberOfCalls.Should().Be(1);
            command1.CommandArguments.Should().BeNull();

            // Case 2 : multiple OLECMD values
            var prgCmds = new TF_OLECMD[]
            {
                new TF_OLECMD {
                    cmdf = 1, cmdID = 2
                },
                new TF_OLECMD {
                    cmdf = 3, cmdID = 4
                },
            };

            // Act+Verify
            testSubjectCommandTarget.QueryStatus(ref group, cCmds, prgCmds, pCmdText).Should().Be(SectionController.CommandNotHandled);
            command1.QueryStatusNumberOfCalls.Should().Be(2);
            command1.CommandArguments.Should().NotBeNull();
            command1.CommandArguments.Length.Should().Be(2);

            command1.CommandArguments[0].cmdf.Should().Be(1);
            command1.CommandArguments[0].cmdID.Should().Be(2);
            command1.CommandArguments[1].cmdf.Should().Be(3);
            command1.CommandArguments[1].cmdID.Should().Be(4);
        }
        public void SectionController_IOleCommandTargetQueryStatus()
        {
            // Arrange
            var testSubject = this.CreateTestSubject();
            TF_IOleCommandTarget testSubjectCommandTarget = testSubject;

            testSubject.CommandTargets.Clear();
            var command1 = new TestCommandTarget();
            var command2 = new TestCommandTarget();
            var command3 = new TestCommandTarget();

            testSubject.CommandTargets.Add(command1);
            testSubject.CommandTargets.Add(command2);
            testSubject.CommandTargets.Add(command3);
            Guid   group    = Guid.Empty;
            uint   cCmds    = 0;
            var    prgCmds  = new TF_OLECMD[0];
            IntPtr pCmdText = IntPtr.Zero;

            // Case 1 : no commands handling the request
            // Act+Verify
            testSubjectCommandTarget.QueryStatus(ref group, cCmds, prgCmds, pCmdText).Should().Be(SectionController.CommandNotHandled);
            command1.QueryStatusNumberOfCalls.Should().Be(1);
            command2.QueryStatusNumberOfCalls.Should().Be(1);
            command3.QueryStatusNumberOfCalls.Should().Be(1);

            // Case 2 : the last command is handling the request
            command3.QueryStatusReturnsResult = (int)VS_OLEConstants.OLECMDERR_E_CANCELED;
            // Act+Verify
            testSubjectCommandTarget.QueryStatus(ref group, cCmds, prgCmds, pCmdText).Should().Be((int)VS_OLEConstants.OLECMDERR_E_CANCELED);
            command1.QueryStatusNumberOfCalls.Should().Be(2);
            command2.QueryStatusNumberOfCalls.Should().Be(2);
            command3.QueryStatusNumberOfCalls.Should().Be(2);

            // Case 3 : the first command is handling the request
            command1.QueryStatusReturnsResult = (int)VS_OLEConstants.OLECMDERR_E_DISABLED;
            // Act+Verify
            testSubjectCommandTarget.QueryStatus(ref group, cCmds, prgCmds, pCmdText).Should().Be((int)VS_OLEConstants.OLECMDERR_E_DISABLED);
            command1.QueryStatusNumberOfCalls.Should().Be(3);
            command2.QueryStatusNumberOfCalls.Should().Be(2);
            command3.QueryStatusNumberOfCalls.Should().Be(2);
        }
Example #3
0
 private static VS_OLECMD ConvertTFtoVSOleCmd(TF_OLECMD cmd) =>
 new VS_OLECMD
 {
     cmdf  = cmd.cmdf,
     cmdID = cmd.cmdID
 };