/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.ogm.test.util.parser.impl;
import static org.fest.assertions.Assertions.assertThat;
import org.hibernate.ogm.util.parser.impl.LikeExpressionToRegExpConverter;
import org.junit.Test;
/**
* Unit test for {@link LikeExpressionToRegExpConverter}.
*
* @author Gunnar Morling
*/
public class LikeExpressionToRegExpConverterTest {
@Test
public void shouldCreateExpressions() {
LikeExpressionToRegExpConverter converter = new LikeExpressionToRegExpConverter();
assertThat( converter.getRegExpFromLikeExpression( "foo" ).pattern() ).isEqualTo( "^\\Qfoo\\E$" );
assertThat( converter.getRegExpFromLikeExpression( "fo_o%bar" ).pattern() ).isEqualTo( "^\\Qfo\\E.\\Qo\\E.*\\Qbar\\E$" );
assertThat( converter.getRegExpFromLikeExpression( "%foo%" ).pattern() ).isEqualTo( "^.*\\Qfoo\\E.*$" );
assertThat( converter.getRegExpFromLikeExpression( "%foo[]%bar" ).pattern() ).isEqualTo( "^.*\\Qfoo[]\\E.*\\Qbar\\E$" );
}
@Test
public void shouldCreateExpressionsWithEscapeCharacter() {
LikeExpressionToRegExpConverter converter = new LikeExpressionToRegExpConverter( '$' );
assertThat( converter.getRegExpFromLikeExpression( "10$%" ).pattern() ).isEqualTo( "^\\Q10%\\E$" );
assertThat( converter.getRegExpFromLikeExpression( "10$%, 20$%" ).pattern() ).isEqualTo( "^\\Q10%, 20%\\E$" );
assertThat( converter.getRegExpFromLikeExpression( "10$%%20$%" ).pattern() ).isEqualTo( "^\\Q10%\\E.*\\Q20%\\E$" );
assertThat( converter.getRegExpFromLikeExpression( "10$% (in $$)" ).pattern() ).isEqualTo( "^\\Q10% (in $)\\E$" );
}
}