Skip to content

Commit 0b21414

Browse files
committed
Add test for multi-column foreign key gene creation
1 parent b70e865 commit 0b21414

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

core/src/test/kotlin/org/evomaster/core/sql/DbActionGeneBuilderTest.kt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,49 @@ import org.junit.jupiter.api.Assertions.assertEquals
66
import org.junit.jupiter.api.Assertions.assertTrue
77
import org.junit.jupiter.params.ParameterizedTest
88
import 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
912
import java.util.regex.Pattern
1013

1114
class 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

Comments
 (0)