package org.test4j.module.dbfit.utility;
import java.util.HashMap;
import java.util.Map;
import org.test4j.module.dbfit.IDbFit;
import org.test4j.module.dbfit.utility.SymbolUtil;
import org.test4j.testng.Test4J;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@Test(groups = "test4j")
public class SymbolUtilTest extends Test4J implements IDbFit {
@Test
public void testReplacedBySymbols() {
SymbolUtil.setSymbol(new HashMap<String, String>() {
private static final long serialVersionUID = -3309427544195335641L;
{
put("first", "myName");
put("second", "myAddress");
}
});
String text = SymbolUtil.replacedBySymbols("ddd @{first} ddd @{first} dddd@{second}");
want.string(text).isEqualTo("ddd myName ddd myName ddddmyAddress");
}
@Test(expectedExceptions = RuntimeException.class)
public void testValidateSymbol2() {
reflector.invokeStatic(SymbolUtil.class, "validateSymbol", "[", true);
}
@Test(dataProvider = "validateSymbols")
public void testValidateSymbol(String symbol, boolean valid) {
boolean matched = (Boolean) reflector.invokeStatic(SymbolUtil.class, "validateSymbol", symbol, false);
want.bool(matched).isEqualTo(valid);
}
@DataProvider
public Object[][] validateSymbols() {
return new Object[][] { { "[", false },// <br>
{ "adfd[dfdf]", true }, /** <br> **/
{ "adfd", true }, /** <br> **/
{ "[adfd]", false }, /** <br> **/
{ "", false }, /** <br> **/
{ "adfd[dafdas", false }, /** <br> **/
{ "adfd[]", false }, /** <br> **/
{ "[]", false }, /** <br> **/
{ "_dfdf[#$]", false }
/** <br> **/
};
}
@Test(dataProvider = "symbol_values")
public void testGetSymbol(String symbol, Object value, String variable, Object actual) {
SymbolUtil.cleanSymbols();
SymbolUtil.setSymbol(symbol, value);
Object o = SymbolUtil.getSymbol(variable);
want.object(o).isEqualTo(actual);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@DataProvider
public Object[][] symbol_values() {
Map map = new HashMap() {
private static final long serialVersionUID = -4509693391990485039L;
{
put("name", "darui.wu");
}
};
PoJoExample pojo = new PoJoExample("darui.wu", null);
return new Object[][] { { "myName", "darui.wu", "myName", "darui.wu" },// <br>
{ "myName", "darui.wu", "other", null }, /** <br> **/
{ "myMap", map, "myMap[name]", "darui.wu" }, /** <br> **/
{ "myMap", map, "myMap[other]", null }, /** <br> **/
{ "mypojo", pojo, "mypojo[name]", "darui.wu" }, /** <br> **/
{ "mypojo", pojo, "mypojo[code]", null }, /** <br> **/
{ "mypojo", pojo, "mypojo[nothing]", null }
/** <br> **/
};
}
public static class PoJoExample {
String name;
String code;
public PoJoExample(String name, String code) {
this.name = name;
this.code = code;
}
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Test(description = "当存入的变量为primitive类型时,要做相应的类型转换")
public void testReplacedBySymbols_PrimitiveType() {
fit.setSymbols(new HashMap() {
private static final long serialVersionUID = -1102901909374818760L;
{
put("myid", 123434L);
put("double", 3434.334d);
}
});
String text = SymbolUtil.replacedBySymbols("@{myid} @{double}");
want.string(text).isEqualTo("123434 3434.334");
}
@Test(dataProvider = "symboldata")
public void testHasSymbol(String var, boolean isExisted) {
SymbolUtil.cleanSymbols();
SymbolUtil.setSymbol(new HashMap<String, String>() {
private static final long serialVersionUID = 1L;
{
this.put("mykey", "myvalue");
}
});
boolean result = SymbolUtil.hasSymbol(var);
want.bool(result).isEqualTo(isExisted);
}
@DataProvider
public Object[][] symboldata() {
return new Object[][] { { "mykey", true },// <br>
{ "date", true }, // <br>
{ "unexistedvar", false } // <br>
};
}
}