/// <summary>
        ///     Test method for <see cref="MaintainableUtil{T}.FilterCollection" />
        /// </summary>
        public void TestFilterCollection()
        {
            var dataflows = new List<IDataflowObject>();
            for (int i = 0; i < 5; i++)
            {
                var moq = new Mock<IDataflowObject>();
                moq.Setup(o => o.AgencyId).Returns((i % 2) == 0 ? "ESTAT" : "TEST");
                moq.Setup(o => o.Id).Returns("ID" + i.ToString(CultureInfo.InvariantCulture));
                moq.Setup(o => o.Version).Returns("1." + i.ToString(CultureInfo.InvariantCulture));
                dataflows.Add(moq.Object);
            }

            var dataflowUtil = new MaintainableUtil<IDataflowObject>();
            CollectionAssert.AreEquivalent(dataflows, dataflowUtil.FilterCollection(dataflows, null));
            CollectionAssert.AreEquivalent(dataflows, dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl()));
            CollectionAssert.IsSubsetOf(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl("ESTAT", null, null)), dataflows);
            CollectionAssert.AreNotEquivalent(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl("ESTAT", null, null)), dataflows);
            CollectionAssert.IsSubsetOf(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl("TEST", null, null)), dataflows);
            CollectionAssert.AreNotEquivalent(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl("TEST", null, null)), dataflows);
            CollectionAssert.IsSubsetOf(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl(null, "ID1", null)), dataflows);
            CollectionAssert.AreNotEquivalent(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl(null, "ID1", null)), dataflows);
            CollectionAssert.IsSubsetOf(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl(null, "ID1", "1.1")), dataflows);
            CollectionAssert.AreNotEquivalent(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl(null, "ID1", "1.1")), dataflows);
            CollectionAssert.IsSubsetOf(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl(null, null, "1.1")), dataflows);
            CollectionAssert.AreNotEquivalent(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl(null, null, "1.1")), dataflows);
            CollectionAssert.IsEmpty(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl("NOTHING", null, null)));
            CollectionAssert.IsEmpty(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl(null, "NO", null)));
            CollectionAssert.IsEmpty(dataflowUtil.FilterCollection(dataflows, new MaintainableRefObjectImpl(null, null, "5.0")));
        }
示例#2
0
        private static ISet <ICategorisationObject> GetCategorisations(
            IMaintainableObject maintainable, IEnumerable <ICategorisationObject> categorisations)
        {
            ISet <ICategorisationObject> returnSet = new HashSet <ICategorisationObject>();

            if (maintainable.IsExternalReference.IsTrue)
            {
                return(returnSet);
            }

            /* foreach */
            foreach (ICategorisationObject cat in categorisations)
            {
                if (cat.IsExternalReference.IsTrue)
                {
                    continue;
                }

                if (cat.StructureReference.TargetReference.EnumType == maintainable.StructureType.EnumType)
                {
                    if (MaintainableUtil <IMaintainableObject> .Match(maintainable, cat.StructureReference))
                    {
                        returnSet.Add(cat);
                    }
                }
            }

            return(returnSet);
        }
        private List <JsTreeNode> BuildJSTree(ISdmxObjects SdmxOBJ, string TwoLetterISO)
        {
            var categorisedDataflowIndex = new Dictionary <string, IDataflowObject>();
            var uncategorisedDataflow    = new List <IDataflowObject>();
            var nodeList = new List <JsTreeNode>();

            // for each dataflows control if has a categorization
            // if true put it in dataflow list or in uncategorizate list
            foreach (IDataflowObject d in SdmxOBJ.Dataflows)
            {
                if (!d.IsExternalReference.IsTrue &&
                    SdmxOBJ.Categorisations.Count(cat => !cat.IsExternalReference.IsTrue && cat.StructureReference.TargetReference.EnumType == d.StructureType.EnumType && MaintainableUtil <IMaintainableObject> .Match(d, cat.StructureReference)) == 0)
                {
                    uncategorisedDataflow.Add(d);
                }
                else
                {
                    categorisedDataflowIndex.Add(Utils.MakeKey(d), d);
                }
            }


            nodeList.AddRange(CreateCategorisedNodes(SdmxOBJ, categorisedDataflowIndex, TwoLetterISO));

            if (TreeObj.Configuration.UseUncategorysed)
            {
                var uncategorisedNode = new JsTreeNode();
                uncategorisedNode.SetRel("category-scheme");
                uncategorisedNode.type = "category-scheme";
                uncategorisedNode.SetId("uncategorised");
                uncategorisedNode.text = Messages.text_dataflows_uncategorized;
                foreach (IDataflowObject dataflow in uncategorisedDataflow)
                {
                    JsTreeNode node = CreateDataflowNode(dataflow, SdmxOBJ, TwoLetterISO);
                    if (node != null)
                    {
                        uncategorisedNode.children.Add(node);
                    }
                }
                if (uncategorisedNode.children.Count > 0)
                {
                    nodeList.Add(uncategorisedNode);
                }
            }
            return(nodeList);
        }
		public virtual ISet<IRegistrationObject> GetRegistrations(IMaintainableRefObject xref) {
			MaintainableUtil<IRegistrationObject> filter = new MaintainableUtil<IRegistrationObject>();
			return filter.FilterCollection(registrations, xref);
		}