Bläddra i källkod

Test de la mémoire avec un MAX_HISTORY_LENGTH impair

Avec un N impair, la coupe tomberait sur une réponse du bot, retirée pour
que la mémoire commence par un message de l'utilisateur : il reste N - 1
messages, ce qui est voulu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Johnounet 7 timmar sedan
förälder
incheckning
dac333d781
1 ändrade filer med 17 tillägg och 0 borttagningar
  1. 17 0
      tests/test_history.py

+ 17 - 0
tests/test_history.py

@@ -135,6 +135,23 @@ class TrimTest(HistoryTestCase):
                 self.assertEqual(sizes[first_cut], max_length)
                 self.assertGreaterEqual(min(sizes[first_cut:]), max_length)
 
+    async def test_odd_length(self):
+        # N impair : la coupe tomberait sur une réponse du bot, retirée pour commencer par un message
+        # de l'utilisateur. Il reste donc N - 1 messages, ce qui est voulu.
+        for max_length, cut_to in ((3, 2), (5, 4), (11, 10)):
+            with self.subTest(max_length=max_length):
+                self.path.unlink(missing_ok=True)
+                history = self.load(max_length)
+                sizes = []
+                for i in range(3 * max_length):
+                    await self.exchanges(history, 1, start=i)
+                    messages = history.get(CHANNEL)
+                    self.assertEqual(messages[0]["role"], "user")
+                    sizes.append(len(messages))
+                first_cut = next(i for i in range(1, len(sizes)) if sizes[i] < sizes[i - 1])
+                self.assertEqual(sizes[first_cut], cut_to)
+                self.assertGreaterEqual(min(sizes[first_cut:]), cut_to)
+
     async def test_trimmed_on_load(self):
         history = self.load(max_length=20)
         await self.exchanges(history, 10)