This repository has been archived on 2025-09-23. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
2025LogProg-project-GhentPr.../tests/prolog/logic/TermAnalysisConstructionTest.kt
2025-05-09 18:30:18 +02:00

42 lines
No EOL
1.1 KiB
Kotlin

package prolog.logic
import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.Test
import prolog.ast.terms.Atom
import prolog.ast.terms.Functor
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))
assertEquals(Functor("foo", 0), atom.functor)
}
@Test
fun compound_arity_0_properties() {
val structure = Structure("foo")
assertFalse(atomic(structure))
assertTrue(compound(structure))
}
@Test
fun compound_arity_1_properties() {
val structure = Structure("foo", Atom("bar"))
assertFalse(atomic(structure))
assertTrue(compound(structure))
assertEquals(Functor("foo", 1), structure.functor)
}
}