Files
carinha-control-panel/tests/test_cerebro.py
T
julioandClaude Opus 5.5 ff06f02705 fix(rosto): parado mais humano; tonto com espirais e bocejo com a mão
Parado ele vivia escondendo o rosto: a IA local (Qwen 0.6B) reagia a cada
som ou "sozinho" a cada 20-60 s e repetia 'esconder' apesar do "varie".

- IA local: cada evento só oferece gestos que combinam (barulho: susto ou
  olhar; movimento: olhar e acenar), os dois últimos ficam fora do enum,
  no máximo a cada 45 s, não interrompe atividade e, com o modo vida
  ligado, não reage a "sozinho".
- Sem ninguém olhando (sem movimento/PIR há 3 min) nada de gesto "para
  alguém" (acenar, tímido, esconder...): ele vive a vida dele e começa
  atividades com mais frequência.
- Gestos soltos no celular: quase sempre sutis (olhar de lado, piscar
  devagar), gesto grande raro e nunca repetido em seguida.
- Olhar em repouso com fixações e sacadas em vez do vaivém contínuo.
- Tonto: espirais girando no lugar dos olhos (todos os rostos, inclusive
  Matriz) e boca de "ó". Bocejo: mão na frente da boca com tapinhas e
  Zzz subindo. As mãos agora aparecem também quando o gesto vem sozinho.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 21:38:32 -03:00

26 lines
1.2 KiB
Python

import unittest
from cerebro import POR_EVENTO, Cerebro, validar_intencao
class Tests(unittest.TestCase):
def test_only_allowlisted_expression(self):
self.assertEqual(validar_intencao({'gesto':'feliz'}),'feliz')
for data in [{'gesto':'motor 2500'},{'gesto':'feliz','pulso':2500},[],{'gesto':'dormir'}]:
with self.assertRaises(ValueError):validar_intencao(data)
def test_opcoes_por_evento_sem_repetir(self):
c = Cerebro.__new__(Cerebro) # sem thread nem arquivo: só a escolha de opções
c.history = ['surpreso', 'olhar_esq']
opcoes = c.opcoes('som')
self.assertNotIn('surpreso', opcoes) # os dois últimos ficam de fora
self.assertNotIn('olhar_esq', opcoes)
self.assertNotIn('esconder', opcoes) # barulho não vira "esconder o rosto"
self.assertTrue(set(opcoes) <= set(POR_EVENTO['som']))
for evento, lista in POR_EVENTO.items():
for g in lista:
self.assertEqual(validar_intencao({'gesto': g}), g)
self.assertNotIn('acenar', POR_EVENTO['sozinho']) # sozinho: nada de gesto "para alguém"
if __name__=='__main__':unittest.main()