public void TestToAccessibilityResourceNotModified() { ImmutableArray <AccessibilityFamilyResource> resource = ImmutableArray.Create <AccessibilityFamilyResource>(); AccessibilityFamilyResource familyResource = new AccessibilityFamilyResource( resourceCode: "ACC1", selections: ImmutableArray <AccessibilityFamilySelection> .Empty, disabled: false, defaultSelection: null); resource.Add(familyResource); AccessibilityFamily noPartialResources = new AccessibilityFamily( subjects: new ImmutableArray <string>(), grades: GradeLevels.NA, resources: resource); AccessibilityResource inputResource = Resources[1]; List <AccessibilityResource> inputResources = new List <AccessibilityResource> { inputResource }; var resultResources = AccessibilityResourceTranslation.MergeGlobalResources(noPartialResources, inputResources); Assert.Equal(inputResources.Count, resultResources.Resources.Count()); AccessibilityResource outputResource = resultResources.Resources[0]; Assert.Equal(inputResource.CurrentSelectionCode, outputResource.CurrentSelectionCode); Assert.Equal(inputResource.Description, outputResource.Description); Assert.Equal(inputResource.Disabled, outputResource.Disabled); Assert.Equal(inputResource.DefaultSelection, outputResource.DefaultSelection); Assert.Equal(inputResource.Order, outputResource.Order); Assert.Equal(inputResource.Selections.Count(), outputResource.Selections.Length); }
/// <summary> /// Tests that a global accessibility resource copy is not modified /// from the original given a partial accessibility resource that /// contains all of the select elements /// </summary> [Fact] public void TestToAccessibilityResourceNoChanges() { AccessibilityResource globalResource = Resources[1]; AccessibilityFamilyResource partialResource = new AccessibilityFamilyResource( resourceCode: "ACC1", selections: ImmutableArray.Create( AccessibilityFamilySelection.Create(code: "ACC2_SEL1"), AccessibilityFamilySelection.Create(code: "ACC2_SEL2")), disabled: false, defaultSelection: null); AccessibilityResource outputResource = AccessibilityResourceTranslation .MergeGlobalResource(partialResource, globalResource); Assert.Equal(globalResource.CurrentSelectionCode, outputResource.CurrentSelectionCode); Assert.Equal(globalResource.Disabled, outputResource.Disabled); Assert.Equal(globalResource.Label, outputResource.Label); Assert.Equal(globalResource.DefaultSelection, outputResource.DefaultSelection); Assert.Equal(globalResource.Selections.Count(), outputResource.Selections.Count()); }
public void TestToAccessibilityDisabledAllSelections() { AccessibilityResource globalResource = Resources[1]; AccessibilityFamilyResource partialResource = new AccessibilityFamilyResource( resourceCode: "ACC2", selections: ImmutableArray <AccessibilityFamilySelection> .Empty, disabled: false, defaultSelection: null); AccessibilityResource outputResource = AccessibilityResourceTranslation .MergeGlobalResource(partialResource, globalResource); Assert.Equal(globalResource.CurrentSelectionCode, outputResource.CurrentSelectionCode); Assert.Equal(false, outputResource.Disabled); Assert.Equal(globalResource.Label, outputResource.Label); Assert.Equal(globalResource.Selections.Count(), outputResource.Selections.Count()); foreach (var sel in outputResource.Selections) { Assert.Equal(true, sel.Disabled); } }
public void TestToAccessibilityDisabledSomeSelections() { AccessibilityResource globalResource = Resources[1]; AccessibilityFamilyResource partialResource = new AccessibilityFamilyResource( resourceCode: "TDS_CC", disabled: false, defaultSelection: null, selections: ImmutableArray.Create(AccessibilityFamilySelection.Create(code: "ACC2_SEL1"))); AccessibilityResource outputResource = AccessibilityResourceTranslation .MergeGlobalResource(partialResource, globalResource); Assert.Equal("ACC2_SEL1", outputResource.CurrentSelectionCode); Assert.Equal(false, outputResource.Disabled); Assert.Equal(globalResource.Label, outputResource.Label); // Check that default selection was also updated Assert.Equal("ACC2_SEL1", outputResource.DefaultSelection); Assert.Equal(globalResource.Selections.Length, outputResource.Selections.Length); Assert.Equal(false, outputResource.Selections[0].Disabled); Assert.Equal(true, outputResource.Selections[1].Disabled); }
public static AccessibilityResource MergeGlobalResource(AccessibilityFamilyResource familyResource, AccessibilityResource globalResource) { if (familyResource == null) { throw new ArgumentNullException(nameof(familyResource)); } else if (globalResource == null) { throw new ArgumentNullException(nameof(globalResource)); } var newSelections = globalResource.Selections .Select(sel => MergeSelection(sel, familyResource)) .ToImmutableArray(); string defaultSelection = (!string.IsNullOrEmpty(familyResource.DefaultSelection)) ? familyResource.DefaultSelection : globalResource.DefaultSelection; var matchingSelection = newSelections.FirstOrDefault(s => s.SelectionCode == defaultSelection); bool isDefaultInvalid = matchingSelection == null || matchingSelection.Disabled; string newDefault = isDefaultInvalid ? newSelections.FirstOrDefault(s => !s.Disabled && !s.Hidden)?.SelectionCode ?? defaultSelection : defaultSelection; var newResource = new AccessibilityResource( resourceCode: globalResource.ResourceCode, currentSelectionCode: newDefault, order: globalResource.Order, defaultSelection: newDefault, selections: newSelections, label: globalResource.Label, description: globalResource.Description, disabled: familyResource.Disabled, resourceType: globalResource.ResourceTypeId); return(newResource); }
public void TestToAccessibilityDisabledResource() { AccessibilityResource globalResource = Resources[1]; AccessibilityFamilyResource partialResource = new AccessibilityFamilyResource( resourceCode: "ACC2", disabled: true, defaultSelection: null, selections: ImmutableArray.Create( AccessibilityFamilySelection.Create(code: "ACC2_SEL1"), AccessibilityFamilySelection.Create(code: "ACC2_SEL2"))); AccessibilityResource outputResource = AccessibilityResourceTranslation.MergeGlobalResource(partialResource, globalResource); Assert.Equal(globalResource.CurrentSelectionCode, outputResource.CurrentSelectionCode); Assert.True(outputResource.Disabled); Assert.Equal(globalResource.Label, outputResource.Label); Assert.Equal(globalResource.DefaultSelection, outputResource.DefaultSelection); Assert.Equal(globalResource.Selections.Length, outputResource.Selections.Length); foreach (var sel in outputResource.Selections) { Assert.True(sel.Disabled); } }
private static AccessibilitySelection MergeSelection(AccessibilitySelection sel, AccessibilityFamilyResource familyResource) { var familySel = familyResource.Selections.SingleOrDefault(fs => fs.Code == sel.SelectionCode); var selDisabled = familyResource.Disabled || familySel == null || familySel.Hidden; string label = (!string.IsNullOrEmpty(familySel?.Label)) ? familySel.Label : sel.Label; var newSelection = new AccessibilitySelection( code: sel.SelectionCode, label: label, order: sel.Order, disabled: selDisabled, hidden: familySel?.Hidden ?? sel.Hidden); return(newSelection); }
public AccessibilityTranslationTests() { Resources = new List <AccessibilityResource> { AccessibilityResource.Create( resourceCode: "ACC1", order: 1, disabled: false, defaultSelection: "ACC1_SEL1", currentSelectionCode: "ACC1_SEL1", label: "Accessibility 1", description: "Accessibility Selection One", selections: ImmutableArray.Create( new AccessibilitySelection( code: "ACC1_SEL1", order: 1, disabled: false, label: "Selection 1", hidden: false))), AccessibilityResource.Create( resourceCode: "ACC2", order: 2, disabled: false, defaultSelection: "ACC2_SEL2", currentSelectionCode: "ACC2_SEL2", label: "Accessibility 2", description: "Accessibility Selection Two", selections: ImmutableArray.Create( new AccessibilitySelection( code: "ACC2_SEL1", order: 1, disabled: false, label: "Selection 1", hidden: false), new AccessibilitySelection( code: "ACC2_SEL2", order: 2, disabled: false, label: "Selection 2", hidden: false))) }; PartialResources = new List <AccessibilityResource> { AccessibilityResource.Create( resourceCode: "ACC1", selections: ImmutableArray.Create( AccessibilitySelection.Create( code: "ACC1_SEL1", label: "Selection 1"))), AccessibilityResource.Create( resourceCode: "ACC2", selections: ImmutableArray.Create( AccessibilitySelection.Create( code: "ACC1_SEL1", label: "Selection 1"), AccessibilitySelection.Create( code: "ACC1_SEL2", label: "Selection 2"))), }; familyResource = new AccessibilityFamilyResource( resourceCode: "TDS_CC", selections: ImmutableArray <AccessibilityFamilySelection> .Empty, disabled: false, defaultSelection: null); globalResource = new AccessibilityResource( resourceCode: "TDS_CC", currentSelectionCode: "TDS_CC0", order: 5, defaultSelection: "TDS_CC0", selections: ImmutableArray.Create( new AccessibilitySelection("TDS_CC0", "Black on White", 2, false, false), new AccessibilitySelection("TDS_CCInvert", "Reverse Contrast", 2, false, false), new AccessibilitySelection("TDS_CCMagenta", "Black on Rose", 2, false, false), new AccessibilitySelection("TDS_CCMedGrayLtGray", "Medium Gray on Light Gray", 2, false, false)), label: "globalResource", description: "globalResource", disabled: false, resourceType: "globalResource Type"); }