@Test
public void test02() {

    List<String> expectedResult = new ArrayList();
    expectedResult.add("db_00.user_0000");
    expectedResult.add("db_01.user_0001");
    expectedResult.add("db_02.user_0002");
    expectedResult.add("db_03.user_0003");
    expectedResult.add("db_00.user_0004");
    expectedResult.add("db_01.user_0005");
    expectedResult.add("db_02.user_0006");
    expectedResult.add("db_03.user_0007");
    expectedResult.add("db_00.user_0008");
    expectedResult.add("db_01.user_0009");
    expectedResult.add("db_02.user_0010");
    expectedResult.add("db_03.user_0011");
    expectedResult.add("db_00.user_0012");
    expectedResult.add("db_01.user_0013");
    expectedResult.add("db_02.user_0014");
    expectedResult.add("db_03.user_0015");
    List<SimpleShardRouteRuleBinding> bindings = new ArrayList<SimpleShardRouteRuleBinding>();
    SpelShardRouteRule numRule = new SpelShardRouteRule("{scName}_{format('%02d', sdValue % 4)}",
                                                        "{tbName}_{format('%04d', sdValue % 16)}");
    SimpleShardRouteRuleBinding user = new SimpleShardRouteRuleBinding();
    user.setScName("db");
    user.setTbName("user");
    user.setSdKey("id");
    user.setSdValues("[0..15]");
    user.setRule(numRule);
    bindings.add(user);
    SimpleShardRouter shardRouter = new SimpleShardRouter(bindings);
    List<ShardRouteInfo> routeInfos = shardRouter.getRouteInfos("db", "user");
    int count = 0;
    for (ShardRouteInfo si : routeInfos) {
        Assert.equals(si.toString(), expectedResult.get(count));
        count++;
    }
}