using Flaro.Media; namespace Flaro.Media.Tests; /// Die Ausgabe von fpcalc -raw lesen. /// /// /// Ohne das Programm selbst. Ob Chromaprint rechnen kann, ist nicht /// unsere Frage; ob wir seine Ausgabe richtig verstehen, schon. Die Zahlen /// kommen mit Vorzeichen, gemeint sind die Bitmuster — wer das verwechselt, /// bekommt einen Abdruck, der nie zu einem zweiten passt. /// public class TonabdruckleserTests { [Test] public void Die_Zahlen_werden_als_Bitmuster_gelesen() { var abdruck = Tonabdruckleser.Lesen("DURATION=120\nFINGERPRINT=1,-1,2147483647,-2147483648\n"); Assert.That(abdruck, Is.EqualTo(new uint[] { 1u, 0xFFFFFFFFu, 0x7FFFFFFFu, 0x80000000u })); } [Test] public void Ohne_Abdruckzeile_kommt_nichts() { Assert.That(Tonabdruckleser.Lesen("DURATION=120\n"), Is.Empty); } [Test] public void Eine_leere_Zeile_ergibt_keinen_Abdruck() { Assert.That(Tonabdruckleser.Lesen("FINGERPRINT=\n"), Is.Empty); } /// Eine Zeitscheibe ist rund 124 Millisekunden. /// /// /// Daran hängt jede Zeitangabe, die aus einem Abdruck entsteht. Stimmt /// die Zahl nicht, liegt jede Marke um denselben Faktor daneben — und /// das sähe aus wie ein Fehler in der Erkennung. /// [Test] public void Eine_Zeitscheibe_dauert_124_Millisekunden() { Assert.That(Tonabdruckleser.SekundenJeAbdruck, Is.EqualTo(0.1238).Within(0.0005)); } }