34 lines
1.2 KiB
Groovy
34 lines
1.2 KiB
Groovy
def verify = { ruleset ->
|
|
[withInput: { text ->
|
|
[hasOutput: { expected ->
|
|
def result = ruleset.interpret(text)
|
|
println "Input: '$text' has output: '$result'"
|
|
assert expected == result
|
|
}]
|
|
}]
|
|
}
|
|
|
|
def ruleset1 = markovInterpreterFor("""
|
|
# This rules file is extracted from Wikipedia:
|
|
# http://en.wikipedia.org/wiki/Markov_Algorithm
|
|
A -> apple
|
|
B -> bag
|
|
S -> shop
|
|
T -> the
|
|
the shop -> my brother
|
|
a never used -> .terminating rule""")
|
|
println ruleset1.interpret('I bought a B of As from T S.')
|
|
verify ruleset1 withInput 'I bought a bag of apples from T shop.' hasOutput 'I bought a bag of apples from my brother.'
|
|
|
|
def ruleset2 = markovInterpreterFor("""...""")
|
|
verify ruleset2 withInput 'I bought a B of As from T S.' hasOutput 'I bought a bag of apples from T shop.'
|
|
|
|
def ruleset3 = markovInterpreterFor("""...""")
|
|
verify ruleset3 withInput 'I bought a B of As W my Bgage from T S.' hasOutput 'I bought a bag of apples with my money from T shop.'
|
|
|
|
def ruleset4 = markovInterpreterFor("""...""")
|
|
verify ruleset4 withInput '_1111*11111_' hasOutput '11111111111111111111'
|
|
|
|
def ruleset5 = markovInterpreterFor("""...""")
|
|
verify ruleset5 withInput '000000A000000' hasOutput '00011H1111000'
|