package org.araqne.logdb.query.expr;
import static org.junit.Assert.assertEquals;
import java.util.HashMap;
import java.util.Map;
import org.araqne.logdb.FunctionRegistry;
import org.araqne.logdb.Row;
import org.araqne.logdb.impl.FunctionRegistryImpl;
import org.araqne.logdb.query.parser.ExpressionParser;
import org.junit.Test;
public class StringReplaceTest {
@Test
public void test() {
assertEquals("cbccb", parseExpr("replace(\"abaab\", \"a\", \"c\")").eval(null));
assertEquals("abaab", parseExpr("replace(\"abaab\", \"d\", \"c\")").eval(null));
assertEquals("ab!aab", parseExpr("replace(\"abdaab\", \"d\", \"!\")").eval(null));
}
@Test
public void rexTest() {
assertEquals("abaab", parseExpr("replace(\"abaab\", \"d\", \"c\", \"re\")").eval(null));
assertEquals("ab!aab", parseExpr("replace(\"abdaab\", \"d\", \"!\", \"re\")").eval(null));
assertEquals("cbaab", parseExpr("replace(\"abaab\", \"^a\", \"c\", \"re\")").eval(null));
assertEquals(
"2 5 $1 hahaha 12 15 $1",
parseExpr(
"replace(\"A:2 B:3 C:5 hahaha A:12 B:13 C:15\", \"A:(\\\\d+) B:\\\\d+ C:(\\\\d+)\", \"$1 $2 \\\\$1\", \"re\")")
.eval(null));
}
@Test
public void testIssue866() {
Map<String, Object> m = new HashMap<String, Object>();
m.put("line", "hello\rworld");
Row row = new Row(m);
String text = "replace(line, \"\\r\", \"^^\")";
StringReplace expr = (StringReplace) parseExpr(text);
assertEquals("hello^^world", expr.eval(row));
}
private FunctionRegistry funcRegistry = new FunctionRegistryImpl();
private Expression parseExpr(String expr) {
return ExpressionParser.parse(null, expr, funcRegistry);
}
}