Rev 1548 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/*
* Copyright (C) 2008 Steve Ratcliffe
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*
* Author: Steve Ratcliffe
* Create date: 09-Dec-2008
*/
package uk.me.parabola.mkgmap.reader.osm;
import java.util.Arrays;
import java.util.Iterator;
import static org.junit.Assert.*;
import org.junit.Test;
public class TagsTest
{
private static final String[][] SMALL_SET =
{
{"highway",
"primary"},
{"a",
"1"},
{"b",
"2"},
{"c",
"3"},
{"d",
"4"},
};
private static final String[][] LARGE_SET =
{
{"jl1",
"99"},
{"jl2",
"99"},
{"jl3",
"99"},
{"jl4",
"99"},
{"kl1",
"99"},
{"kl2",
"99"},
{"kl3",
"99"},
{"kl4",
"99"},
{"ll1",
"99"},
{"ll2",
"99"},
{"ll3",
"99"},
{"ll4",
"99"},
{"ml1",
"99"},
{"ml2",
"99"},
{"ml3",
"99"},
{"ml4",
"99"},
{"nl1",
"99"},
{"nl2",
"99"},
{"nl3",
"99"},
{"nl4",
"99"},
{"jL1",
"99"},
{"jL2",
"99"},
{"jL3",
"99"},
{"jL4",
"99"},
{"kL1",
"99"},
{"kL2",
"99"},
{"kL3",
"99"},
{"kL4",
"99"},
{"LL1",
"99"},
{"LL2",
"99"},
{"LL3",
"99"},
{"LL4",
"99"},
{"mL1",
"99"},
{"mL2",
"99"},
{"mL3",
"99"},
{"mL4",
"99"},
{"nL1",
"99"},
{"nL2",
"99"},
{"nL3",
"99"},
{"nL4",
"99"},
};
/**
* Not needing a resize.
*/
@Test
public void testSmallSet
() {
Tags tags = smallSetTags
();
for (String[] ss : SMALL_SET
) {
assertEquals
(ss
[1], tags.
get(ss
[0]));
}
}
/**
* Larger than the initial size, and so will need to be resized.
*/
@Test
public void testLargeSet
() {
Tags tags =
new Tags
();
for (String[] ss : LARGE_SET
) {
tags.
put(ss
[0], ss
[1]);
}
for (String[] ss : LARGE_SET
) {
assertEquals
(ss
[1], tags.
get(ss
[0]));
}
}
/**
* Test removing tags.
*/
@Test
public void testRemove
() {
Tags tags =
new Tags
();
for (String[] ss : LARGE_SET
)
tags.
put(ss
[0], ss
[1]);
for (String[] ss : SMALL_SET
)
tags.
put(ss
[0], ss
[1]);
String[] toRemove =
{"highway",
"jl1",
"d",
"ml3",
"nl1",
"nL4",
"kl2",
"kl3",
"kl4",
"kl5"};
for (String s : toRemove
)
tags.
remove(s
);
for (String[] ss : LARGE_SET
) {
if (Arrays.
asList(toRemove
).
contains(ss
[0]))
assertNull
(tags.
get(ss
[0]));
else
assertEquals
("find for key " + ss
[0], ss
[1], tags.
get(ss
[0]));
}
}
/**
* Create tags initialised with SMALL_SET.
*/
private Tags smallSetTags
() {
Tags tags =
new Tags
();
for (String[] ts : SMALL_SET
)
tags.
put(ts
[0], ts
[1]);
return tags
;
}
/**
* Create an iterator over the tags. This must be initialised to the
* values in SMALL_SET.
* @param tags The tags containing values from SMALL_SET.
* @return An iterator that has iterated over all the tags in set.
*/
private Iterator<String> iterateOverTags
(Tags tags
) {
Iterator<String> it = tags.
iterator();
int n = SMALL_SET.
length * 2;
for (int i =
0; i
< n
; i++
) {
assertTrue
(it.
hasNext());
assertNotNull
("result should be non null", it.
next());
}
return it
;
}
}