### Question:
QueryBuilderArgs implements Serializable { public static QueryBuilderArgs create(final String tableName) { checkArgument(tableName != null, "TableName cannot be null"); checkArgument(checkTableName(tableName), "'table' must follow [a-zA-Z_][a-zA-Z0-9_]*"); return createBuilder().setBaseSqlQuery(QueryBuilder.fromTablename(tableName)).build(); }  abstract Optional<Long> limit(); abstract Optional<String> partitionColumn(); abstract Optional<Instant> partition(); abstract TemporalAmount partitionPeriod(); abstract Optional<String> splitColumn(); abstract Optional<Integer> queryParallelism(); abstract Builder builder(); static QueryBuilderArgs create(final String tableName); static QueryBuilderArgs createFromQuery(final String sqlQuery); String sqlQueryWithLimitOne(); List<String> buildQueries(final Connection connection);  }### Answer:
@Test(expected = IllegalArgumentException.class) public void shouldFailOnNullTableName() { QueryBuilderArgs.create(null); }
@Test(expected = IllegalArgumentException.class) public void shouldFailOnInvalidTableName() { QueryBuilderArgs.create("*invalid#name@!"); }
@Test(expected = IllegalArgumentException.class) public void shouldFailOnTableNameWithDots() { QueryBuilderArgs.create("foo.bar"); }