Skip to content

Commit

Permalink
Implement NonHierarchicalDistanceBasedAlgorithm::removeItem
Browse files Browse the repository at this point in the history
  • Loading branch information
hypest committed Jun 8, 2015
1 parent c5d495a commit f49f604
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,13 @@ public void clearItems() {

@Override
public void removeItem(T item) {
// TODO: delegate QuadItem#hashCode and QuadItem#equals to its item.
throw new UnsupportedOperationException("NonHierarchicalDistanceBasedAlgorithm.remove not implemented");
// QuadItem delegates hashcode() and equals() to its item so,
// removing any QuadItem to that item will remove the item
final QuadItem<T> quadItem = new QuadItem<T>(item);
synchronized (mQuadTree) {
mItems.remove(quadItem);
mQuadTree.remove(quadItem);
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/*
* Copyright 2015 Stefanos Togoulidis, all rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.google.maps.android.clustering;

import com.google.android.gms.maps.model.LatLng;
import com.google.maps.android.clustering.algo.NonHierarchicalDistanceBasedAlgorithm;

import junit.framework.TestCase;

public class QuadItemTest extends TestCase {

public class TestingItem implements ClusterItem {
private final LatLng mPosition;

public TestingItem(double lat, double lng) {
mPosition = new LatLng(lat, lng);
}

@Override
public LatLng getPosition() {
return mPosition;
}
}

public void setUp() {
// nothing to setup
}

public void testRemoval() {
TestingItem item_1_5 = new TestingItem(0.1, 0.5);
TestingItem item_2_3 = new TestingItem(0.2, 0.3);

NonHierarchicalDistanceBasedAlgorithm<ClusterItem> algo
= new NonHierarchicalDistanceBasedAlgorithm<ClusterItem>();
algo.addItem(item_1_5);
algo.addItem(item_2_3);

assertEquals(2, algo.getItems().size());

algo.removeItem(item_1_5);

assertEquals(1, algo.getItems().size());

assertFalse(algo.getItems().contains(item_1_5));
assertTrue(algo.getItems().contains(item_2_3));
}
}

0 comments on commit f49f604

Please sign in to comment.