Add removing extra new-sequence tokens
This commit is contained in:
@@ -223,3 +223,37 @@ std::vector<Token>
|
|||||||
|
|
||||||
return tokens;
|
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 );
|
||||||
|
}
|
||||||
|
|||||||
@@ -88,4 +88,6 @@ enum class Token
|
|||||||
MODIFIER_SUPER,
|
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 );
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ private slots:
|
|||||||
void sixtyfourBackspacesBenchmarked();
|
void sixtyfourBackspacesBenchmarked();
|
||||||
|
|
||||||
void sixtyfourAsBenchmarked();
|
void sixtyfourAsBenchmarked();
|
||||||
|
|
||||||
|
void removeDuplicateSpaces();
|
||||||
};
|
};
|
||||||
|
|
||||||
const std::string alphabet = "abcdefghijklmnopqrstuvxyz";
|
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 )
|
QTEST_APPLESS_MAIN( ParserTest )
|
||||||
|
|
||||||
#include "./release/tst_parsertest.moc"
|
#include "./release/tst_parsertest.moc"
|
||||||
|
|||||||
Reference in New Issue
Block a user