mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2025-06-20 09:47:46 +02:00
test: Add ComposeKeyTest
This commit is contained in:
parent
56c62a005d
commit
e8c20bf521
63
test/juloo.keyboard2/ComposeKeyTest.java
Normal file
63
test/juloo.keyboard2/ComposeKeyTest.java
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
package juloo.keyboard2;
|
||||||
|
|
||||||
|
import juloo.keyboard2.ComposeKey;
|
||||||
|
import juloo.keyboard2.ComposeKeyData;
|
||||||
|
import juloo.keyboard2.KeyValue;
|
||||||
|
import org.junit.Test;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class ComposeKeyTest
|
||||||
|
{
|
||||||
|
public ComposeKeyTest() {}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void composeEquals() throws Exception
|
||||||
|
{
|
||||||
|
// From Compose.pre
|
||||||
|
assertEquals(apply("'e"), KeyValue.makeStringKey("é"));
|
||||||
|
assertEquals(apply("e'"), KeyValue.makeStringKey("é"));
|
||||||
|
// From extra.json
|
||||||
|
assertEquals(apply("Vc"), KeyValue.makeStringKey("Č"));
|
||||||
|
assertEquals(apply("\\n"), KeyValue.getKeyByName("\\n"));
|
||||||
|
// From arabic.json
|
||||||
|
assertEquals(apply("اا"), KeyValue.getKeyByName("combining_alef_above"));
|
||||||
|
assertEquals(apply("ل۷"), KeyValue.makeStringKey("ڵ"));
|
||||||
|
assertEquals(apply("۷ل"), KeyValue.makeStringKey("ڵ"));
|
||||||
|
// From cyrillic.json
|
||||||
|
assertEquals(apply(",г"), KeyValue.makeStringKey("ӻ"));
|
||||||
|
assertEquals(apply("г,"), KeyValue.makeStringKey("ӻ"));
|
||||||
|
assertEquals(apply("ач"), KeyValue.getKeyByName("combining_aigu"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void fnEquals() throws Exception
|
||||||
|
{
|
||||||
|
int state = ComposeKeyData.fn;
|
||||||
|
assertEquals(apply("<", state), KeyValue.makeStringKey("«"));
|
||||||
|
assertEquals(apply("{", state), KeyValue.makeStringKey("‹"));
|
||||||
|
// Named key
|
||||||
|
assertEquals(apply("1", state), KeyValue.getKeyByName("f1"));
|
||||||
|
assertEquals(apply(" ", state), KeyValue.getKeyByName("nbsp"));
|
||||||
|
// Named 1-char key
|
||||||
|
assertEquals(apply("ய", state), KeyValue.makeStringKey("௰", KeyValue.FLAG_SMALLER_FONT));
|
||||||
|
}
|
||||||
|
|
||||||
|
KeyValue apply(String seq) throws Exception
|
||||||
|
{
|
||||||
|
return apply(seq, ComposeKeyData.compose);
|
||||||
|
}
|
||||||
|
|
||||||
|
KeyValue apply(String seq, int state) throws Exception
|
||||||
|
{
|
||||||
|
KeyValue r = null;
|
||||||
|
for (int i = 0; i < seq.length(); i++)
|
||||||
|
{
|
||||||
|
r = ComposeKey.apply(state, seq.charAt(i));
|
||||||
|
if (r.getKind() == KeyValue.Kind.Compose_pending)
|
||||||
|
state = r.getPendingCompose();
|
||||||
|
else if (i + 1 < seq.length())
|
||||||
|
throw new Exception("Sequence too long: " + seq);
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user