Stufe 4c (#764): Bezeichner auf Englisch - Typen, Methoden, Felder, Parameter, Locals, Testnamen
Mit Roslyn umbenannt (Verweise folgen, Zeichenketten bleiben unberuehrt). Nicht umbenannt, weil gespeichert oder ueber die API gebunden (Stufe 4e): Properties, Record-Parameter, Enum-Member sowie die Parameter der Endpunkt-Handler (Routen-/Query-Bindung ueber den Namen). Die JSON-Felder anonymer Objekte bleiben ausdruecklich benannt (JsonFilter: pfad). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
837a634a22
commit
77062facc9
@@ -70,7 +70,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Eine_Erinnerung_ueberdauert_und_wird_wiedergefunden()
|
||||
public async Task A_memory_persists_and_is_found_again()
|
||||
{
|
||||
await Remember("NVDA", "Quartalszahlen am 20.11. erwartet");
|
||||
|
||||
@@ -82,7 +82,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Die_Suche_greift_auf_Betreff_Inhalt_und_Schlagworte()
|
||||
public async Task The_search_covers_subject_content_and_keywords()
|
||||
{
|
||||
await Remember("NVDA", "Kursziel angehoben", tags: ["analyse", "quartal"]);
|
||||
|
||||
@@ -93,7 +93,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Die_Suche_beachtet_Gross_und_Kleinschreibung_nicht()
|
||||
public async Task The_search_ignores_case()
|
||||
{
|
||||
await Remember("NVDA", "Kursziel angehoben");
|
||||
|
||||
@@ -101,7 +101,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Nach_Betreff_laesst_sich_gezielt_filtern()
|
||||
public async Task Filtering_by_subject_works()
|
||||
{
|
||||
await Remember("NVDA", "Erste Notiz");
|
||||
await Remember("TSLA", "Zweite Notiz");
|
||||
@@ -117,7 +117,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Ein_Schluessel_aktualisiert_statt_eine_zweite_Erinnerung_anzulegen()
|
||||
public async Task A_key_updates_instead_of_creating_a_second_memory()
|
||||
{
|
||||
// Otherwise, with an agent running every 30 minutes, the memory would grow
|
||||
// by 48 entries about the same thing within a day.
|
||||
@@ -131,7 +131,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Beim_Aktualisieren_bleibt_das_Anlagedatum_erhalten()
|
||||
public async Task Updating_keeps_the_creation_date()
|
||||
{
|
||||
var first = await Remember("NVDA", "Erste Fassung", key: "k");
|
||||
await Task.Delay(10);
|
||||
@@ -143,7 +143,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Ohne_Schluessel_entstehen_mehrere_Eintraege()
|
||||
public async Task Without_key_several_entries_are_created()
|
||||
{
|
||||
await Remember("NVDA", "Beobachtung eins");
|
||||
await Remember("NVDA", "Beobachtung zwei");
|
||||
@@ -152,7 +152,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Derselbe_Schluessel_bei_verschiedenen_Agenten_kollidiert_nicht()
|
||||
public async Task The_same_key_for_different_agents_does_not_collide()
|
||||
{
|
||||
await Remember("NVDA", "Sicht von A", owner: AgentA, key: "einschaetzung");
|
||||
await Remember("NVDA", "Sicht von B", owner: AgentB, key: "einschaetzung");
|
||||
@@ -166,7 +166,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Private_Erinnerungen_sind_fuer_andere_Agenten_unsichtbar()
|
||||
public async Task Private_memories_are_invisible_to_other_agents()
|
||||
{
|
||||
await Remember("Geheim", "Nur für A", owner: AgentA);
|
||||
|
||||
@@ -174,7 +174,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Geteilte_Erinnerungen_sehen_alle_Agenten()
|
||||
public async Task Shared_memories_are_seen_by_all_agents()
|
||||
{
|
||||
await Remember("Team", "Gemeinsame Erkenntnis", owner: AgentA, scope: MemoryScope.Shared);
|
||||
|
||||
@@ -185,7 +185,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Geteilte_und_private_Bereiche_sind_getrennt()
|
||||
public async Task Shared_and_private_areas_are_separate()
|
||||
{
|
||||
await Remember("X", "privat", owner: AgentA);
|
||||
await Remember("X", "geteilt", owner: AgentA, scope: MemoryScope.Shared);
|
||||
@@ -199,7 +199,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Wichtiges_kommt_zuerst()
|
||||
public async Task Important_comes_first()
|
||||
{
|
||||
// Crucial, because recall is limited — the most important things must survive.
|
||||
await Remember("A", "nebensächlich", importance: 1);
|
||||
@@ -213,7 +213,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Bei_gleicher_Wichtigkeit_kommt_das_Aktuellste_zuerst()
|
||||
public async Task With_equal_importance_the_most_recent_comes_first()
|
||||
{
|
||||
await Remember("A", "aelter", importance: 3);
|
||||
await Task.Delay(10);
|
||||
@@ -223,7 +223,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Unwichtiges_laesst_sich_ausblenden()
|
||||
public async Task Unimportant_items_can_be_hidden()
|
||||
{
|
||||
await Remember("A", "nebensächlich", importance: 1);
|
||||
await Remember("B", "zentral", importance: 5);
|
||||
@@ -235,7 +235,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Die_Trefferzahl_ist_begrenzt()
|
||||
public async Task The_number_of_matches_is_limited()
|
||||
{
|
||||
for (var i = 0; i < 50; i++)
|
||||
await Remember("Massen", $"Notiz {i}");
|
||||
@@ -244,7 +244,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Die_Wichtigkeit_bleibt_im_gueltigen_Bereich()
|
||||
public async Task The_importance_stays_within_the_valid_range()
|
||||
{
|
||||
var tooHigh = await Remember("A", "x", importance: 99);
|
||||
var tooLow = await Remember("B", "y", importance: -5);
|
||||
@@ -258,7 +258,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Nach_Schlagworten_laesst_sich_filtern()
|
||||
public async Task Filtering_by_keywords_works()
|
||||
{
|
||||
await Remember("A", "eins", tags: ["dringend", "kunde"]);
|
||||
await Remember("B", "zwei", tags: ["kunde"]);
|
||||
@@ -269,7 +269,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Ein_Schlagwort_trifft_kein_laengeres_mit_gleichem_Anfang()
|
||||
public async Task A_keyword_does_not_match_a_longer_one_with_the_same_start()
|
||||
{
|
||||
// "news" must not match "newsletter".
|
||||
await Remember("A", "eins", tags: ["newsletter"]);
|
||||
@@ -279,7 +279,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Schlagworte_ueberstehen_den_Rundlauf()
|
||||
public async Task Keywords_survive_the_round_trip()
|
||||
{
|
||||
await Remember("A", "eins", tags: ["Alpha", "Beta"]);
|
||||
|
||||
@@ -293,7 +293,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Eine_Erinnerung_laesst_sich_loeschen()
|
||||
public async Task A_memory_can_be_deleted()
|
||||
{
|
||||
var entry = await Remember("A", "vergänglich");
|
||||
|
||||
@@ -302,13 +302,13 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Das_Loeschen_einer_unbekannten_Id_meldet_das()
|
||||
public async Task Deleting_an_unknown_id_reports_it()
|
||||
{
|
||||
(await _repository.ForgetAsync(99_999, default)).ShouldBeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Alle_Erinnerungen_zu_einem_Betreff_lassen_sich_loeschen()
|
||||
public async Task All_memories_on_a_subject_can_be_deleted()
|
||||
{
|
||||
await Remember("NVDA", "eins");
|
||||
await Remember("NVDA", "zwei");
|
||||
@@ -321,7 +321,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Der_Ueberblick_zeigt_Betreffs_mit_Anzahl()
|
||||
public async Task The_overview_shows_subjects_with_count()
|
||||
{
|
||||
await Remember("NVDA", "eins");
|
||||
await Remember("NVDA", "zwei");
|
||||
@@ -338,7 +338,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Viele_Agenten_koennen_gleichzeitig_schreiben()
|
||||
public async Task Many_agents_can_write_concurrently()
|
||||
{
|
||||
// Without WAL and lock wait time SQLite answers this with "database is locked".
|
||||
var tasks = Enumerable.Range(0, 60)
|
||||
@@ -354,7 +354,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Gleichzeitiges_Schreiben_und_Lesen_stoert_sich_nicht()
|
||||
public async Task Concurrent_writing_and_reading_do_not_interfere()
|
||||
{
|
||||
await Remember("Basis", "vorhanden");
|
||||
|
||||
@@ -371,7 +371,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Ein_Prozentzeichen_im_Suchtext_wirkt_nicht_als_Platzhalter()
|
||||
public async Task A_percent_sign_in_the_search_text_is_not_a_wildcard()
|
||||
{
|
||||
await Remember("A", "Erster Eintrag");
|
||||
await Remember("B", "Zweiter Eintrag");
|
||||
@@ -381,7 +381,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Umlaute_und_Emoji_ueberstehen_die_Ablage()
|
||||
public async Task Umlauts_and_emoji_survive_storage()
|
||||
{
|
||||
await Remember("Größe", "Prüfung mit Umlauten und 🦀");
|
||||
|
||||
@@ -392,7 +392,7 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Eine_unbekannte_Kategorie_faellt_auf_other_zurueck()
|
||||
public async Task An_unknown_category_falls_back_to_other()
|
||||
{
|
||||
var entry = await Remember("A", "x", category: "phantasie");
|
||||
|
||||
@@ -400,15 +400,15 @@ public sealed class MemoryRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Erinnerungen_ueberdauern_das_Schliessen_der_Datenbank()
|
||||
public async Task Memories_outlast_closing_the_database()
|
||||
{
|
||||
// The actual purpose: a restart of the application must cost nothing.
|
||||
await Remember("Dauerhaft", "muss einen Neustart überleben");
|
||||
|
||||
var wiederEroeffnet = new SqliteMemoryRepository(
|
||||
var reopenedAgain = new SqliteMemoryRepository(
|
||||
new SqliteStorage(Path.Combine(_directory, "state.db")));
|
||||
|
||||
var found = await wiederEroeffnet.RecallAsync(
|
||||
var found = await reopenedAgain.RecallAsync(
|
||||
new MemoryQuery { Scope = MemoryScope.Agent, OwnerId = AgentA }, default);
|
||||
|
||||
found.Count.ShouldBe(1);
|
||||
|
||||
Reference in New Issue
Block a user