@Override public ColumnSchema next() { ColumnType type = typeGen.next(); ColumnSchema.Builder builder = ColumnSchema.builder(MYSQL_NAME_GEN.next(), type); switch (type) { case STRING: case BINARY: builder.setMaxLength(lengthGen.next()); break; case LONG: case ULONG: case DOUBLE: builder.setIsAutoIncrement(RAND.nextBoolean()); break; case DECIMAL: int precision = RAND.nextInt(66); int scale = RAND.nextInt(Math.max(31, precision)); builder.setPrecision(precision).setScale(scale); break; default: break; } return builder.build(); } }
@Test(expected = IllegalArgumentException.class) public void testBuildBinaryColumnWithScale() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.BINARY).setScale(0).build(); }
@Test public void testBuildDoubleColumnAsAutoIncrement() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DOUBLE).setIsAutoIncrement(true).build(); }
@Test public void testBuildLongColumnAsAutoIncrement() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.LONG).setIsAutoIncrement(true).build(); }
@Test public void testBuildStringColumnValidMaxLength() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.STRING).setMaxLength(0).build(); }
@Test(expected = IllegalArgumentException.class) public void testBuildStringColumnInvalidMaxLength() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.STRING).setMaxLength(-1).build(); }
@Test public void testBuildValidDecimalColumn() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DECIMAL).setScale(0).setPrecision(0).build(); }
@Test(expected = IllegalArgumentException.class) public void testBuildDecimalColumnInvalidPrecision() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DECIMAL).setScale(0).setPrecision(-1).build(); }
@Test public void testBuildULongColumnAsAutoIncrement() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.ULONG).setIsAutoIncrement(true).build(); }
@Test(expected = IllegalArgumentException.class) public void testBuildBinaryColumnInvalidMaxLength() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.BINARY).setMaxLength(-1).build(); }
@Test(expected = IllegalArgumentException.class) public void testBuildBinaryColumnWithPrecision() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.BINARY).setPrecision(0).build(); }
@Test(expected = IllegalArgumentException.class) public void testBuildDecimalColumnWithMaxLength() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DECIMAL).setScale(0).setPrecision(0).setMaxLength(0).build(); }
/** * Create a {@link ColumnSchema} builder with given column name and type. * * @param columnName * @param type * @return A builder object used for schema creation */ public static Builder builder(String columnName, ColumnType type) { return new Builder(columnName, type); }
@Test public void testBuildBinaryColumnValidMaxLength() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.BINARY).setMaxLength(0).build(); }
@Test public void testHasAutoIncrementColumnNotAutoInc() { final List<ColumnSchema> columns = ImmutableList.<ColumnSchema>of( ColumnSchema.builder(COLUMN_B, ColumnType.LONG).setIsAutoIncrement(false).build()); final TableSchema tableSchema = new TableSchema(columns, ImmutableList.<IndexSchema>of()); Verify.hasAutoIncrementColumn(tableSchema); } }
@Test(expected = IllegalArgumentException.class) public void testBuildDecimalColumnInvalidScale() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DECIMAL).setScale(-1).setPrecision(0).build(); }
@Test public void testIsValidTableSchemaValidSchema() { final List<ColumnSchema> columns = ImmutableList.<ColumnSchema>of( ColumnSchema.builder(COLUMN_B, ColumnType.LONG).setIsAutoIncrement(true).build()); Verify.isValidTableSchema(new TableSchema(columns, ImmutableList.<IndexSchema>of())); }
@Test public void testHasAutoIncrementColumn() { final List<ColumnSchema> columns = ImmutableList.<ColumnSchema>of( ColumnSchema.builder(COLUMN_B, ColumnType.LONG).setIsAutoIncrement(true).build()); final TableSchema tableSchema = new TableSchema(columns, ImmutableList.<IndexSchema>of()); Verify.hasAutoIncrementColumn(tableSchema); }
@Test(expected = IllegalArgumentException.class) public void testBuildDecimalColumnAsAutoIncrement() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DECIMAL).setScale(0).setPrecision(0).setIsNullable(false) .setIsAutoIncrement(true).build(); }