@SuppressWarnings({"unchecked", "rawtypes"})
    public Collection<DataNode> getDataNodes(final String tableName) {
        Collection<DataNode> result = getDataNodesByTableName(tableName);
        if (result.isEmpty()) {
            return result;
        }
        for (Entry<ShardingSphereRule, DataNodeBuilder> entry : dataNodeBuilders.entrySet()) {
            result = entry.getValue().build(result, entry.getKey());
        }
        return result;
    }
@Test
    void assertGetDataNodesForSingleTableWithDataNodeContainedRuleWithoutDataSourceContainedRule() {
        DataNodes dataNodes = new DataNodes(mockDataNodeRules());
        Collection<DataNode> actual = dataNodes.getDataNodes("t_single");
        assertThat(actual.size(), is(1));
        Iterator<DataNode> iterator = actual.iterator();
        DataNode firstDataNode = iterator.next();
        assertThat(firstDataNode.getDataSourceName(), is("readwrite_ds"));
        assertThat(firstDataNode.getTableName(), is("t_single"));
    }