This commit is contained in:
Tibo De Peuter 2025-05-06 11:19:05 +02:00
parent 6b46965435
commit 256a189125
Signed by: tdpeuter
GPG key ID: 38297DE43F75FFE2
4 changed files with 70 additions and 4 deletions

View file

@ -0,0 +1,42 @@
package prolog.logic
import org.junit.jupiter.api.Assertions.assertFalse
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
import prolog.ast.terms.Atom
import prolog.ast.terms.Structure
/**
* Based on [Predicates for analyzing/constructing terms](https://github.com/dtonhofer/prolog_notes/blob/master/swipl_notes/about_term_analysis_and_construction/term_analysis_construction.png)
*
* Notes by [David Tonhofer](https://github.com/dtonhofer)
*/
class TermAnalysisConstructionTest {
@Test
fun atomic_term_properties() {
val atom = Atom("foo")
assertTrue(atomic(atom))
assertFalse(compound(atom))
assertTrue(functor(atom, Atom("foo"), 0))
}
@Test
fun compound_arity_0_properties() {
val structure = Structure(Atom("foo"), emptyList())
assertFalse(atomic(structure))
assertTrue(compound(structure))
}
@Test
fun compound_arity_1_properties() {
val structure = Structure(Atom("foo"), listOf(Atom("bar")))
assertFalse(atomic(structure))
assertTrue(compound(structure))
assertTrue(functor(structure, Atom("foo"), 1))
}
}