Skip to content
Snippets Groups Projects
Commit 6f16b7cf authored by npedot's avatar npedot
Browse files

adds powerset test

parent 5c0186ca
No related branches found
No related tags found
No related merge requests found
......@@ -82,13 +82,13 @@ class Schema () {
companion object {
fun <T> reducedPowerSet(originalSet: Set<T>): Set<Set<T>> {
private fun <T> reducedPowerSet(originalSet: Set<T>): Set<Set<T>> {
var result = powerSet(originalSet)
result = result.minus(HashSet<T>()) as Set<Set<T>>
return result
}
private fun <T> powerSet(originalSet: Set<T>): Set<Set<T>> {
fun <T> powerSet(originalSet: Set<T>): Set<Set<T>> {
val sets = HashSet<Set<T>>()
if (originalSet.isEmpty()) {
sets.add(HashSet<T>())
......@@ -107,7 +107,6 @@ class Schema () {
return sets
}
fun superkeys(attrs: Set<Column>, fds:Set<Constraint>): Set<Set<Column>> {
val keys = HashSet<Set<Column>>()
val powerset = reducedPowerSet(attrs)
......
......@@ -82,4 +82,27 @@ class SchemaTest {
val setB = Constraint.set("A-->C,D; E-->A,H")
assertTrue(Schema.equivalent(setA,setB))
}
@Test
fun test_powerset() {
// given
val attrs = Column.set("A,B,C")
val notin = Column.set("D,E")
val fds = Constraint.set("A-->B,C;C,D-->E;E-->A;B-->D")
// when
val powerSet = Schema.powerSet(attrs)
// then
val map = HashMap<Set<Column>,Set<Column>>()
for (sa in powerSet) {
map.put(sa,Schema.closure(sa,fds))
}
for (k in map.keys) {
var v = map.get(k)
if (v!=null) {
v = v.minus(notin)
println(" $k = $v ")
}
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment