Be more strict about what constitutes a valid NamespacedKey

* Brings us largely in line with what is supported by the implementation
* Adds unit tests

By: md_5 <git@md-5.net>
This commit is contained in:
Bukkit/Spigot
2018-07-10 12:21:23 +10:00
parent 5e26ef2298
commit 536017764d
2 changed files with 66 additions and 6 deletions

View File

@@ -0,0 +1,49 @@
package org.bukkit;
import org.junit.Assert;
import org.junit.Test;
public class NamespacedKeyTest {
@Test
public void testValid() {
Assert.assertEquals("minecraft:foo", new NamespacedKey("minecraft", "foo").toString());
Assert.assertEquals("minecraft:foo/bar", new NamespacedKey("minecraft", "foo/bar").toString());
Assert.assertEquals("minecraft:foo/bar_baz", new NamespacedKey("minecraft", "foo/bar_baz").toString());
Assert.assertEquals("minecraft:foo/bar_baz-qux", new NamespacedKey("minecraft", "foo/bar_baz-qux").toString());
Assert.assertEquals("minecraft:foo/bar_baz-qux.quux", new NamespacedKey("minecraft", "foo/bar_baz-qux.quux").toString());
}
@Test(expected = IllegalArgumentException.class)
public void testEmptyNamespace() {
new NamespacedKey("", "foo").toString();
}
@Test(expected = IllegalArgumentException.class)
public void testEmptyKey() {
new NamespacedKey("minecraft", "").toString();
}
@Test(expected = IllegalArgumentException.class)
public void testInvalidNamespace() {
new NamespacedKey("minecraft/test", "foo").toString();
}
@Test(expected = IllegalArgumentException.class)
public void testInvalidKey() {
new NamespacedKey("minecraft", "foo!").toString();
}
@Test
public void testBelowLength() {
new NamespacedKey("loremipsumdolorsitametconsecteturadipiscingelitduisvolutpatvelitsitametmaximusscelerisquemorbiullamcorperexacconsequategestas",
"loremipsumdolorsitametconsecteturadipiscingelitduisvolutpatvelitsitametmaximusscelerisquemorbiullamcorperexacconsequategestas").toString();
}
@Test(expected = IllegalArgumentException.class)
public void testAboveLength() {
new NamespacedKey("loremipsumdolorsitametconsecteturadipiscingelitduisvolutpatvelitsitametmaximusscelerisquemorbiullamcorperexacconsequategestas",
"loremipsumdolorsitametconsecteturadipiscingelitduisvolutpatvelitsitametmaximusscelerisquemorbiullamcorperexacconsequategestas/"
+ "loremipsumdolorsitametconsecteturadipiscingelitduisvolutpatvelitsitametmaximusscelerisquemorbiullamcorperexacconsequategestas").toString();
}
}