/// <summary> /// Removes and disposes of the contents of the cachedContentTree. /// </summary> private void CleanUpCachedContentTree() { if (cachedContentTree.Any()) { foreach (var rangeValuePair in cachedContentTree) { cachedContentTree.Remove(rangeValuePair.Value); rangeValuePair.Value.Dispose(); } } totalContentLength = 0; }
public void QueryEmptyTree_RemoveAllElementsFromTree_ExpectNoException() { // Arrang var standardItemComparer = new RangeItemComparer(); var rangeTree = new RangeTree <int, RangeItem>(standardItemComparer); var item = new RangeItem(1, 3); rangeTree.Add(item); rangeTree.Remove(item); // Act & Assert Assert.That(() => rangeTree.Query(2), Throws.Nothing); }
public void AddUser(Guid uid, double lon, double lat) { var lonLat = S2LatLng.FromDegrees(lat, lon); var cellId = S2CellId.FromLatLng(lonLat); var cellIdStorageLevel = cellId.ParentForLevel(_level); //var userList = new UserList { s2CellId = cellIdStorageLevel, list = new List<Guid>() }; var query_res = rtree.Query(cellIdStorageLevel); _currentUsersLocations[uid] = cellIdStorageLevel; SimpleRangeItem rangeItem = null; if (query_res.Count > 0) { var users = new List <Guid>(); foreach (var item in query_res) { users.AddRange(item.Content); } rangeItem = new SimpleRangeItem { Range = new Range <S2CellId>(cellIdStorageLevel), Content = users }; rtree.Remove(query_res[0]); } if (rangeItem == null) { rangeItem = new SimpleRangeItem { Range = new Range <S2CellId>(cellIdStorageLevel), Content = new List <Guid> () }; } rangeItem.Content.Add(uid); rtree.Add(rangeItem); }