public void GetTaxonTrees_BreadthFirstAndDepthFirstIterationTest() { using (ShimsContext.Create()) { //Arrange const int CanidaeTaxonId = 2002154; /* Hierarchical structure for Canidae. 2016-05-12. * Canidae (2002154) * Canis * Canis Lupus * Canis lupus lupus * Canis lupus familiaris * Vulpes * Vulpes vulpes * Vulpes lagopus * Nycterutes * Nyctereutes procyonides */ LoginApplicationUserAndSetSessionVariables(); SetSwedishLanguage(); IUserContext userContext = ApplicationUserContextSV; TaxonTreeSearchCriteria taxonTreeSearchCriteria = new TaxonTreeSearchCriteria(); taxonTreeSearchCriteria.TaxonIds = new List <int>(); taxonTreeSearchCriteria.TaxonIds.Add(CanidaeTaxonId); taxonTreeSearchCriteria.IsValidRequired = true; taxonTreeSearchCriteria.Scope = TaxonTreeSearchScope.AllChildTaxa; //Act var taxonTreeNodeList = CoreData.TaxonManager.GetTaxonTrees(userContext, taxonTreeSearchCriteria); List <ITaxonTreeNode> breadthFirstList = new List <ITaxonTreeNode>(); Debug.WriteLine("Breadth first"); Debug.WriteLine("=============="); foreach (ITaxonTreeNode taxonTreeNode in taxonTreeNodeList.AsBreadthFirstIterator()) { breadthFirstList.Add(taxonTreeNode); Debug.WriteLine(taxonTreeNode.Taxon.ScientificName); } Debug.WriteLine(""); Debug.WriteLine("Depth first"); Debug.WriteLine("=============="); List <ITaxonTreeNode> depthFirstList = new List <ITaxonTreeNode>(); foreach (ITaxonTreeNode taxonTreeNode in taxonTreeNodeList.AsDepthFirstIterator()) { depthFirstList.Add(taxonTreeNode); Debug.WriteLine(taxonTreeNode.Taxon.ScientificName); } //Assert // Check contains same elements. CollectionAssert.AreEquivalent(breadthFirstList, depthFirstList); // Check the order of the elements are not equal. CollectionAssert.AreNotEqual(breadthFirstList, depthFirstList); } }
public void GetTaxonNamesByTaxonIds() { Int32 index; List <TaxonNameList> allTaxonNames; TaxonList taxa; TaxonTreeNodeList taxonTrees; ITaxonTreeSearchCriteria searchCriteria; // Test with a few taxa. taxa = new TaxonList(); taxa.Add(GetTaxonDataSource(true).GetTaxon(GetUserContext(), (Int32)(TaxonId.Bear))); taxa.Add(GetTaxonDataSource().GetTaxon(GetUserContext(), (Int32)(TaxonId.Mammals))); allTaxonNames = GetTaxonDataSource().GetTaxonNames(GetUserContext(), taxa); Assert.IsTrue(allTaxonNames.IsNotEmpty()); Assert.AreEqual(taxa.Count, allTaxonNames.Count); for (index = 0; index < taxa.Count; index++) { Assert.IsTrue(allTaxonNames[index].IsNotEmpty()); foreach (ITaxonName taxonName in allTaxonNames[index]) { Assert.AreEqual(taxa[index].Id, taxonName.Taxon.Id); } } // Test with lots of taxa. if (Configuration.IsAllTestsRun) { taxa = new TaxonList(true); searchCriteria = new TaxonTreeSearchCriteria(); searchCriteria.IsValidRequired = true; taxonTrees = CoreData.TaxonManager.GetTaxonTrees(GetUserContext(), searchCriteria); foreach (ITaxonTreeNode taxonTree in taxonTrees) { taxa.Merge(taxonTree.GetTaxa()); } allTaxonNames = GetTaxonDataSource().GetTaxonNames(GetUserContext(), taxa); Assert.IsTrue(allTaxonNames.IsNotEmpty()); Assert.AreEqual(taxa.Count, allTaxonNames.Count); for (index = 0; index < taxa.Count; index++) { Assert.IsTrue(allTaxonNames[index].IsNotEmpty()); foreach (ITaxonName taxonName in allTaxonNames[index]) { Assert.AreEqual(taxa[index].Id, taxonName.Taxon.Id); } } } }
/// <summary> /// Get all protected taxa /// </summary> /// <returns>A list of all protected taxa</returns> private TaxonList GetProtectedTaxa() { ISpeciesFactSearchCriteria searchCriteria = new SpeciesFactSearchCriteria(); searchCriteria.Factors = new FactorList(); searchCriteria.IndividualCategories = new IndividualCategoryList { CoreData.FactorManager.GetDefaultIndividualCategory(mContext) }; searchCriteria.Factors.Add(CoreData.FactorManager.GetFactor(mContext, FactorId.ProtectionLevel)); var speciesFactList = CoreData.SpeciesFactManager.GetSpeciesFacts(mContext, searchCriteria); var taxonList = new TaxonList(true); foreach (var speciesFact in speciesFactList) { if (speciesFact.MainField != null && speciesFact.MainField.HasValue && speciesFact.MainField.EnumValue != null && speciesFact.MainField.EnumValue.Enum != null) { const int RedListProtectionLevel = 1; if (speciesFact.MainField.EnumValue.KeyInt > RedListProtectionLevel) { taxonList.Add(speciesFact.Taxon); } } } ITaxonTreeSearchCriteria taxonTreeSearchCriteria = new TaxonTreeSearchCriteria(); taxonTreeSearchCriteria.TaxonIds = taxonList.GetIds(); taxonTreeSearchCriteria.Scope = TaxonTreeSearchScope.AllChildTaxa; taxonTreeSearchCriteria.IsValidRequired = true; TaxonTreeNodeList taxonTreeNodeList = CoreData.TaxonManager.GetTaxonTrees(mContext, taxonTreeSearchCriteria); foreach (var taxonTreeNode in taxonTreeNodeList) { taxonList.Merge(taxonTreeNode.GetChildTaxa()); } return(taxonList); }
public void GetTaxonTreesBySearchCriteria() { TaxonTreeNodeList taxonTrees; ITaxonTreeSearchCriteria searchCriteria; // Get a part of the taxon tree. GetTaxonDataSource(true); foreach (TaxonTreeSearchScope scope in Enum.GetValues(typeof(TaxonTreeSearchScope))) { searchCriteria = new TaxonTreeSearchCriteria(); searchCriteria.IsValidRequired = true; searchCriteria.Scope = scope; searchCriteria.TaxonIds = new List <Int32>(); searchCriteria.TaxonIds.Add((Int32)(TaxonId.Mammals)); taxonTrees = GetTaxonDataSource().GetTaxonTrees(GetUserContext(), searchCriteria); Assert.IsTrue(taxonTrees.IsNotEmpty()); if ((searchCriteria.Scope == TaxonTreeSearchScope.AllChildTaxa) || (searchCriteria.Scope == TaxonTreeSearchScope.NearestChildTaxa)) { Assert.AreEqual(1, taxonTrees.Count); Assert.AreEqual((Int32)(TaxonId.Mammals), taxonTrees[0].Taxon.Id); } } // Get the entire taxon tree (valid taxa and relations). searchCriteria = new TaxonTreeSearchCriteria(); searchCriteria.IsValidRequired = true; taxonTrees = GetTaxonDataSource().GetTaxonTrees(GetUserContext(), searchCriteria); Assert.IsTrue(taxonTrees.IsNotEmpty()); // Get the entire taxon tree (include not valid taxa and relations). searchCriteria = new TaxonTreeSearchCriteria(); searchCriteria.IsValidRequired = false; taxonTrees = GetTaxonDataSource().GetTaxonTrees(GetUserContext(), searchCriteria); Assert.IsTrue(taxonTrees.IsNotEmpty()); }