@@ -1333,7 +1333,7 @@ mod test {
13331333
13341334 #[ test]
13351335 fn sequences ( ) {
1336- static LAYERS : Layers < 5 , 1 , 1 > = [ [ [
1336+ static LAYERS : Layers < 6 , 1 , 1 > = [ [ [
13371337 Sequence (
13381338 // Simple Ctrl-C sequence/macro
13391339 & [
@@ -1419,6 +1419,14 @@ mod test {
14191419 ]
14201420 . as_slice ( ) ,
14211421 ) ,
1422+ Sequence (
1423+ & [
1424+ SequenceEvent :: Tap ( X ) ,
1425+ SequenceEvent :: Tap ( Y ) ,
1426+ SequenceEvent :: Tap ( Z ) ,
1427+ ]
1428+ . as_slice ( ) ,
1429+ ) ,
14221430 ] ] ] ;
14231431 let mut layout = Layout :: new ( & LAYERS ) ;
14241432 // Test a basic sequence
@@ -1583,5 +1591,32 @@ mod test {
15831591 layout. event ( Release ( 0 , 4 ) ) ;
15841592 assert_eq ! ( CustomEvent :: NoEvent , layout. tick( ) ) ;
15851593 assert_keys ( & [ ] , layout. keycodes ( ) ) ;
1594+
1595+ // Test two sequences
1596+ assert_eq ! ( CustomEvent :: NoEvent , layout. tick( ) ) ;
1597+ assert_keys ( & [ ] , layout. keycodes ( ) ) ;
1598+ layout. event ( Press ( 0 , 5 ) ) ;
1599+ assert_eq ! ( CustomEvent :: NoEvent , layout. tick( ) ) ; // Sequence detected & added
1600+ assert_keys ( & [ ] , layout. keycodes ( ) ) ;
1601+ layout. event ( Press ( 0 , 4 ) ) ;
1602+ assert_eq ! ( CustomEvent :: NoEvent , layout. tick( ) ) ; // Tap(X)
1603+ assert_keys ( & [ X ] , layout. keycodes ( ) ) ;
1604+ layout. event ( Release ( 0 , 5 ) ) ;
1605+ assert_eq ! ( CustomEvent :: NoEvent , layout. tick( ) ) ; // Release(X), Tap(Q)
1606+ assert_keys ( & [ Q ] , layout. keycodes ( ) ) ;
1607+ layout. event ( Release ( 0 , 4 ) ) ;
1608+ assert_eq ! ( CustomEvent :: NoEvent , layout. tick( ) ) ; // Tap(Y), Release(Q)
1609+ assert_keys ( & [ Y ] , layout. keycodes ( ) ) ;
1610+ assert_eq ! ( CustomEvent :: NoEvent , layout. tick( ) ) ; // Release(Y), Press(W)
1611+ assert_keys ( & [ W ] , layout. keycodes ( ) ) ;
1612+ assert_eq ! ( CustomEvent :: NoEvent , layout. tick( ) ) ; // Press(Z), Release(W)
1613+ assert_keys ( & [ Z ] , layout. keycodes ( ) ) ;
1614+ assert_eq ! ( CustomEvent :: NoEvent , layout. tick( ) ) ; // Release(Z), Press(E)
1615+ assert_keys ( & [ E ] , layout. keycodes ( ) ) ;
1616+ assert_eq ! ( CustomEvent :: NoEvent , layout. tick( ) ) ; // Release(E)
1617+ assert_keys ( & [ ] , layout. keycodes ( ) ) ;
1618+ assert_eq ! ( CustomEvent :: NoEvent , layout. tick( ) ) ; // Sequence is
1619+ // finished
1620+ assert_keys ( & [ ] , layout. keycodes ( ) ) ;
15861621 }
15871622}
0 commit comments