Commit 3087a8d7 authored by Matthias Betz's avatar Matthias Betz
Browse files

Add PickRegistry mapping picking ids to model objects

parent e03de645
package de.hft.stuttgart.citydoctor2.gui.gl;
import java.util.ArrayList;
import java.util.List;
/** Maps picking ids (1-based) to the model objects they represent. */
public class PickRegistry {
private final List<Object> targets = new ArrayList<>();
/** Registers a target and returns its non-zero picking id. */
public int register(Object target) {
targets.add(target);
return targets.size(); // id = index + 1
}
/** Resolves a picking id to its target, or null for background / unknown id. */
public Object resolve(int id) {
if (id <= 0 || id > targets.size()) {
return null;
}
return targets.get(id - 1);
}
public int size() { return targets.size(); }
}
package de.hft.stuttgart.citydoctor2.gui.gl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import org.junit.Test;
public class PickRegistryTest {
@Test
public void assignsSequentialNonZeroIdsAndResolvesThem() {
PickRegistry reg = new PickRegistry();
Object a = "a";
Object b = "b";
int idA = reg.register(a);
int idB = reg.register(b);
assertEquals(1, idA);
assertEquals(2, idB);
assertEquals(a, reg.resolve(idA));
assertEquals(b, reg.resolve(idB));
}
@Test
public void resolvesBackgroundAndOutOfRangeToNull() {
PickRegistry reg = new PickRegistry();
reg.register("a");
assertNull(reg.resolve(0));
assertNull(reg.resolve(99));
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment