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)))