public void Search_PropertiesBackendSkipFilterTokens(string input) { var searchElement = new SearchElement(); searchElement.RegisterSearchBackend(CreateSearchBackend <EquatableAndComparableTestData>(SearchBackendType.Properties)); var sourceData = new[] { new EquatableAndComparableTestData { Name = "hello" }, new EquatableAndComparableTestData { Name = "hola" }, }; EquatableAndComparableTestData[] filtered = null; searchElement.RegisterSearchQueryHandler <EquatableAndComparableTestData>(q => filtered = q.Apply(sourceData).ToArray()); searchElement.AddSearchDataProperty(new PropertyPath(nameof(EquatableAndComparableTestData.Name))); searchElement.AddSearchFilterPopupItem("c", "component type"); searchElement.Search(input); Assert.That(filtered, Is.EquivalentTo(sourceData)); }
public void Search_WithSearchDataProperties_ReturnsFilteredResults(string searchString, string searchDataProperties, int expectedCount) { var originalData = Generate(100); var filteredData = default(TestData[]); m_SearchElement.RegisterSearchQueryHandler <TestData>(search => { filteredData = search.Apply(originalData).ToArray(); }); foreach (var path in searchDataProperties.Split(' ')) { m_SearchElement.AddSearchDataProperty(new PropertyPath(path)); } m_SearchElement.value = searchString; Assert.That(filteredData.Length, Is.EqualTo(expectedCount)); }
public void SearchElementPerformance_WithSearchDataProperty() { var searchElement = new SearchElement { SearchDelay = 0, GlobalStringComparison = StringComparison.Ordinal }; var originalData = Generate(100000); var filteredData = new List <TestData>(); searchElement.RegisterSearchQueryHandler <TestData>(search => { filteredData.Clear(); foreach (var element in search.Apply(originalData)) { filteredData.Add(element); } }); searchElement.AddSearchDataProperty(new PropertyPath(nameof(TestData.Name))); Measure.Method(() => { searchElement.Search("Mat"); }) .WarmupCount(1) .MeasurementCount(1) .Run(); Assert.That(filteredData.Count, Is.EqualTo(25000)); }
void AddSearchElement(VisualElement root) { m_SearchElement = AddSearchElement <SystemForSearch>(root, UssClasses.DotsEditorCommon.SearchFieldContainer); m_SearchElement.RegisterSearchQueryHandler <SystemForSearch>(query => { var parseResult = SearchQueryParser.ParseSearchQuery(query); m_SystemTreeView.SetFilter(query, parseResult); }); m_SearchElement.AddSearchFilterPopupItem(Constants.SystemSchedule.k_ComponentToken.Substring(0, 1), k_FilterComponentType, k_FilterComponentTypeTooltip); m_SearchElement.AddSearchFilterPopupItem(Constants.SystemSchedule.k_SystemDependencyToken.Substring(0, 2), k_FilterSystemDependencies, k_FilterSystemDependenciesTooltip); m_SearchElement.AddSearchDataProperty(new PropertyPath(nameof(SystemForSearch.SystemName))); m_SearchElement.AddSearchFilterProperty(Constants.SystemSchedule.k_ComponentToken.Substring(0, 1), new PropertyPath(nameof(SystemForSearch.ComponentNamesInQuery))); m_SearchElement.AddSearchFilterProperty(Constants.SystemSchedule.k_SystemDependencyToken.Substring(0, 2), new PropertyPath(nameof(SystemForSearch.SystemDependency))); m_SearchElement.EnableAutoComplete(ComponentTypeAutoComplete.Instance); }
public void Search_TokensShouldBeEmptyOnEmptySearchString(SearchBackendType backendType) { var searchElement = new SearchElement(); searchElement.RegisterSearchBackend(CreateSearchBackend <TestData>(backendType)); searchElement.RegisterSearchQueryHandler <TestData>(q => { Assert.DoesNotThrow(() => { var i = q.Tokens.Count; }); }); searchElement.AddSearchDataProperty(new PropertyPath(nameof(TestData.Name))); searchElement.Search(string.Empty); searchElement.Search(null); searchElement.Search(" "); }
void CreateToolbar() { m_Header = new VisualElement(); Resources.Templates.EntityHierarchyToolbar.Clone(m_Header); var leftSide = m_Header.Q <VisualElement>(className: UssClasses.EntityHierarchyWindow.Toolbar.LeftSide); var rightSide = m_Header.Q <VisualElement>(className: UssClasses.EntityHierarchyWindow.Toolbar.RightSide); leftSide.Add(CreateWorldSelector()); AddSearchIcon(rightSide, UssClasses.DotsEditorCommon.SearchIcon); m_SearchElement = AddSearchElement <EntityHierarchyItem>(m_Header, UssClasses.DotsEditorCommon.SearchFieldContainer); m_SearchElement.RegisterSearchQueryHandler <EntityHierarchyItem>(query => { var result = m_EntityHierarchyQueryBuilder.BuildQuery(query.SearchString); QueryDesc = result.QueryDesc; m_EntityHierarchy.SetFilter(query, result); }); m_SearchElement.AddSearchFilterPopupItem("c", k_FilterComponentType, k_FilterComponentTypeTooltip); m_SearchElement.AddSearchDataProperty(new PropertyPath(nameof(EntityHierarchyItem.m_CachedLowerCaseName))); m_SearchElement.EnableAutoComplete(ComponentTypeAutoComplete.Instance); m_Root.Add(m_Header); }