public void AddIssue_IssuesExist_ReturnsCorrectSet() { using (ShimsContext.Create()) { IFingerprint fingerprint1 = new StubIFingerprint { EqualsIFingerprint = (f) => false }; IFingerprint fingerprint2 = new StubIFingerprint(); IFingerprint fingerprint3 = new StubIFingerprint(); Issue issue1 = new ShimIssue(); Issue issue2 = new ShimIssue(); Issue issue3 = new ShimIssue(); using (IIssueStore store = new OutputFileIssueStore(TestFile, Enumerable.Empty <A11yElement>(), (f, e, s) => { s.Add(fingerprint1, issue1); s.Add(fingerprint2, issue2); s.Add(fingerprint3, issue3); })) { List <Issue> issueList = store.Issues.ToList(); // Issues are unsorted! Assert.AreEqual(3, issueList.Count); Assert.IsTrue(issueList.Contains(issue1)); Assert.IsTrue(issueList.Contains(issue2)); Assert.IsTrue(issueList.Contains(issue3)); } } }
public void IsUpdatable_IsFalse() { using (IIssueStore store = new OutputFileIssueStore(TestFile, Enumerable.Empty <A11yElement>())) { Assert.IsFalse(store.IsUpdatable); } }
public void ExtractIssues_ElementsContainOneNotSupported_LeavesStoreUnchanged() { Dictionary <IFingerprint, Issue> store = new Dictionary <IFingerprint, Issue>(); using (ShimsContext.Create()) { int resultsGotten = 0; ScanResults scanResults = new ShimScanResults { StatusGet = () => { resultsGotten++; return(ScanStatus.ScanNotSupported); } }; IEnumerable <A11yElement> elements = new List <A11yElement> { new ShimA11yElement { ScanResultsGet = () => scanResults }, new ShimA11yElement { ScanResultsGet = () => scanResults }, }; Assert.IsFalse(store.Any()); OutputFileIssueStore.ExtractIssues(TestFile, elements, store); Assert.IsFalse(store.Any()); Assert.AreEqual(2, resultsGotten); } }
public void TryFindIssue_IssueIsInStore_ReturnsTrueWithCorrectIssue() { using (ShimsContext.Create()) { IFingerprint actualFingerprint = null; IFingerprint expectedFingerprint = new StubIFingerprint { EqualsIFingerprint = (f) => { actualFingerprint = f; return(true); }, }; Issue actualIssue = null; Issue expectedIssue = new ShimIssue(); using (IIssueStore store = new OutputFileIssueStore(TestFile, Enumerable.Empty <A11yElement>(), (f, e, s) => { s.Add(expectedFingerprint, expectedIssue); })) { Assert.IsNull(actualFingerprint); Assert.IsNull(actualIssue); Assert.IsTrue(store.TryFindIssue(expectedFingerprint, out actualIssue)); Assert.AreSame(expectedFingerprint, actualFingerprint); Assert.AreSame(expectedIssue, actualIssue); } } }
public void Issues_NoIssuesExist_ReturnsEmptySet() { using (IIssueStore store = new OutputFileIssueStore(TestFile, Enumerable.Empty <A11yElement>())) { Assert.IsFalse(store.Issues.Any()); } }
/// <summary> /// Merge a results file into the local issue store. This clears all internal data contexts /// </summary> /// <param name="path">Path to the file to merge</param> /// <returns>The number of changes (additions or merges) to the store</returns> public static int MergeOutputFileToIssueStore(string path) { int changeCount = 0; try { Tuple <Guid, SnapshotMetaInfo> loadInfo = SelectAction.GetDefaultInstance().SelectLoadedData(path); ElementContext elementContext = DataManager.GetDefaultInstance().GetElementContext(loadInfo.Item1); IIssueStore storeToMerge = new OutputFileIssueStore(path, elementContext.DataContext.Elements.Values); changeCount = SessionIssueStore.GetInstance().MergeIssuesFromStore(storeToMerge); } #pragma warning disable CA1031 // Do not catch general exception types catch (Exception e) { e.ReportException(); } #pragma warning restore CA1031 // Do not catch general exception types finally { SelectAction.GetDefaultInstance().ClearSelectedContext(); } return(changeCount); }
public void ExtractIssues_ElementSetIsEmpty_LeavesStoreUnchanged() { Dictionary <IFingerprint, Issue> store = new Dictionary <IFingerprint, Issue>(); Assert.IsFalse(store.Any()); OutputFileIssueStore.ExtractIssues(TestFile, Enumerable.Empty <A11yElement>(), store); Assert.IsFalse(store.Any()); }
public void AddIssue_IssueIsNotNull_ReturnsNotSupported() { using (IIssueStore store = new OutputFileIssueStore(TestFile, Enumerable.Empty <A11yElement>())) { using (ShimsContext.Create()) { Assert.AreEqual(AddResult.NotSupported, store.AddIssue(new ShimIssue())); } } }
public void AddIssue_IssueIsNull_ThrowsArgumentNullException() { using (IIssueStore store = new OutputFileIssueStore(TestFile, Enumerable.Empty <A11yElement>())) { try { store.AddIssue(null); } catch (ArgumentNullException e) { Assert.AreEqual("issue", e.ParamName); throw; } } }
public void TryFindIssue_FingerprintIsNull_ThrowsArgumentNullException() { using (IIssueStore store = new OutputFileIssueStore(TestFile, Enumerable.Empty <A11yElement>())) { try { store.TryFindIssue(null, out Issue issue); } catch (ArgumentNullException e) { Assert.AreEqual("fingerprint", e.ParamName); throw; } } }
/// <summary> /// Merge a results file into the local issue store. This clears all internal data contexts /// </summary> /// <param name="path">Path to the file to merge</param> /// <returns>The number of changes (additions or merges) to the store</returns> public static int MergeOutputFileToIssueStore(string path) { int changeCount = 0; try { Tuple <Guid, SnapshotMetaInfo> loadInfo = SelectAction.GetDefaultInstance().SelectLoadedData(path); ElementContext elementContext = DataManager.GetDefaultInstance().GetElementContext(loadInfo.Item1); IIssueStore storeToMerge = new OutputFileIssueStore(path, elementContext.DataContext.Elements.Values); changeCount = SessionIssueStore.GetInstance().MergeIssuesFromStore(storeToMerge); } catch (Exception) { } finally { SelectAction.GetDefaultInstance().ClearSelectedContext(); } return(changeCount); }
public void ExtractIssues_ElementsContainUncertainsWithSameFingerprint_AddsOneUncertainWithTwoLocations() { const ScanStatus scanStatus = ScanStatus.Uncertain; Dictionary <IFingerprint, Issue> store = new Dictionary <IFingerprint, Issue>(); using (ShimsContext.Create()) { List <ILocation> actualLocations = new List <ILocation>(); List <IFingerprint> actualFingerprints = new List <IFingerprint>(); List <string> actualFileNames = new List <string>(); List <ScanStatus> actualStatuses = new List <ScanStatus>(); List <string> actualIssueTypes = new List <string>(); List <RuleId> actualRuleIds = new List <RuleId>(); List <A11yElement> actualElements = new List <A11yElement>(); IFingerprint expectedFingerprint = new StubIFingerprint { EqualsIFingerprint = (f) => true, }; Issue expectedIssue = new ShimIssue { AddLocationILocation = (l) => { actualLocations.Add(l); return(AddResult.ItemAdded); } }; ILocation expectedLocation1 = new StubILocation(); ILocation expectedLocation2 = new StubILocation(); string expectedIssueType = "ChildUniqueNameOrType_Uncertain"; RuleId expectedRuleId = RuleId.ChildUniqueNameOrType; ShimOutputFileIssueStore.BuildFingerprintA11yElementRuleIdScanStatus = (e, r, s) => { actualElements.Add(e); actualRuleIds.Add(r); actualStatuses.Add(s); return(expectedFingerprint); }; List <ILocation> expectedLocations = new List <ILocation> { expectedLocation1, expectedLocation2 }; ShimOutputFileIssueStore.BuildLocationA11yElementString = (e, f) => { actualElements.Add(e); actualFileNames.Add(f); ILocation location = expectedLocations[0]; expectedLocations.RemoveAt(0); return(location); }; ShimOutputFileIssueStore.BuildIssueStringIFingerprint = (i, f) => { actualIssueTypes.Add(i); actualFingerprints.Add(f); return(expectedIssue); }; ScanResults scanResults = new ShimScanResults { StatusGet = () => scanStatus, ItemsGet = () => new List <ScanResult> { new ShimScanResult { ItemsGet = () => new List <RuleResult> { new ShimRuleResult { StatusGet = () => scanStatus, RuleGet = () => expectedRuleId, } } } }, }; A11yElement expectedElement1 = new ShimA11yElement { ScanResultsGet = () => scanResults }; A11yElement expectedElement2 = new ShimA11yElement { ScanResultsGet = () => scanResults }; IEnumerable <A11yElement> elements = new List <A11yElement> { expectedElement1, expectedElement2, }; Assert.IsFalse(store.Any()); OutputFileIssueStore.ExtractIssues(TestFile, elements, store); Assert.AreEqual(0, expectedLocations.Count); Assert.AreEqual(1, store.Count); Assert.AreEqual(4, actualElements.Count); Assert.AreSame(expectedElement1, actualElements[0]); Assert.AreSame(expectedElement1, actualElements[1]); Assert.AreSame(expectedElement2, actualElements[2]); Assert.AreSame(expectedElement2, actualElements[3]); Assert.AreEqual(2, actualFileNames.Count); Assert.AreEqual(TestFile, actualFileNames[0]); Assert.AreEqual(TestFile, actualFileNames[1]); Assert.AreEqual(1, actualFingerprints.Count); Assert.AreSame(expectedFingerprint, actualFingerprints[0]); Assert.AreEqual(2, actualStatuses.Count); Assert.AreEqual(scanStatus, actualStatuses[0]); Assert.AreEqual(scanStatus, actualStatuses[1]); Assert.AreEqual(1, actualIssueTypes.Count); Assert.AreEqual(expectedIssueType, actualIssueTypes[0]); Assert.AreEqual(2, actualLocations.Count); Assert.AreSame(expectedLocation1, actualLocations[0]); Assert.AreSame(expectedLocation2, actualLocations[1]); Assert.AreEqual(2, actualRuleIds.Count); Assert.AreEqual(expectedRuleId, actualRuleIds[0]); Assert.AreEqual(expectedRuleId, actualRuleIds[1]); } }