forked from extern/Unexpected-Keyboard
700ec23bd4
Add the ':char' syntax for defining character keys with a different symbol. This new kind of keys is used to implement Ctrl combinations in the Serbian Cyrillic layout without showing latin letters while the Ctrl modifier is activated.
62 lines
2.1 KiB
Java
62 lines
2.1 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 parseStr() 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='':'");
|
|
}
|
|
|
|
@Test
|
|
public void parseChar() throws Exception
|
|
{
|
|
Utils.parse(":char symbol='a':b", KeyValue.makeCharKey('b', "a", 0));
|
|
Utils.parse(":char:b", KeyValue.makeCharKey('b', "b", 0));
|
|
}
|
|
|
|
/** 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) {}
|
|
}
|
|
}
|
|
}
|