public void TestNullCoreStandardToIdentifier()
        {
            CoreStandardsRow   coreStandardsRow = new CoreStandardsRow("", "3-l", null, null, null, null);
            StandardIdentifier identifier       = StandardIdentifierTranslation.CoreStandardToIdentifier(coreStandardsRow);

            Assert.Null(identifier);
        }
        public static CoreStandards CoreStandardFromIdentifier(
            CoreStandardsXml standardsXml,
            StandardIdentifier itemIdentifier)
        {
            CoreStandardsRow targetRow = null;
            CoreStandardsRow ccssRow   = null;

            if (standardsXml != null && standardsXml.TargetRows.Any())
            {
                targetRow = standardsXml.TargetRows
                            .FirstOrDefault(t =>
                                            StandardIdentifierTargetComparer.Instance.Equals(t.StandardIdentifier, itemIdentifier));
            }

            if (standardsXml != null && standardsXml.CcssRows.Any())
            {
                ccssRow = standardsXml.CcssRows
                          .FirstOrDefault(t =>
                                          StandardIdentifierCcssComparer.Instance.Equals(t.StandardIdentifier, itemIdentifier));
            }

            return(CoreStandards.Create(
                       targetId: itemIdentifier?.Target,
                       targetIdLabel: itemIdentifier?.ToTargetId(),
                       commonCoreStandardsId: itemIdentifier?.CommonCoreStandard,
                       commonCoreStandardsDescription: ccssRow?.Description,
                       targetDescription: targetRow?.Description,
                       claimId: itemIdentifier?.ToClaimId(),
                       publication: itemIdentifier?.Publication));
        }
        public void TestCoreStandardFromIdentifier()
        {
            StandardIdentifier identifier = StandardIdentifierTranslation.StandardStringToStandardIdentifier(elaStandardString);
            var coreStandardsRowCcss      = ImmutableArray.Create(
                CoreStandardsRow.Create(
                    subjectCode: "ELA",
                    key: "3-l|4-6|6.SL.2",
                    name: "",
                    description: "CCSS Desc",
                    levelType: "CCSS",
                    identifier: identifier));

            var coreStandardsRowTarget = ImmutableArray.Create(
                CoreStandardsRow.Create(
                    subjectCode: "ELA",
                    key: "4-6|3-6",
                    name: "",
                    description: "Target Desc",
                    levelType: "Target",
                    identifier: identifier));

            CoreStandardsXml coreStandardsXml = new CoreStandardsXml(coreStandardsRowTarget, coreStandardsRowCcss);
            CoreStandards    core             = StandardIdentifierTranslation.CoreStandardFromIdentifier(coreStandardsXml, identifier);

            Assert.NotNull(core);
            Assert.Equal(core.CommonCoreStandardsId, "6.SL.2");
            Assert.Equal(core.TargetId, "4-6");
            Assert.Equal(core.TargetIdLabel, "4");
            Assert.Equal(core.TargetDescription, "Target Desc");
            Assert.Equal(core.CommonCoreStandardsDescription, "CCSS Desc");
        }
        public void TestCoreStandardToIdentifierELATarget()
        {
            CoreStandardsRow   coreStandardsRow = new CoreStandardsRow("ELA", "4-6|3-6", "", "", "Target", null);
            StandardIdentifier identifier       = StandardIdentifierTranslation.CoreStandardToIdentifier(coreStandardsRow);

            Assert.Equal("4-6", identifier.Claim);
            Assert.Equal("3-6", identifier.Target);
            Assert.Equal("ELA", identifier.SubjectCode);
        }
        public void TestInvalidCoreStandardToIdentifier()
        {
            CoreStandardsRow coreStandardsRow = new CoreStandardsRow("", null, null, null, null, null);
            Exception        exception        = Assert.Throws <ArgumentException>(() => StandardIdentifierTranslation.CoreStandardToIdentifier(coreStandardsRow));

            Assert.Equal("The standards string must not be null or empty", exception.Message);
            exception = Assert.Throws <ArgumentException>(() => StandardIdentifierTranslation.CoreStandardToIdentifier(null));
            Assert.Equal("The standards string must not be null or empty", exception.Message);
        }
        public void TestCoreStandardToIdentifierMathTarget()
        {
            CoreStandardsRow   coreStandardsRow = new CoreStandardsRow("MATH", "1|NBT|E-3", "", "", "Target", null);
            StandardIdentifier identifier       = StandardIdentifierTranslation.CoreStandardToIdentifier(coreStandardsRow);

            Assert.Equal("1", identifier.Claim);
            Assert.Equal("NBT", identifier.ContentDomain);
            Assert.Equal("E-3", identifier.Target);
            Assert.Equal("MATH", identifier.SubjectCode);
        }
        public void TestCoreStandardToIdentifierMathCcss()
        {
            CoreStandardsRow   coreStandardsRow = new CoreStandardsRow("MATH", "1|NBT|E-3|a/s|3.NBT.2", "", "", "CCSS", null);
            StandardIdentifier identifier       = StandardIdentifierTranslation.CoreStandardToIdentifier(coreStandardsRow);

            Assert.Equal("1", identifier.Claim);
            Assert.Equal("NBT", identifier.ContentDomain);
            Assert.Equal("E-3", identifier.Target);
            Assert.Equal("3.NBT.2", identifier.CommonCoreStandard);
        }
        public void TestCoreStandardToIdentifierELACcss()
        {
            CoreStandardsRow   coreStandardsRow = new CoreStandardsRow("ELA", "3-l|4-6|6.SL.2", "", "", "CCSS", null);
            StandardIdentifier identifier       = StandardIdentifierTranslation.CoreStandardToIdentifier(coreStandardsRow);

            Assert.Equal("3-l", identifier.Claim);
            Assert.Equal("4-6", identifier.Target);
            Assert.Equal("6.SL.2", identifier.CommonCoreStandard);
            Assert.Equal("ELA", identifier.SubjectCode);
        }
        private static CoreStandardsXml LoadCoreStandards(string targetFile)
        {
            var coreDoc = XmlSerialization.GetXDocument(targetFile);

            ImmutableArray <CoreStandardsRow> allRows = coreDoc.Element("Levels").Elements()
                                                        .Select(t => CoreStandardsRow.Create(t))
                                                        .ToImmutableArray();

            var ccss    = allRows.Where(r => r.LevelType == "CCSS").ToImmutableArray();
            var targets = allRows.Where(r => r.LevelType == "Target").ToImmutableArray();

            return(new CoreStandardsXml(
                       targetRows: targets,
                       ccssRows: ccss));
        }
        public static StandardIdentifier CoreStandardToIdentifier(CoreStandardsRow row)
        {
            if (row == null || string.IsNullOrEmpty(row.Key))
            {
                throw new ArgumentException("The standards string must not be null or empty");
            }

            string[] parts = row.Key.Split('|');

            StandardIdentifier identifier = null;

            if (row.SubjectCode == "ELA")
            {
                if (row.LevelType == "CCSS")
                {
                    identifier = ElaCoreStandardToCcss(parts);
                }
                else if (row.LevelType == "Target")
                {
                    identifier = ElaCoreStandardToTarget(parts);
                }
            }
            else if (row.SubjectCode == "MATH")
            {
                if (row.LevelType == "CCSS")
                {
                    identifier = MathCoreStandardToCcss(parts);
                }
                else if (row.LevelType == "Target")
                {
                    identifier = MathCoreStandardToTarget(parts);
                }
            }

            return(identifier);
        }
        public void TestToSampleItems()
        {
            var digests = ImmutableArray.Create(digest);
            ImmutableArray <AccessibilityFamilyResource> noPartialResources = ImmutableArray.Create <AccessibilityFamilyResource>();
            var subjectMath = ImmutableArray.Create("MATH");
            AccessibilityFamily noPartialResourcesFamily = new AccessibilityFamily(
                subjects: subjectMath,
                grades: GradeLevels.Grade5,
                resources: noPartialResources);

            MergedAccessibilityFamily resourceFamily = AccessibilityResourceTranslation.MergeGlobalResources(noPartialResourcesFamily, Resources);
            var resourceFamilies = ImmutableArray.Create(resourceFamily);

            Claim1 = new Claim("claim1", "1", "ELA Claim 1");
            Claim2 = new Claim("claim2", "2", "3");
            ItMath = new InteractionType("2", "EQ", "", 2);
            ItEla  = new InteractionType("1", "WER", "", 1);
            Math   = Subject.Create("MATH", "Mathematics", "Math", ImmutableArray.Create(Claim2), ImmutableArray.Create(ItMath.Code));
            Ela    = Subject.Create("ELA", "English", "ELA", ImmutableArray.Create(Claim1), ImmutableArray.Create(ItEla.Code));
            var interactionTypes = ImmutableArray.Create(ItEla, ItMath);
            var subjects         = ImmutableArray.Create(Ela, Math);

            StandardIdentifier identifier = StandardIdentifierTranslation.StandardStringToStandardIdentifier("SBAC-ELA-v1:3-L|4-6|6.SL.2");
            var coreStandardsRowCcss      = ImmutableArray.Create(
                CoreStandardsRow.Create(
                    subjectCode: "ELA",
                    key: "3-l|4-6|6.SL.2",
                    name: "",
                    description: "CCSS Desc",
                    levelType: "CCSS",
                    identifier: identifier));

            var coreStandardsRowTarget = ImmutableArray.Create(
                CoreStandardsRow.Create(
                    subjectCode: "ELA",
                    key: "4-6|3-6",
                    name: "",
                    description: "Target Desc",
                    levelType: "Target",
                    identifier: identifier));

            CoreStandardsXml coreStandardsXml = new CoreStandardsXml(coreStandardsRowTarget, coreStandardsRowCcss);
            var itemPatch       = ImmutableArray.Create(new ItemPatch());
            var brailleFileInfo = new List <BrailleFileInfo>();
            var items           = SampleItemTranslation.ToSampleItems(digests, resourceFamilies, interactionTypes, subjects, coreStandardsXml, itemPatch, brailleFileInfo, appSettings);

            Assert.NotNull(items);
            Assert.Equal(items[0].AccessibilityResourceGroups[0].AccessibilityResources[0].Label, Resources[0].Label);
            Assert.Equal(items[0].AccessibilityResourceGroups[0].AccessibilityResources[0].Order, Resources[0].Order);
            Assert.Equal(items[0].AccessibilityResourceGroups[0].AccessibilityResources[0].ResourceCode, Resources[0].ResourceCode);
            Assert.Equal(items[0].AccessibilityResourceGroups[0].AccessibilityResources[0].ResourceTypeId, Resources[0].ResourceTypeId);
            Assert.Equal(items[0].SufficentEvidenceOfClaim, metadata.Metadata.SufficientEvidenceOfClaim);
            Assert.Equal(items[0].TargetAssessmentType, metadata.Metadata.TargetAssessmentType);
            Assert.Equal(items[0].Grade, GradeLevelsUtils.FromString(digest.GradeCode));
            Assert.Equal(items[0].ItemKey, digest.ItemKey);
            Assert.Equal(items[0].BankKey, digest.BankKey);
            Assert.Equal(items[0].CoreStandards.CommonCoreStandardsDescription, coreStandardsRowCcss[0].Description);
            Assert.Equal(items[0].CoreStandards.TargetDescription, coreStandardsRowTarget[0].Description);
            Assert.Equal(items[0].InteractionType.Code, ItMath.Code);
            Assert.Equal(items[0].InteractionType.Label, ItMath.Label);
            Assert.Equal(items[0].Subject.Code, digest.SubjectCode);
        }