### Question:
ChangeSet implements Conditional { public CheckSum generateCheckSum() { StringBuffer stringToMD5 = new StringBuffer(); for (Change change : getChanges()) { stringToMD5.append(change.generateCheckSum()).append(":"); } for (SqlVisitor visitor : this.getSqlVisitors()) { stringToMD5.append(visitor.generateCheckSum()).append(";"); } return CheckSum.compute(stringToMD5.toString()); } ChangeSet(String id, String author, boolean alwaysRun, boolean runOnChange, String filePath, String contextList, String dbmsList);  ChangeSet(String id, String author, boolean alwaysRun, boolean runOnChange, String filePath, String contextList, String dbmsList, boolean runInTransaction); boolean shouldAlwaysRun(); boolean shouldRunOnChange(); String getFilePath(); CheckSum generateCheckSum(); ExecType execute(DatabaseChangeLog databaseChangeLog, Database database); void rollback(Database database); List<Change> getChanges(); void addChange(Change change); String getId(); String getAuthor(); Set<String> getContexts(); Set<String> getDbmsSet(); String toString(boolean includeMD5Sum); @Override String toString(); String getComments(); void setComments(String comments); boolean isAlwaysRun(); boolean isRunOnChange(); boolean isRunInTransaction(); Change[] getRollBackChanges(); void addRollBackSQL(String sql); void addRollbackChange(Change change); boolean supportsRollback(Database database); String getDescription(); Boolean getFailOnError(); void setFailOnError(Boolean failOnError); ValidationFailOption getOnValidationFail(); void setOnValidationFail(ValidationFailOption onValidationFail); void setValidationFailed(boolean validationFailed); void addValidCheckSum(String text); boolean isCheckSumValid(CheckSum storedCheckSum); PreconditionContainer getPreconditions(); void setPreconditions(PreconditionContainer preconditionContainer); void addSqlVisitor(SqlVisitor sqlVisitor); List<SqlVisitor> getSqlVisitors();  }### Answer:
@Test public void generateCheckSum() { ChangeSet changeSet1 = new ChangeSet("testId", "testAuthor", false, false,null, null, null); ChangeSet changeSet2 = new ChangeSet("testId", "testAuthor", false, false,null, null, null); AddDefaultValueChange change = new AddDefaultValueChange(); change.setSchemaName("SCHEMA_NAME"); change.setTableName("TABLE_NAME"); change.setColumnName("COLUMN_NAME"); change.setDefaultValue("DEF STRING"); change.setDefaultValueNumeric("42"); change.setDefaultValueBoolean(true); change.setDefaultValueDate("2007-01-02"); changeSet1.addChange(change); changeSet2.addChange(change); CheckSum md5Sum1 = changeSet1.generateCheckSum(); change.setSchemaName("SCHEMA_NAME2"); CheckSum md5Sum2 = changeSet2.generateCheckSum(); assertFalse(md5Sum1.equals(md5Sum2)); }