Skip to content
Snippets Groups Projects
Commit 5d16372f authored by Hallvard Trætteberg's avatar Hallvard Trætteberg
Browse files

La til iterator for tags og tester for MetaData og LatLong.

parent 946dd40f
No related branches found
No related tags found
No related merge requests found
Pipeline #51243 passed
...@@ -3,17 +3,40 @@ package simpleex.core; ...@@ -3,17 +3,40 @@ package simpleex.core;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List; import java.util.List;
public class MetaData { public class MetaData {
/**
* Name property name
*/
public final static String NAME_PROPERTY = "name";
/**
* Description property name
*/
public final static String DESCRIPTION_PROPERTY = "description";
private Collection<String> tags; private Collection<String> tags;
private List<String> properties; private List<String> properties;
boolean isEmpty() { /**
* Tells if there are tags and/or properties in this object.
* @return true if there are tags and/or properties in this object, false otherwise
*/
public boolean isEmpty() {
return (tags == null || tags.isEmpty()) && (properties == null || properties.isEmpty()); return (tags == null || tags.isEmpty()) && (properties == null || properties.isEmpty());
} }
/**
* Gets the iterator for the tags.
* @return an iterator for the tags
*/
public Iterator<String> tags() {
return (tags != null ? tags.iterator() : Collections.emptyIterator());
}
/** /**
* Checks if all the provided tags are present. * Checks if all the provided tags are present.
* @param tags the tags to check * @param tags the tags to check
......
...@@ -2,8 +2,9 @@ ...@@ -2,8 +2,9 @@
Domenelaget utgjøres av en samling av geo-lokasjoner representert vha. to klasse: Domenelaget utgjøres av en samling av geo-lokasjoner representert vha. to klasse:
- LatLong - en geo-lokasjon, representert vha. lengde og breddegrad - **LatLong** - en geo-lokasjon, representert vha. lengde og breddegrad
- LatLongs - en samling LatLong-objekter - **LatLongs** - en samling LatLong-objekter
- **MetaData** - tags og properties (nøkkel-verdi-par) som kan knyttes til **LatLong**-objekter
```plantuml ```plantuml
class LatLong { class LatLong {
...@@ -12,4 +13,6 @@ class LatLong { ...@@ -12,4 +13,6 @@ class LatLong {
} }
class LatLongs class LatLongs
LatLongs *--> "*" LatLong: "latLongs" LatLongs *--> "*" LatLong: "latLongs"
class MetaData
LatLong *--> "1" MetaData: "metaData"
``` ```
...@@ -68,4 +68,18 @@ public class LatLongTest { ...@@ -68,4 +68,18 @@ public class LatLongTest {
private void checkDistance(final double d, final double lower, final double upper) { private void checkDistance(final double d, final double lower, final double upper) {
Assert.assertTrue(d + " isn't between " + lower + " and " + upper, d <= upper && d >= lower); Assert.assertTrue(d + " isn't between " + lower + " and " + upper, d <= upper && d >= lower);
} }
@Test
public void testHasGetMetaData() {
final LatLong latLong = new LatLong(63.0, 10.0);
Assert.assertFalse(latLong.hasMetaData());
final MetaData metaData = latLong.getMetaData();
Assert.assertNotNull(metaData);
Assert.assertFalse(latLong.hasMetaData());
metaData.addTags("aTag");
Assert.assertTrue(latLong.hasMetaData());
Assert.assertSame(metaData, latLong.getMetaData());
metaData.removeTags("aTag");
Assert.assertFalse(latLong.hasMetaData());
}
} }
package simpleex.core;
import java.util.Arrays;
import java.util.Iterator;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class MetaDataTest {
private MetaData metaData;
@Before
public void setUp() {
metaData = new MetaData();
}
@Test
public void testHasTags() {
Assert.assertTrue(metaData.hasTags());
Assert.assertFalse(metaData.hasTags("aTag"));
metaData.addTags("aTag", "bTag");
Assert.assertTrue(metaData.hasTags());
Assert.assertTrue(metaData.hasTags("aTag"));
Assert.assertFalse(metaData.hasTags("aTag", "cTag"));
metaData.removeTags("aTag");
Assert.assertTrue(metaData.hasTags());
Assert.assertFalse(metaData.hasTags("aTag"));
Assert.assertTrue(metaData.hasTags("bTag"));
}
// relies on a certain order
private void checkTags(final String... tags) {
final Iterator<String> it1 = Arrays.asList(tags).iterator();
final Iterator<String> it2 = metaData.tags();
while (it1.hasNext() && it2.hasNext()) {
Assert.assertEquals(it1.next(), it2.next());
}
Assert.assertEquals(it1.hasNext(), it2.hasNext());
}
@Test
public void testMetaData() {
Assert.assertTrue(metaData.isEmpty());
checkTags();
}
@Test
public void testSetTags() {
metaData.setTags("aTag", "bTag");
checkTags("aTag", "bTag");
metaData.setTags("cTag", "bTag");
checkTags("cTag", "bTag");
metaData.setTags();
checkTags();
}
@Test
public void testAddRemoveTags() {
metaData.addTags("aTag", "bTag");
checkTags("aTag", "bTag");
metaData.addTags("cTag");
checkTags("aTag", "bTag", "cTag");
metaData.removeTags("bTag");
checkTags("aTag", "cTag");
metaData.removeTags("cTag");
checkTags("aTag");
metaData.removeTags("aTag");
Assert.assertTrue(metaData.isEmpty());
}
@Test
public void testHasProperty() {
Assert.assertFalse(metaData.hasProperty("aProp"));
metaData.setProperty("aProp", "aValue");
Assert.assertTrue(metaData.hasProperty("aProp"));
}
@Test
public void testGetSetProperty() {
metaData.setProperty("aProp", "aValue");
Assert.assertEquals("aValue", metaData.getProperty("aProp"));
metaData.setProperty("bProp", "bValue");
Assert.assertEquals("bValue", metaData.getProperty("bProp"));
metaData.setProperty("aProp", "anotherValue");
Assert.assertEquals("anotherValue", metaData.getProperty("aProp"));
Assert.assertEquals(-1, metaData.getIntegerProperty("iProp", -1));
metaData.setProperty("iProp", "notAnInteger");
Assert.assertEquals(-1, metaData.getIntegerProperty("dProp", -1));
metaData.setIntegerProperty("iProp", 42);
Assert.assertEquals(42, metaData.getIntegerProperty("iProp", -1));
Assert.assertEquals(-1.0, metaData.getDoubleProperty("dProp", -1.0), 0.0);
metaData.setProperty("dProp", "notADouble");
Assert.assertEquals(-1.0, metaData.getDoubleProperty("dProp", -1.0), 0.0);
metaData.setDoubleProperty("dProp", 42.0);
Assert.assertEquals(42.0, metaData.getDoubleProperty("dProp", -1.0), 0.0);
Assert.assertEquals(false, metaData.getBooleanProperty("bProp", false));
metaData.setProperty("bProp", "notABoolean");
Assert.assertEquals(false, metaData.getBooleanProperty("bProp", true));
metaData.setBooleanProperty("bProp", true);
Assert.assertEquals(true, metaData.getBooleanProperty("bProp", false));
}
@Test
public void testSetRemoveProperty() {
metaData.setProperty("aProp", "aValue");
Assert.assertTrue(metaData.hasProperty("aProp"));
metaData.removeProperty("aProp");
Assert.assertFalse(metaData.hasProperty("aProp"));
Assert.assertTrue(metaData.isEmpty());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment