Beispiel #1
0
        public void TestRegistrationAndUnregistration()
        {
            List <uint> registered   = new List <uint>();
            List <uint> unregistered = new List <uint>();

            MockTaskList taskList = _serviceProvider.GetService(typeof(SVsTaskList)) as MockTaskList;

            taskList.OnRegisterTaskProvider +=
                delegate(object sender, MockTaskList.RegisterTaskProviderArgs args)
            {
                registered.Add(args.Cookie);
            };
            taskList.OnUnregisterTaskProvider +=
                delegate(object sender, MockTaskList.UnregisterTaskProviderArgs args)
            {
                unregistered.Add(args.Cookie);
            };

            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            Assert.AreEqual(1, registered.Count, "Task provider did not register itself when created.");

            accessor.OnTaskListFinalRelease(taskList);

            Assert.AreEqual(1, unregistered.Count, "Task provider did not unregister itself from OnTaskListFinalRelease.");
            Assert.AreEqual(registered[0], unregistered[0], "Cookies did not match.");
        }
Beispiel #2
0
        public void UnderlinedIfIgnored()
        {
            Microsoft.Build.Evaluation.Project msbuildProj = Utilities.SetupMSBuildProject();

            // Set up a project so the project column can be populated.
            MockSolution   solution = _serviceProvider.GetService(typeof(SVsSolution)) as MockSolution;
            MockIVsProject project  = new MockIVsProject(msbuildProj.FullPath);

            solution.AddProject(project);

            CodeSweep.VSPackage.TaskProvider_Accessor providerAccessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            string projectDrive = Path.GetPathRoot(msbuildProj.FullPath);

            CodeSweep.VSPackage.Task_Accessor accessor = new CodeSweep.VSPackage.Task_Accessor("term", 1, "class", "comment", "replacement", projectDrive + "\\dir\\file.ext", 2, 3, msbuildProj.FullPath, "full line text", providerAccessor, null);

            accessor.Ignored = true;

            uint   type;
            uint   flags;
            object val;
            string accName;

            foreach (object fieldObj in Enum.GetValues(typeof(TaskFields)))
            {
                accessor.GetColumnValue((int)fieldObj, out type, out flags, out val, out accName);
                Assert.IsTrue((flags & (int)__VSTASKVALUEFLAGS.TVF_STRIKETHROUGH) != 0, "Strikethrough flag not set for ignored task field " + (int)fieldObj);
            }
        }
Beispiel #3
0
        public void TestIgnore()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            Project project = Utilities.SetupMSBuildProject();

            Utilities.RegisterProjectWithMocks(project, _serviceProvider);

            MockTermTable  table      = new MockTermTable("termtable.xml");
            MockTerm       term0      = new MockTerm("dupText", 0, "term0Class", "term0Comment", "term0recommended", table);
            MockTerm       term1      = new MockTerm("term2Text", 2, "term2Class", "term2Comment", "term2recommended", table);
            MockScanHit    hit0       = new MockScanHit("file0", 1, 5, "line text", term0, null);
            MockScanHit    hit1       = new MockScanHit("file1", 4, 1, "line text 2", term1, null);
            MockScanHit    hit2       = new MockScanHit("file2", 3, 2, "line text 3", term1, null);
            MockScanResult scanResult = new MockScanResult("file0", new IScanHit[] { hit0, hit1, hit2 }, true);

            accessor.AddResult(scanResult, project.FullPath);

            IVsEnumTaskItems enumerator = null;

            accessor.EnumTaskItems(out enumerator);
            List <IVsTaskItem> items = Utilities.TasksFromEnumerator(enumerator);

            CodeSweep.VSPackage.Task_Accessor task0Accessor = new CodeSweep.VSPackage.Task_Accessor(new PrivateObject(items[0]));
            CodeSweep.VSPackage.Task_Accessor task1Accessor = new CodeSweep.VSPackage.Task_Accessor(new PrivateObject(items[1]));

            MockTaskList taskList = _serviceProvider.GetService(typeof(SVsTaskList)) as MockTaskList;

            // Ensure cmd is disabled with no selection
            OleMenuCommandService mcs     = _serviceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
            MenuCommand           command = mcs.FindCommand(new CommandID(CodeSweep.VSPackage.GuidList_Accessor.guidVSPackageCmdSet, (int)CodeSweep.VSPackage.PkgCmdIDList_Accessor.cmdidIgnore));

            // NOTE: simply getting command.Supported or command.Enabled doesn't seem to invoke
            // QueryStatus, so I'll explicitly call the status update method as a workaround.
            accessor.QueryIgnore(null, EventArgs.Empty);

            Assert.IsTrue(command.Supported, "Command not supported.");
            Assert.IsFalse(command.Enabled, "Command enabled with no selection.");

            // Ensure cmd is disabled with an ignored item selected
            task0Accessor.Ignored = true;
            taskList.SetSelected(items[0], true);
            accessor.QueryIgnore(null, EventArgs.Empty);
            Assert.IsFalse(command.Enabled, "Command enabled with ignored item selected.");

            // Ensure cmd is enabled with one ignored and one non-ignored item selected
            taskList.SetSelected(items[1], true);
            accessor.QueryIgnore(null, EventArgs.Empty);
            Assert.IsTrue(command.Enabled, "Command disabled with a non-ignored item selected.");

            // Fire cmd, ensure selected items are ignored
            command.Invoke();
            accessor.QueryIgnore(null, EventArgs.Empty);
            Assert.IsTrue(task0Accessor.Ignored, "Command set ignored task to non-ignored.");
            Assert.IsTrue(task1Accessor.Ignored, "Command did not set non-ignored task to ignored.");

            // Ensure cmd is now disabled
            accessor.QueryIgnore(null, EventArgs.Empty);
            Assert.IsFalse(command.Enabled, "Command still enabled after invocation.");
        }
Beispiel #4
0
        public void AddResultsThenClear()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            // Add some tasks
            MockTermTable  table      = new MockTermTable("termtable.xml");
            MockTerm       term0      = new MockTerm("term0Text", 0, "term0Class", "term0Comment", "term0recommended", table);
            MockTerm       term1      = new MockTerm("term1Text", 3, "term1Class", "term1Comment", "term1recommended", table);
            MockScanHit    hit0       = new MockScanHit("file0", 1, 10, "line text", term0, null);
            MockScanHit    hit1       = new MockScanHit("file1", 4, 1, "line text 2", term1, null);
            MockScanResult scanResult = new MockScanResult("file0", new IScanHit[] { hit0, hit1 }, true);

            accessor.AddResult(scanResult, "c:\\projFile");

            IVsEnumTaskItems enumerator;
            int hr = accessor.EnumTaskItems(out enumerator);

            Assert.AreEqual(VSConstants.S_OK, hr, "EnumTaskItems returned wrong hresult.");

            List <IVsTaskItem> tasks = Utilities.TasksFromEnumerator(enumerator);

            Assert.AreEqual(2, tasks.Count, "EnumTaskItems did not enumerate correct number of tasks.");

            accessor.Clear();

            hr = accessor.EnumTaskItems(out enumerator);

            Assert.AreEqual(VSConstants.S_OK, hr, "EnumTaskItems returned wrong hresult.");

            tasks = Utilities.TasksFromEnumerator(enumerator);
            Assert.AreEqual(0, tasks.Count, "EnumTaskItems did not enumerate correct number of tasks after Clear().");
        }
Beispiel #5
0
        public void GetSurrogateProviderGuidTest()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            Guid surrogate;
            int  hr = accessor.GetSurrogateProviderGuid(out surrogate);

            Assert.AreEqual(VSConstants.E_NOTIMPL, hr, "GetSurrogateProviderGuid returned wrong hresult.");
        }
Beispiel #6
0
        public void ReRegistrationKeyTest()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            string key;
            int    hr = accessor.ReRegistrationKey(out key);

            Assert.AreEqual(VSConstants.E_NOTIMPL, hr, "ReRegistrationKey returned wrong hresult.");
        }
Beispiel #7
0
        public void GetProviderNameTest()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            string name;
            int    hr = accessor.GetProviderName(out name);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetProviderName returned wrong hresult.");
            Assert.AreEqual("CodeSweep", name, "GetProviderName returned wrong name.");
        }
Beispiel #8
0
        public void GetProviderFlagsTest()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            uint flags;
            int  hr = accessor.GetProviderFlags(out flags);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetProvider flags returned wrong hresult.");
            Assert.AreEqual(__VSTASKPROVIDERFLAGS.TPF_NOAUTOROUTING | __VSTASKPROVIDERFLAGS.TPF_ALWAYSVISIBLE, (__VSTASKPROVIDERFLAGS)flags, "GetProviderFlags returned wrong flags.");
        }
Beispiel #9
0
        public void GetTaskProviderTest()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor providerAccessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            CodeSweep.VSPackage.Task_Accessor accessor = new CodeSweep.VSPackage.Task_Accessor("term", 1, "class", "comment", "replacement", "z:\\dir\\file.ext", 2, 3, "projFile", "full line text", providerAccessor, null);

            IVsTaskProvider3 provider;
            int hr = accessor.GetTaskProvider(out provider);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetTaskProvider returned wrong hresult.");
            Assert.AreEqual(providerAccessor, provider, "GetTaskProvider returned wrong provider.");
        }
Beispiel #10
0
        public void GetProviderToolbarTest()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            uint id    = 0;
            Guid group = Guid.Empty;
            int  hr    = accessor.GetProviderToolbar(out group, out id);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetProviderToolbar returned wrong hresult.");
            Assert.AreEqual(CodeSweep.VSPackage.GuidList_Accessor.guidVSPackageCmdSet, group, "GetProviderToolbar returned wrong group.");
            Assert.AreEqual((uint)0x2020, id, "GetProviderToolbar returned wrong id.");
        }
Beispiel #11
0
        public void GetProviderGuidTest()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor1 = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            Utilities.RemoveCommandHandlers(_serviceProvider);

            CodeSweep.VSPackage.TaskProvider_Accessor accessor2 = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            Guid guid1;
            Guid guid2;
            int  hr = accessor1.GetProviderGuid(out guid1);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetProviderGuid returned wrong hresult.");
            Assert.AreNotEqual(Guid.Empty, guid1, "GetProviderGuid returned null guid.");

            hr = accessor2.GetProviderGuid(out guid2);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetProviderGuid returned wrong hresult (second instance).");
            Assert.AreEqual(guid1, guid2, "GetProviderGuid did not return the same guid for two different instances.");
        }
Beispiel #12
0
        public void ImageListTest()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            IntPtr handle = IntPtr.Zero;

            try
            {
                int hr = accessor.ImageList(out handle);

                Assert.AreEqual(VSConstants.S_OK, hr, "ImageList returned wrong hresult.");
                Assert.AreNotEqual(IntPtr.Zero, handle, "ImageList returned null image list.");
                Assert.AreEqual(3, ImageList_GetImageCount(handle), "ImageList returned wrong number of images.");

                IntPtr handle2 = IntPtr.Zero;

                try
                {
                    accessor.ImageList(out handle);

                    Assert.AreNotEqual(handle, handle2, "ImageList did not return a new list handle each time.");
                }
                finally
                {
                    if (handle2 != IntPtr.Zero)
                    {
                        ImageList_Destroy(handle2);
                    }
                }
            }
            finally
            {
                if (handle != IntPtr.Zero)
                {
                    ImageList_Destroy(handle);
                }
            }
        }
Beispiel #13
0
        public void GetColumnValueTest()
        {
            Microsoft.Build.Evaluation.Project msbuildProj = Utilities.SetupMSBuildProject();

            // Set up a project so the project column can be populated.
            MockSolution   solution = _serviceProvider.GetService(typeof(SVsSolution)) as MockSolution;
            MockIVsProject project  = new MockIVsProject(msbuildProj.FullPath);

            solution.AddProject(project);

            CodeSweep.VSPackage.TaskProvider_Accessor providerAccessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            CodeSweep.VSPackage.Task_Accessor accessor = new CodeSweep.VSPackage.Task_Accessor("term", 1, "class", "comment with link:  http://www.microsoft.com", "replacement", "z:\\dir\\file.ext", 2, 3, msbuildProj.FullPath, "full line text", providerAccessor, null);

            uint   type;
            uint   flags;
            object val;
            string accName;

            int hr = accessor.GetColumnValue((int)TaskFields.Priority, out type, out flags, out val, out accName);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetColumnValue did not return S_OK for the Priority column.");
            Assert.AreEqual(__VSTASKVALUETYPE.TVT_IMAGE, (__VSTASKVALUETYPE)type, "Type of Priority column is incorrect.");
            Assert.AreEqual(__VSTASKVALUEFLAGS.TVF_HORZ_CENTER, (__VSTASKVALUEFLAGS)flags, "Flags for Priority column are incorrect.");
            Assert.AreEqual(typeof(int), val.GetType(), "Value of Priority column has wrong type.");
            Assert.IsTrue((int)val >= 0 && (int)val <= 2, "Image index for Priority column is out of range.");
            string[] imageAccText = new string[] { "High", "Medium", "Low" };
            Assert.AreEqual(imageAccText[(int)val], accName, "Accessibility text of Priority column is incorrect.");

            hr = accessor.GetColumnValue((int)TaskFields.PriorityNumber, out type, out flags, out val, out accName);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetColumnValue did not return S_OK for the PriorityNumber column.");
            Assert.AreEqual(__VSTASKVALUETYPE.TVT_BASE10, (__VSTASKVALUETYPE)type, "Type of PriorityNumber column is incorrect.");
            Assert.AreEqual(0, (int)flags, "Flags for PriorityNumber column are incorrect.");
            Assert.AreEqual(typeof(int), val.GetType(), "Value of PriorityNumber column has wrong type.");
            Assert.AreEqual(1, (int)val, "Value of PriorityNumber column is incorrect.");
            Assert.AreEqual("", accName, "Accessibility text of PriorityNumber column is incorrect.");

            hr = accessor.GetColumnValue((int)TaskFields.Term, out type, out flags, out val, out accName);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetColumnValue did not return S_OK for the Term column.");
            Assert.AreEqual(__VSTASKVALUETYPE.TVT_TEXT, (__VSTASKVALUETYPE)type, "Type of Term column is incorrect.");
            Assert.AreEqual(0, (int)flags, "Flags for Term column are incorrect.");
            Assert.AreEqual(typeof(string), val.GetType(), "Value of Term column has wrong type.");
            Assert.AreEqual("term", (string)val, "Value of Term column is incorrect.");
            Assert.AreEqual("", accName, "Accessibility text of Term column is incorrect.");

            hr = accessor.GetColumnValue((int)TaskFields.Class, out type, out flags, out val, out accName);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetColumnValue did not return S_OK for the Class column.");
            Assert.AreEqual(__VSTASKVALUETYPE.TVT_TEXT, (__VSTASKVALUETYPE)type, "Type of Class column is incorrect.");
            Assert.AreEqual(0, (int)flags, "Flags for Class column are incorrect.");
            Assert.AreEqual(typeof(string), val.GetType(), "Value of Class column has wrong type.");
            Assert.AreEqual("class", (string)val, "Value of Class column is incorrect.");
            Assert.AreEqual("", accName, "Accessibility text of Class column is incorrect.");

            hr = accessor.GetColumnValue((int)TaskFields.Replacement, out type, out flags, out val, out accName);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetColumnValue did not return S_OK for the Replacement column.");
            Assert.AreEqual(__VSTASKVALUETYPE.TVT_TEXT, (__VSTASKVALUETYPE)type, "Type of Replacement column is incorrect.");
            Assert.AreEqual(0, (int)flags, "Flags for Replacement column are incorrect.");
            Assert.AreEqual(typeof(string), val.GetType(), "Value of Replacement column has wrong type.");
            Assert.AreEqual("replacement", (string)val, "Value of Replacement column is incorrect.");
            Assert.AreEqual("", accName, "Accessibility text of Replacement column is incorrect.");

            hr = accessor.GetColumnValue((int)TaskFields.Comment, out type, out flags, out val, out accName);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetColumnValue did not return S_OK for the Comment column.");
            Assert.AreEqual(__VSTASKVALUETYPE.TVT_LINKTEXT, (__VSTASKVALUETYPE)type, "Type of Comment column is incorrect.");
            Assert.AreEqual(0, (int)flags, "Flags for Comment column are incorrect.");
            Assert.AreEqual(typeof(string), val.GetType(), "Value of Comment column has wrong type.");
            Assert.AreEqual("comment with link:  @http://www.microsoft.com@", (string)val, "Value of Comment column is incorrect.");
            Assert.AreEqual("", accName, "Accessibility text of Comment column is incorrect.");

            hr = accessor.GetColumnValue((int)TaskFields.File, out type, out flags, out val, out accName);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetColumnValue did not return S_OK for the File column.");
            Assert.AreEqual(__VSTASKVALUETYPE.TVT_TEXT, (__VSTASKVALUETYPE)type, "Type of File column is incorrect.");
            Assert.AreEqual(__VSTASKVALUEFLAGS.TVF_FILENAME, (__VSTASKVALUEFLAGS)flags, "Flags for File column are incorrect.");
            Assert.AreEqual(typeof(string), val.GetType(), "Value of File column has wrong type.");
            Assert.AreEqual("z:\\dir\\file.ext", (string)val, "Value of File column is incorrect.");
            Assert.AreEqual("", accName, "Accessibility text of File column is incorrect.");

            hr = accessor.GetColumnValue((int)TaskFields.Line, out type, out flags, out val, out accName);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetColumnValue did not return S_OK for the Line column.");
            Assert.AreEqual(__VSTASKVALUETYPE.TVT_BASE10, (__VSTASKVALUETYPE)type, "Type of Line column is incorrect.");
            Assert.AreEqual(0, (int)flags, "Flags for Line column are incorrect.");
            Assert.AreEqual(typeof(int), val.GetType(), "Value of Line column has wrong type.");
            Assert.AreEqual(3, (int)val, "Value of Line column is incorrect.");
            Assert.AreEqual("", accName, "Accessibility text of Line column is incorrect.");

            hr = accessor.GetColumnValue((int)TaskFields.Project, out type, out flags, out val, out accName);

            Assert.AreEqual(VSConstants.S_OK, hr, "GetColumnValue did not return S_OK for the Project column.");
            Assert.AreEqual(__VSTASKVALUETYPE.TVT_TEXT, (__VSTASKVALUETYPE)type, "Type of Project column is incorrect.");
            Assert.AreEqual(0, (int)flags, "Flags for Project column are incorrect.");
            Assert.AreEqual(typeof(string), val.GetType(), "Value of Project column has wrong type.");
            string uniqueName;

            solution.GetUniqueUINameOfProject(project, out uniqueName);
            Assert.AreEqual(uniqueName, (string)val, "Value of Project column is incorrect.");
            Assert.AreEqual("", accName, "Accessibility text of Project column is incorrect.");
        }
Beispiel #14
0
        public void GetColumns()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            VSTASKCOLUMN expectedPriority;

            expectedPriority.bstrCanonicalName    = "Priority";
            expectedPriority.bstrHeading          = "!";
            expectedPriority.bstrLocalizedName    = "Priority";
            expectedPriority.bstrTip              = "Priority";
            expectedPriority.cxDefaultWidth       = 22;
            expectedPriority.cxMinWidth           = 0;
            expectedPriority.fAllowHide           = 1;
            expectedPriority.fAllowUserSort       = 1;
            expectedPriority.fDescendingSort      = 0;
            expectedPriority.fDynamicSize         = 0;
            expectedPriority.fFitContent          = 0;
            expectedPriority.fMoveable            = 1;
            expectedPriority.fShowSortArrow       = 0;
            expectedPriority.fSizeable            = 1;
            expectedPriority.fVisibleByDefault    = 1;
            expectedPriority.iDefaultSortPriority = -1;
            expectedPriority.iField = (int)TaskFields.Priority;
            expectedPriority.iImage = -1;

            VSTASKCOLUMN expectedPriorityNumber;

            expectedPriorityNumber.bstrCanonicalName    = "Priority Number";
            expectedPriorityNumber.bstrHeading          = "!#";
            expectedPriorityNumber.bstrLocalizedName    = "Priority Number";
            expectedPriorityNumber.bstrTip              = "Priority Number";
            expectedPriorityNumber.cxDefaultWidth       = 50;
            expectedPriorityNumber.cxMinWidth           = 0;
            expectedPriorityNumber.fAllowHide           = 1;
            expectedPriorityNumber.fAllowUserSort       = 1;
            expectedPriorityNumber.fDescendingSort      = 0;
            expectedPriorityNumber.fDynamicSize         = 0;
            expectedPriorityNumber.fFitContent          = 0;
            expectedPriorityNumber.fMoveable            = 1;
            expectedPriorityNumber.fShowSortArrow       = 0;
            expectedPriorityNumber.fSizeable            = 1;
            expectedPriorityNumber.fVisibleByDefault    = 0;
            expectedPriorityNumber.iDefaultSortPriority = 0;
            expectedPriorityNumber.iField = (int)TaskFields.PriorityNumber;
            expectedPriorityNumber.iImage = -1;

            VSTASKCOLUMN expectedTerm;

            expectedTerm.bstrCanonicalName    = "Term";
            expectedTerm.bstrHeading          = "Term";
            expectedTerm.bstrLocalizedName    = "Term";
            expectedTerm.bstrTip              = "";
            expectedTerm.cxDefaultWidth       = 103;
            expectedTerm.cxMinWidth           = 0;
            expectedTerm.fAllowHide           = 1;
            expectedTerm.fAllowUserSort       = 1;
            expectedTerm.fDescendingSort      = 0;
            expectedTerm.fDynamicSize         = 1;
            expectedTerm.fFitContent          = 0;
            expectedTerm.fMoveable            = 1;
            expectedTerm.fShowSortArrow       = 1;
            expectedTerm.fSizeable            = 1;
            expectedTerm.fVisibleByDefault    = 1;
            expectedTerm.iDefaultSortPriority = -1;
            expectedTerm.iField = (int)TaskFields.Term;
            expectedTerm.iImage = -1;

            VSTASKCOLUMN expectedClass;

            expectedClass.bstrCanonicalName    = "Class";
            expectedClass.bstrHeading          = "Class";
            expectedClass.bstrLocalizedName    = "Class";
            expectedClass.bstrTip              = "";
            expectedClass.cxDefaultWidth       = 91;
            expectedClass.cxMinWidth           = 0;
            expectedClass.fAllowHide           = 1;
            expectedClass.fAllowUserSort       = 1;
            expectedClass.fDescendingSort      = 0;
            expectedClass.fDynamicSize         = 1;
            expectedClass.fFitContent          = 0;
            expectedClass.fMoveable            = 1;
            expectedClass.fShowSortArrow       = 1;
            expectedClass.fSizeable            = 1;
            expectedClass.fVisibleByDefault    = 1;
            expectedClass.iDefaultSortPriority = -1;
            expectedClass.iField = (int)TaskFields.Class;
            expectedClass.iImage = -1;

            VSTASKCOLUMN expectedReplacement;

            expectedReplacement.bstrCanonicalName    = "Replacement";
            expectedReplacement.bstrHeading          = "Replacement";
            expectedReplacement.bstrLocalizedName    = "Replacement";
            expectedReplacement.bstrTip              = "";
            expectedReplacement.cxDefaultWidth       = 140;
            expectedReplacement.cxMinWidth           = 0;
            expectedReplacement.fAllowHide           = 1;
            expectedReplacement.fAllowUserSort       = 1;
            expectedReplacement.fDescendingSort      = 0;
            expectedReplacement.fDynamicSize         = 0;
            expectedReplacement.fFitContent          = 0;
            expectedReplacement.fMoveable            = 1;
            expectedReplacement.fShowSortArrow       = 1;
            expectedReplacement.fSizeable            = 1;
            expectedReplacement.fVisibleByDefault    = 0;
            expectedReplacement.iDefaultSortPriority = -1;
            expectedReplacement.iField = (int)TaskFields.Replacement;
            expectedReplacement.iImage = -1;

            VSTASKCOLUMN expectedComment;

            expectedComment.bstrCanonicalName    = "Comment";
            expectedComment.bstrHeading          = "Comment";
            expectedComment.bstrLocalizedName    = "Comment";
            expectedComment.bstrTip              = "";
            expectedComment.cxDefaultWidth       = 400;
            expectedComment.cxMinWidth           = 0;
            expectedComment.fAllowHide           = 1;
            expectedComment.fAllowUserSort       = 1;
            expectedComment.fDescendingSort      = 0;
            expectedComment.fDynamicSize         = 1;
            expectedComment.fFitContent          = 0;
            expectedComment.fMoveable            = 1;
            expectedComment.fShowSortArrow       = 1;
            expectedComment.fSizeable            = 1;
            expectedComment.fVisibleByDefault    = 1;
            expectedComment.iDefaultSortPriority = -1;
            expectedComment.iField = (int)TaskFields.Comment;
            expectedComment.iImage = -1;

            VSTASKCOLUMN expectedFile;

            expectedFile.bstrCanonicalName    = "File";
            expectedFile.bstrHeading          = "File";
            expectedFile.bstrLocalizedName    = "File";
            expectedFile.bstrTip              = "";
            expectedFile.cxDefaultWidth       = 92;
            expectedFile.cxMinWidth           = 0;
            expectedFile.fAllowHide           = 1;
            expectedFile.fAllowUserSort       = 1;
            expectedFile.fDescendingSort      = 0;
            expectedFile.fDynamicSize         = 0;
            expectedFile.fFitContent          = 0;
            expectedFile.fMoveable            = 1;
            expectedFile.fShowSortArrow       = 1;
            expectedFile.fSizeable            = 1;
            expectedFile.fVisibleByDefault    = 1;
            expectedFile.iDefaultSortPriority = 2;
            expectedFile.iField = (int)TaskFields.File;
            expectedFile.iImage = -1;

            VSTASKCOLUMN expectedLine;

            expectedLine.bstrCanonicalName    = "Line";
            expectedLine.bstrHeading          = "Line";
            expectedLine.bstrLocalizedName    = "Line";
            expectedLine.bstrTip              = "";
            expectedLine.cxDefaultWidth       = 63;
            expectedLine.cxMinWidth           = 0;
            expectedLine.fAllowHide           = 1;
            expectedLine.fAllowUserSort       = 1;
            expectedLine.fDescendingSort      = 0;
            expectedLine.fDynamicSize         = 0;
            expectedLine.fFitContent          = 0;
            expectedLine.fMoveable            = 1;
            expectedLine.fShowSortArrow       = 1;
            expectedLine.fSizeable            = 1;
            expectedLine.fVisibleByDefault    = 1;
            expectedLine.iDefaultSortPriority = 3;
            expectedLine.iField = (int)TaskFields.Line;
            expectedLine.iImage = -1;

            VSTASKCOLUMN expectedProject;

            expectedProject.bstrCanonicalName    = "Project";
            expectedProject.bstrHeading          = "Project";
            expectedProject.bstrLocalizedName    = "Project";
            expectedProject.bstrTip              = "";
            expectedProject.cxDefaultWidth       = 116;
            expectedProject.cxMinWidth           = 0;
            expectedProject.fAllowHide           = 1;
            expectedProject.fAllowUserSort       = 1;
            expectedProject.fDescendingSort      = 0;
            expectedProject.fDynamicSize         = 0;
            expectedProject.fFitContent          = 0;
            expectedProject.fMoveable            = 1;
            expectedProject.fShowSortArrow       = 1;
            expectedProject.fSizeable            = 1;
            expectedProject.fVisibleByDefault    = 1;
            expectedProject.iDefaultSortPriority = 1;
            expectedProject.iField = (int)TaskFields.Project;
            expectedProject.iImage = -1;

            VSTASKCOLUMN[] expectedColumns = new VSTASKCOLUMN[]
            {
                expectedPriority,
                expectedPriorityNumber,
                expectedTerm,
                expectedClass,
                expectedReplacement,
                expectedComment,
                expectedFile,
                expectedLine,
                expectedProject
            };

            VSTASKCOLUMN dummy;

            dummy.bstrCanonicalName    = null;
            dummy.bstrHeading          = null;
            dummy.bstrLocalizedName    = null;
            dummy.bstrTip              = null;
            dummy.cxDefaultWidth       = -3;
            dummy.cxMinWidth           = -3;
            dummy.fAllowHide           = -3;
            dummy.fAllowUserSort       = -3;
            dummy.fDescendingSort      = -3;
            dummy.fDynamicSize         = -3;
            dummy.fFitContent          = -3;
            dummy.fMoveable            = -3;
            dummy.fShowSortArrow       = -3;
            dummy.fSizeable            = -3;
            dummy.fVisibleByDefault    = -3;
            dummy.iDefaultSortPriority = -3;
            dummy.iField = -3;
            dummy.iImage = -3;

            VSTASKCOLUMN[] column = new VSTASKCOLUMN[] { dummy };

            int hr;

            int count;

            hr = accessor.GetColumnCount(out count);
            Assert.AreEqual(VSConstants.S_OK, hr, "GetColumnCount returned wrong hresult.");
            Assert.AreEqual(Enum.GetValues(typeof(TaskFields)).Length, count, "GetColumnCount returned wrong count.");

            for (int i = 0; i < expectedColumns.Length; ++i)
            {
                hr = accessor.GetColumn(i, column);
                Assert.AreEqual(VSConstants.S_OK, hr, "GetColumnCount returned wrong hresult for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].bstrCanonicalName, column[0].bstrCanonicalName, "bstrCanonicalName was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].bstrHeading, column[0].bstrHeading, "bstrHeading was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].bstrLocalizedName, column[0].bstrLocalizedName, "bstrLocalizedName was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].bstrTip, column[0].bstrTip, "bstrTip was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].cxDefaultWidth, column[0].cxDefaultWidth, "cxDefaultWidth was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].cxMinWidth, column[0].cxMinWidth, "cxMinWidth was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].fAllowHide, column[0].fAllowHide, "fAllowHide was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].fAllowUserSort, column[0].fAllowUserSort, "fAllowUserSort was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].fDescendingSort, column[0].fDescendingSort, "fDescendingSort was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].fDynamicSize, column[0].fDynamicSize, "fDynamicSize was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].fFitContent, column[0].fFitContent, "fFitContent was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].fMoveable, column[0].fMoveable, "fMoveable was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].fShowSortArrow, column[0].fShowSortArrow, "fShowSortArrow was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].fSizeable, column[0].fSizeable, "fSizeable was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].fVisibleByDefault, column[0].fVisibleByDefault, "fVisibleByDefault was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].iDefaultSortPriority, column[0].iDefaultSortPriority, "iDefaultSortPriority was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].iField, column[0].iField, "iField was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
                Assert.AreEqual(expectedColumns[i].iImage, column[0].iImage, "iImage was wrong for " + expectedColumns[i].bstrCanonicalName + ".");
            }
        }
Beispiel #15
0
        public void TestEnumerator()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            // Add some tasks
            MockTermTable  table      = new MockTermTable("termtable.xml");
            MockTerm       term0      = new MockTerm("term0Text", 0, "term0Class", "term0Comment", "term0recommended", table);
            MockTerm       term1      = new MockTerm("term1Text", 3, "term1Class", "term1Comment", "term1recommended", table);
            MockScanHit    hit0       = new MockScanHit("file0", 1, 10, "line text", term0, null);
            MockScanHit    hit1       = new MockScanHit("file1", 4, 1, "line text 2", term1, null);
            MockScanResult scanResult = new MockScanResult("file0", new IScanHit[] { hit0, hit1 }, true);

            accessor.AddResult(scanResult, "c:\\projFile");

            IVsEnumTaskItems enumerator;
            int hr = accessor.EnumTaskItems(out enumerator);

            Assert.AreEqual(VSConstants.S_OK, hr, "EnumTaskItems returned wrong hresult.");

            IVsTaskItem[] items = new IVsTaskItem[3] {
                null, null, null
            };
            uint[] fetched = new uint[1] {
                0
            };
            hr = enumerator.Next(3, items, fetched);
            Assert.AreEqual(VSConstants.S_FALSE, hr, "Next returned wrong hresult with celt too high.");
            Assert.AreEqual((uint)2, fetched[0], "Next returned wrong value for fetched with celt too high.");
            Assert.IsNotNull(items[0], "Next failed to set first item with celt too high.");
            Assert.IsNotNull(items[1], "Next failed to set second item with celt too high.");
            Assert.IsNull(items[2], "Next set third item with celt too high.");

            hr = enumerator.Reset();
            Assert.AreEqual(VSConstants.S_OK, hr, "Reset returned wrong hresult.");

            items[0]   = items[1] = items[2] = null;
            fetched[0] = 0;
            hr         = enumerator.Next(2, items, fetched);
            Assert.AreEqual(VSConstants.S_OK, hr, "Next returned wrong hresult with celt at max.");
            Assert.AreEqual((uint)2, fetched[0], "Next returned wrong value for fetched with celt at max.");
            Assert.IsNotNull(items[0], "Next failed to set first item with celt at max.");
            Assert.IsNotNull(items[1], "Next failed to set second item with celt at max.");

            enumerator.Reset();

            items[0]   = items[1] = items[2] = null;
            fetched[0] = 0;
            hr         = enumerator.Next(1, items, fetched);
            Assert.AreEqual(VSConstants.S_OK, hr, "Next returned wrong hresult with celt lower than max.");
            Assert.AreEqual((uint)1, fetched[0], "Next returned wrong value for fetched with celt lower than max.");
            Assert.IsNotNull(items[0], "Next failed to set first item with celt lower than max.");
            Assert.IsNull(items[1], "Next set second item with celt lower than max.");

            enumerator.Reset();

            items[0]   = items[1] = items[2] = null;
            fetched[0] = 1;
            hr         = enumerator.Next(0, items, fetched);
            Assert.AreEqual(VSConstants.S_OK, hr, "Next returned wrong hresult with celt = 0.");
            Assert.AreEqual((uint)0, fetched[0], "Next returned wrong value for fetched with celt = 0.");
            Assert.IsNull(items[0], "Next set first item with celt = 0.");

            enumerator.Reset();

            hr = enumerator.Skip(0);
            Assert.AreEqual(VSConstants.S_OK, hr, "Skip(0) returned wrong hresult.");

            hr = enumerator.Skip(1);
            Assert.AreEqual(VSConstants.S_OK, hr, "Skip(1) returned wrong hresult.");

            hr = enumerator.Skip(2);
            Assert.AreEqual(VSConstants.S_FALSE, hr, "Skip(2) returned wrong hresult.");

            List <IVsTaskItem> tasks = Utilities.TasksFromEnumerator(enumerator);

            IVsEnumTaskItems enumerator2 = null;

            hr = enumerator.Clone(out enumerator2);
            Assert.AreEqual(VSConstants.S_OK, hr, "Clone returned wrong hresult.");

            List <IVsTaskItem> tasks2 = Utilities.TasksFromEnumerator(enumerator2);

            Assert.IsTrue(CodeSweep.Utilities.OrderedCollectionsAreEqual(tasks, tasks2), "Clone did not produce an equivalent collection.");
        }
Beispiel #16
0
        public void AddDuplicateTermsAndVerifyWarningAppearsOnce()
        {
            CodeSweep.VSPackage.TaskProvider_Accessor accessor = new CodeSweep.VSPackage.TaskProvider_Accessor(_serviceProvider);

            MockTermTable  table      = new MockTermTable("termtable.xml");
            MockTerm       term0      = new MockTerm("dupText", 0, "term0Class", "term0Comment", "term0recommended", table);
            MockTerm       term1      = new MockTerm("dupText", 3, "term1Class", "term1Comment", "term1recommended", table);
            MockTerm       term2      = new MockTerm("term2Text", 2, "term2Class", "term2Comment", "term2recommended", table);
            MockScanHit    hit0       = new MockScanHit("file0", 1, 10, "line text", term0, "warning 1");
            MockScanHit    hit1       = new MockScanHit("file1", 4, 1, "line text 2", term1, "warning 2");
            MockScanHit    hit2       = new MockScanHit("file2", 3, 2, "line text 3", term2, "warning 3");
            MockScanResult scanResult = new MockScanResult("file0", new IScanHit[] { hit0, hit1, hit2 }, true);

            accessor.AddResult(scanResult, "c:\\projFile");

            IVsEnumTaskItems enumerator;
            int hr = accessor.EnumTaskItems(out enumerator);

            Assert.AreEqual(VSConstants.S_OK, hr, "EnumTaskItems returned wrong hresult.");

            // Verify there are three hits plus two warnings.
            List <IVsTaskItem> tasks = Utilities.TasksFromEnumerator(enumerator);

            Assert.AreEqual(5, tasks.Count, "EnumTaskItems did not enumerate correct number of tasks.");

            string[] termValues = new string[5] {
                "dupText", "dupText", "dupText", "term2Text", "term2Text"
            };
            int[] priorityValues = new int[5] {
                0, 0, 3, 2, 2
            };
            string[] classValues = new string[5] {
                "term0Class", "term0Class", "term1Class", "term2Class", "term2Class"
            };
            string[] replacementValues = new string[5] {
                "", "term0recommended", "term1recommended", "", "term2recommended"
            };
            string[] commentValues = new string[5] {
                "warning 1", "term0Comment", "term1Comment", "warning 3", "term2Comment"
            };
            string[] fileValues = new string[5] {
                "", "file0", "file1", "", "file2"
            };

            for (int taskIndex = 0; taskIndex < tasks.Count; ++taskIndex)
            {
                uint   type;
                object val;
                uint   flags;
                string acc;

                hr = (tasks[taskIndex] as IVsTaskItem3).GetColumnValue((int)TaskFields.Term, out type, out flags, out val, out acc);
                Assert.AreEqual(VSConstants.S_OK, hr);
                Assert.AreEqual(__VSTASKVALUETYPE.TVT_TEXT, (__VSTASKVALUETYPE)type, "Task " + taskIndex.ToString() + " term type is wrong.");
                Assert.AreEqual(termValues[taskIndex], (string)val, "Task " + taskIndex.ToString() + " term text is wrong.");

                hr = (tasks[taskIndex] as IVsTaskItem3).GetColumnValue((int)TaskFields.Comment, out type, out flags, out val, out acc);
                Assert.AreEqual(VSConstants.S_OK, hr);
                Assert.AreEqual(__VSTASKVALUETYPE.TVT_LINKTEXT, (__VSTASKVALUETYPE)type, "Task " + taskIndex.ToString() + " comment type is wrong.");
                Assert.AreEqual(commentValues[taskIndex], (string)val, "Task " + taskIndex.ToString() + " comment text is wrong.");

                hr = (tasks[taskIndex] as IVsTaskItem3).GetColumnValue((int)TaskFields.Replacement, out type, out flags, out val, out acc);
                Assert.AreEqual(VSConstants.S_OK, hr);
                Assert.AreEqual(__VSTASKVALUETYPE.TVT_TEXT, (__VSTASKVALUETYPE)type, "Task " + taskIndex.ToString() + " replacement type is wrong.");
                Assert.AreEqual(replacementValues[taskIndex], (string)val, "Task " + taskIndex.ToString() + " replacement text is wrong.");
            }
        }