forked from extern/Unexpected-Keyboard
9f22e53a3b
This allows to add new kinds of keys that need more data without making KeyValue's footprint bigger for common keys. This changes the [_symbol] field into [_payload], which holds the same as the previous field for more common keys but can hold bigger objects for keys of the new "Complex" kind. This also adds a complex key: String keys with a symbol different than the outputted string. Unit tests are added as the Java language is not helpful in making robust code.
55 lines
1.9 KiB
Java
55 lines
1.9 KiB
Java
package juloo.keyboard2;
|
|
|
|
import juloo.keyboard2.KeyValue;
|
|
import juloo.keyboard2.KeyValueParser;
|
|
import org.junit.Test;
|
|
import static org.junit.Assert.*;
|
|
|
|
public class KeyValueParserTest
|
|
{
|
|
public KeyValueParserTest() {}
|
|
|
|
@Test
|
|
public void parse() throws Exception
|
|
{
|
|
Utils.parse(":str:'Foo'", KeyValue.makeStringKey("Foo"));
|
|
Utils.parse(":str flags='dim':'Foo'", KeyValue.makeStringKey("Foo", KeyValue.FLAG_SECONDARY));
|
|
Utils.parse(":str symbol='Symbol':'Foo'", KeyValue.makeStringKeyWithSymbol("Foo", "Symbol", 0));
|
|
Utils.parse(":str symbol='Symbol' flags='dim':'Foo'", KeyValue.makeStringKeyWithSymbol("Foo", "Symbol", KeyValue.FLAG_SECONDARY));
|
|
Utils.parse(":str flags='dim,small':'Foo'", KeyValue.makeStringKey("Foo", KeyValue.FLAG_SECONDARY | KeyValue.FLAG_SMALLER_FONT));
|
|
Utils.parse(":str flags=',,':'Foo'", KeyValue.makeStringKey("Foo")); // Unintentional
|
|
Utils.expect_error(":unknown:Foo"); // Unknown kind
|
|
Utils.expect_error(":str:Foo"); // Unquoted string
|
|
Utils.expect_error(":str flags:'Foo'"); // Malformed flags
|
|
Utils.expect_error(":str flags=dim:'Foo'"); // Unquoted flags
|
|
Utils.expect_error(":str unknown='foo':'Foo'"); // Unknown flags
|
|
// Unterminated
|
|
Utils.expect_error(":str");
|
|
Utils.expect_error(":str ");
|
|
Utils.expect_error(":str flags");
|
|
Utils.expect_error(":str flags=");
|
|
Utils.expect_error(":str flags='");
|
|
Utils.expect_error(":str flags='' ");
|
|
Utils.expect_error(":str flags='':");
|
|
Utils.expect_error(":str flags='':'");
|
|
}
|
|
|
|
/** JUnit removes these functions from stacktraces. */
|
|
static class Utils
|
|
{
|
|
static void parse(String key_descr, KeyValue ref) throws Exception
|
|
{
|
|
assertEquals(ref, KeyValueParser.parse(key_descr));
|
|
}
|
|
|
|
static void expect_error(String key_descr)
|
|
{
|
|
try
|
|
{
|
|
fail("Expected failure but got " + KeyValueParser.parse(key_descr));
|
|
}
|
|
catch (KeyValueParser.ParseError e) {}
|
|
}
|
|
}
|
|
}
|