Cleanup 2
This commit is contained in:
parent
a9bb6e0338
commit
3c938749d0
22 changed files with 299 additions and 110 deletions
|
@ -1,5 +1,6 @@
|
|||
package prolog.builtins
|
||||
|
||||
import com.sun.source.tree.EmptyStatementTree
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.api.Disabled
|
||||
|
@ -7,6 +8,7 @@ import org.junit.jupiter.api.Test
|
|||
import prolog.ast.lists.List.Cons
|
||||
import prolog.ast.lists.List.Empty
|
||||
import prolog.ast.terms.Atom
|
||||
import prolog.ast.terms.Term
|
||||
import prolog.ast.terms.Variable
|
||||
|
||||
class ListOperatorsTests {
|
||||
|
@ -70,4 +72,161 @@ class ListOperatorsTests {
|
|||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
assertEquals(atom, result[0].getOrNull()!![variable], "Expected variable to be unified with atom")
|
||||
}
|
||||
|
||||
@Disabled("Not implemented yet")
|
||||
@Test
|
||||
fun `appended empty lists is an empty list`() {
|
||||
val append = Append(Empty, Empty, Empty)
|
||||
|
||||
val result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
assertTrue(result[0].getOrNull()!!.isEmpty(), "Expected empty substitution map")
|
||||
}
|
||||
|
||||
@Disabled("Not implemented yet")
|
||||
@Test
|
||||
fun `appending two empty lists gives an empty list`() {
|
||||
val list1 = Empty
|
||||
val list2 = Empty
|
||||
val list12 = Variable("Result")
|
||||
|
||||
val append = Append(list1, list2, list12)
|
||||
|
||||
val result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
val subs = result[0].getOrNull()!!
|
||||
assertEquals(1, subs.size, "Expected one substitution")
|
||||
assertEquals(Empty, subs[list12], "Expected result to be empty list")
|
||||
}
|
||||
|
||||
@Disabled("Not implemented yet")
|
||||
@Test
|
||||
fun `appending an empty list to another list gives that list`() {
|
||||
val nonempty = Cons(Atom("a"), Empty)
|
||||
|
||||
var append = Append(nonempty, Empty, Empty)
|
||||
var result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
assertTrue(result[0].getOrNull()!!.isEmpty(), "Expected empty substitution map")
|
||||
|
||||
append = Append(Empty, nonempty, Empty)
|
||||
result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
assertTrue(result[0].getOrNull()!!.isEmpty(), "Expected empty substitution map")
|
||||
|
||||
val variable = Variable("List1AndList2")
|
||||
|
||||
append = Append(Empty, nonempty, variable)
|
||||
result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
var subs = result[0].getOrNull()!!
|
||||
assertEquals(1, subs.size, "Expected one substitution")
|
||||
assertEquals(nonempty, subs[variable], "Expected result to be nonempty list")
|
||||
|
||||
append = Append(nonempty, Empty, variable)
|
||||
result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
subs = result[0].getOrNull()!!
|
||||
assertEquals(1, subs.size, "Expected one substitution")
|
||||
}
|
||||
|
||||
@Disabled("Not implemented yet")
|
||||
@Test
|
||||
fun `appending two lists gives combined list`() {
|
||||
val list1 = Cons(Atom("a"), Cons(Atom("b"), Empty))
|
||||
val list2 = Cons(Atom("c"), Cons(Atom("d"), Empty))
|
||||
val list3 = Cons(Atom("a"), Cons(Atom("b"), Cons(Atom("c"), Cons(Atom("d"), Empty))))
|
||||
val list4 = Cons(Atom("c"), Cons(Atom("d"), Cons(Atom("a"), Cons(Atom("b"), Empty))))
|
||||
|
||||
var append = Append(list1, list2, list3)
|
||||
var result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
assertTrue(result[0].getOrNull()!!.isEmpty(), "Expected empty substitution map")
|
||||
|
||||
val variable = Variable("List1AndList2")
|
||||
|
||||
append = Append(list1, list2, variable)
|
||||
result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
var subs = result[0].getOrNull()!!
|
||||
assertEquals(1, subs.size, "Expected one substitution")
|
||||
assertEquals(list3, subs[variable], "Expected result to be combined list")
|
||||
|
||||
append = Append(list2, list1, variable)
|
||||
result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
subs = result[0].getOrNull()!!
|
||||
assertEquals(1, subs.size, "Expected one substitution")
|
||||
assertEquals(list4, subs[variable], "Expected result to be combined list")
|
||||
}
|
||||
|
||||
@Disabled("Not implemented yet")
|
||||
@Test
|
||||
fun `you can find the appended list`() {
|
||||
val list1 = Cons(Atom("a"), Cons(Atom("b"), Empty))
|
||||
val list2: Term = Variable("List2")
|
||||
val list3 = Cons(Atom("a"), Cons(Atom("b"), Cons(Atom("c"), Cons(Atom("d"), Empty))))
|
||||
|
||||
var append = Append(list1, list2, list1)
|
||||
var result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
var subs = result[0].getOrNull()!!
|
||||
assertEquals(1, subs.size, "Expected one substitution")
|
||||
assertEquals(Empty, subs[list2], "Expected result to be empty list")
|
||||
|
||||
append = Append(list1, list2, list3)
|
||||
result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
subs = result[0].getOrNull()!!
|
||||
assertEquals(1, subs.size, "Expected one substitution")
|
||||
assertEquals(Cons(Atom("c"), Cons(Atom("d"), Empty)), subs[list2], "Expected result to be list with c and d")
|
||||
}
|
||||
|
||||
@Disabled("Not implemented yet")
|
||||
@Test
|
||||
fun `you can find the prepended list`() {
|
||||
val list1 = Variable("List1")
|
||||
val list2 = Cons(Atom("c"), Cons(Atom("d"), Empty))
|
||||
val list3 = Cons(Atom("a"), Cons(Atom("b"), Cons(Atom("c"), Cons(Atom("d"), Empty))))
|
||||
|
||||
var append = Append(list1, list2, list2)
|
||||
var result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
var subs = result[0].getOrNull()!!
|
||||
assertEquals(1, subs.size, "Expected one substitution")
|
||||
assertEquals(Empty, subs[list1], "Expected result to be empty list")
|
||||
|
||||
append = Append(list1, list2, list3)
|
||||
result = append.satisfy(emptyMap()).toList()
|
||||
|
||||
assertEquals(1, result.size, "Expected one solution")
|
||||
assertTrue(result[0].isSuccess, "Expected success")
|
||||
subs = result[0].getOrNull()!!
|
||||
assertEquals(1, subs.size, "Expected one substitution")
|
||||
assertEquals(Cons(Atom("a"), Cons(Atom("b"), Empty)), subs[list1], "Expected result to be list with a and b")
|
||||
}
|
||||
}
|
Reference in a new issue