@@ -6,10 +6,49 @@ import org.junit.jupiter.api.Assertions.assertEquals
66import org.junit.jupiter.api.Assertions.assertTrue
77import org.junit.jupiter.params.ParameterizedTest
88import org.junit.jupiter.params.provider.EnumSource
9+ import org.evomaster.core.search.gene.sql.SqlForeignKeyGene
10+ import org.evomaster.core.sql.schema.*
11+ import org.junit.jupiter.api.Test
912import java.util.regex.Pattern
1013
1114class DbActionGeneBuilderTest {
1215
16+ @Test
17+ fun testMultiColumnForeignKey () {
18+ val foreignKeyColumn1 = Column (" fkCol1" , ColumnDataType .INTEGER , databaseType = DatabaseType .H2 )
19+ val foreignKeyColumn2 = Column (" fkCol2" , ColumnDataType .INTEGER , databaseType = DatabaseType .H2 )
20+
21+ val targetColumn1 = Column (" targetColumn1" , ColumnDataType .INTEGER , databaseType = DatabaseType .H2 )
22+ val targetColumn2 = Column (" targetColumn2" , ColumnDataType .INTEGER , databaseType = DatabaseType .H2 )
23+
24+ val targetTableId = TableId (" target_table" )
25+
26+ val fk = ForeignKey (
27+ sourceColumns = listOf (foreignKeyColumn1, foreignKeyColumn2),
28+ targetTableId = targetTableId,
29+ targetColumns = listOf (targetColumn1, targetColumn2)
30+ )
31+
32+ val table = Table (
33+ id = TableId (" source_table" ),
34+ columns = setOf (foreignKeyColumn1, foreignKeyColumn2),
35+ foreignKeys = setOf (fk)
36+ )
37+
38+ val builder = SqlActionGeneBuilder ()
39+
40+ val gene1 = builder.buildGene(1L , table, foreignKeyColumn1) as SqlForeignKeyGene
41+ val gene2 = builder.buildGene(1L , table, foreignKeyColumn2) as SqlForeignKeyGene
42+
43+ assertEquals(" fkCol1" ,gene1.name)
44+ assertEquals(targetTableId, gene1.targetTable)
45+ assertEquals(" targetColumn1" , gene1.targetColumn)
46+
47+ assertEquals(" fkCol2" ,gene2.name)
48+ assertEquals(targetTableId, gene2.targetTable)
49+ assertEquals(" targetColumn2" , gene2.targetColumn)
50+ }
51+
1352 @ParameterizedTest
1453 @EnumSource(value = DatabaseType ::class , names = [" H2" , " MYSQL" , " POSTGRES" ])
1554 fun testSimilarToBuilder (databaseType : DatabaseType ) {
0 commit comments