„No such file or directory" über Dateien, die da waren
Im Protokoll stand für jede einzelne Folge, fpcalc könne die Datei nicht öffnen — während der Spieler dieselbe Datei im selben Augenblick umpackte. Null Marken, und der Grund stand nicht da. `-ts` ist bei fpcalc kein Zeitstempel, sondern ein Schalter: „gib Zeitstempel aus". Die Sekundenzahl dahinter las fpcalc als zweiten Dateinamen, fand ihn nicht und brach ab, bevor es die echte Datei überhaupt ansah. Nachgemessen am Binärprogramm aus dem Abbild: einen Startpunkt gibt es bei fpcalc gar nicht. `-length` begrenzt nur die Dauer vom Anfang an — für den Abspann braucht es aber das Ende. Also einmal die ganze Spur je Folge, und Vorspann wie Abspann sind danach zwei Ausschnitte aus demselben Abdruck. Das ist nicht nur richtig, sondern billiger: eine Folge von 45 Minuten kostet 1,6 Sekunden und ergibt 21 786 Werte — gegenüber zwei Ausschnitten, die zusammen mehr gekostet hätten und nie funktionierten. Die Rate von 0,1239 Sekunden je Wert steht jetzt als Prüfung daneben. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
2c535e6f47
commit
fd79fb4022
@@ -45,3 +45,41 @@ public class TonabdruckleserTests
|
||||
Assert.That(Tonabdruckleser.SekundenJeAbdruck, Is.EqualTo(0.1238).Within(0.0005));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Was fpcalc wirklich kann — nachgemessen, nicht angenommen.</summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// <b>Der Anlass ist ein Fehler, der im Betrieb stand.</b> Hier wurde
|
||||
/// <c>-ts 0</c> übergeben, in der Annahme, das sei ein Startpunkt. Es ist
|
||||
/// ein Schalter („gib Zeitstempel aus"), und die Null las fpcalc als
|
||||
/// zweiten Dateinamen: Code 2, „No such file or directory" — über Dateien,
|
||||
/// die da waren. Einen Startpunkt gibt es bei fpcalc nicht.
|
||||
///
|
||||
/// Gemessen am Binärprogramm aus dem Abbild, an einer Datei von 2700
|
||||
/// Sekunden: <c>-length 0</c> ergibt 21 786 Werte, also 0,1239 Sekunden je
|
||||
/// Wert; <c>-length 120</c> bricht nach 948 Werten ab.
|
||||
/// </remarks>
|
||||
public class TonabdruckRateTests
|
||||
{
|
||||
[Test]
|
||||
public void Die_Rate_stimmt_mit_der_Messung_ueberein()
|
||||
{
|
||||
// 21 786 Werte für 2700 Sekunden.
|
||||
var gemessen = 2700.0 / 21786;
|
||||
Assert.That(Tonabdruckleser.SekundenJeAbdruck, Is.EqualTo(gemessen).Within(0.0005));
|
||||
}
|
||||
|
||||
/// <summary>Eine Stunde Abdruck passt in eine überschaubare Reihe.</summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// Damit niemand auf die Idee kommt, den Abdruck einer ganzen Folge für
|
||||
/// zu gross zu halten und wieder in Ausschnitten zu lesen: eine Stunde
|
||||
/// sind knapp 29 000 Werte, also 116 Kilobyte.
|
||||
/// </remarks>
|
||||
[Test]
|
||||
public void Eine_Stunde_sind_rund_29000_Werte()
|
||||
{
|
||||
var werte = (int)(3600 / Tonabdruckleser.SekundenJeAbdruck);
|
||||
Assert.That(werte, Is.EqualTo(29000).Within(500));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user