File size: 1,922 Bytes
1d26c54 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import sys,unittest,threading
from pathlib import Path
sys.path.insert(0,str(Path(__file__).resolve().parents[1]/'engine'))
import generation,geometry
class Generation(unittest.TestCase):
def test_preserves_controls_and_complete_prefix(self):
g=geometry.new();seen=[]
def gen(adjusted,attempt):
seen.append(adjusted['controls'].copy())
return {'text':'The machine feared the void. '+('The cold blood '*12)}
r=generation.rewrite('The machine predicts sensory information.',gen,g,True,threading.Event(),lambda s:None)
self.assertEqual(seen,[g['controls']]);self.assertEqual(r['text'],'The machine feared the void.')
self.assertEqual(len(r['attempts']),1);self.assertIn('cold blood',r['attempts'][0]['text'])
def test_shared_allowance_is_used(self):
r=generation.rewrite('Short.',lambda *a:{'text':'A much longer complete sentence.'},geometry.new(),True,threading.Event(),lambda s:None,max_chars=100)
self.assertEqual(r['text'],'A much longer complete sentence.');self.assertNotIn('original_retained',r)
def test_no_complete_sentence_is_flagged(self):
r=generation.rewrite('Original.',lambda *a:{'text':'cut off'},geometry.new(),True,threading.Event(),lambda s:None)
self.assertTrue(r['original_retained']);self.assertEqual(len(r['attempts']),1)
def test_repetition_detection(self):
self.assertTrue(generation.repetition('cold blood of the machine '*8))
self.assertFalse(generation.repetition('The machine watches the rain. It hopes for quiet.'))
def test_concise_paragraph_allowance(self):
import documents
text='A'*600+' '+'B'*150
spans=[(0,600),(601,751)]
first=documents.rewrite_allowance(text,spans,{},0,multiplier=1.25)
self.assertEqual(first,750)
records={'0':{'text':'X'*650}}
last=documents.rewrite_allowance(text,spans,records,1,multiplier=1.25)
records['1']={'text':'Y'*last}
self.assertLessEqual(len(documents.assemble(text,spans,records)),int(1.25*len(text)))
|