Add removing extra new-sequence tokens

This commit is contained in:
Vasily
2019-05-25 18:49:42 +02:00
committed by username223
parent 2c0f49d8d6
commit bc060bec96
3 changed files with 55 additions and 1 deletions
+34
View File
@@ -223,3 +223,37 @@ std::vector<Token>
return tokens;
}
std::vector<Token>
removeDuplicateNewSequences( const std::vector<Token>& tokens )
{
std::vector<Token> approvedTokens = {};
bool previouslyNewSequenceToken = false;
for ( const auto& token : tokens )
{
if ( token != Token::TOKEN_NEW_SEQUENCE )
{
previouslyNewSequenceToken = false;
}
if ( previouslyNewSequenceToken )
{
continue;
}
if ( token == Token::TOKEN_NEW_SEQUENCE )
{
previouslyNewSequenceToken = true;
}
approvedTokens.push_back( token );
}
return approvedTokens;
}
std::vector<Token> removeIncorrectTokens( const std::vector<Token>& tokens )
{
return removeDuplicateNewSequences( tokens );
}
+3 -1
View File
@@ -88,4 +88,6 @@ enum class Token
MODIFIER_SUPER,
};
std::vector<Token> ParseKeyboardInputsToTokens( std::string inputs ) noexcept;
std::vector<Token>
ParseKeyboardInputsToTokens( const std::string inputs ) noexcept;
std::vector<Token> removeIncorrectTokens( const std::vector<Token>& tokens );
+18
View File
@@ -36,6 +36,8 @@ private slots:
void sixtyfourBackspacesBenchmarked();
void sixtyfourAsBenchmarked();
void removeDuplicateSpaces();
};
const std::string alphabet = "abcdefghijklmnopqrstuvxyz";
@@ -375,6 +377,22 @@ void ParserTest::sixtyfourAsBenchmarked()
}
}
void ParserTest::removeDuplicateSpaces()
{
const auto e = std::vector<Token>( { Token::KEY_a,
Token::TOKEN_NEW_SEQUENCE,
Token::TOKEN_NEW_SEQUENCE,
Token::TOKEN_NEW_SEQUENCE,
Token::TOKEN_NEW_SEQUENCE,
Token::TOKEN_NEW_SEQUENCE,
Token::TOKEN_NEW_SEQUENCE,
Token::KEY_d } );
const auto t = std::vector<Token>(
{ Token::KEY_a, Token::TOKEN_NEW_SEQUENCE, Token::KEY_d } );
QCOMPARE( removeIncorrectTokens( e ), t );
}
QTEST_APPLESS_MAIN( ParserTest )
#include "./release/tst_parsertest.moc"