@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 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(expected = IllegalArgumentException.class) public void testBuildDecimalColumnInvalidScale() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DECIMAL).setScale(-1).setPrecision(0).build(); }
@Test(expected = IllegalArgumentException.class) public void testBuildDecimalColumnWithMaxLength() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DECIMAL).setScale(0).setPrecision(0).setMaxLength(0).build(); }
@Test(expected = IllegalArgumentException.class) public void testBuildDecimalColumnAsAutoIncrement() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DECIMAL).setScale(0).setPrecision(0).setIsNullable(false) .setIsAutoIncrement(true).build(); }