using AIStudio.Tools; using AIStudio.Tools.Validation; namespace AIStudio.Tests.Tools.Validation; /// /// Checks what the dialogs of local data sources tell about the cloud, and when they ask again. /// /// /// A data source can send its text to an embedding provider and its recordings to a transcription /// provider. The user acknowledges what leaves the computer, and an acknowledgment for the one must /// not count for the other. /// [TestFixture] public sealed class CloudProcessingTests { [TestCase(CloudProcessing.EMBEDDING, CloudProcessing.EMBEDDING, true)] [TestCase(CloudProcessing.EMBEDDING, CloudProcessing.EMBEDDING | CloudProcessing.TRANSCRIPTION, false)] [TestCase(CloudProcessing.EMBEDDING, CloudProcessing.TRANSCRIPTION, false)] [TestCase(CloudProcessing.EMBEDDING | CloudProcessing.TRANSCRIPTION, CloudProcessing.TRANSCRIPTION, true)] [TestCase(CloudProcessing.NONE, CloudProcessing.EMBEDDING, false)] [TestCase(CloudProcessing.NONE, CloudProcessing.NONE, true)] public void AnAcknowledgmentCoversOnlyWhatItWasGivenFor(CloudProcessing acknowledged, CloudProcessing current, bool expected) { Assert.That(acknowledged.Covers(current), Is.EqualTo(expected)); } [Test] public void ARecordingSentToTheCloudNeedsAnAcknowledgment() { var validation = new DataSourceValidation { GetSelectedCloudTranscription = () => true }; Assert.Multiple(() => { Assert.That(validation.ValidateUserAcknowledgedCloudEmbedding(false), Is.Not.Null); Assert.That(validation.ValidateUserAcknowledgedCloudEmbedding(true), Is.Null); }); } [Test] public void NothingSentToTheCloudNeedsNoAcknowledgment() { Assert.That(new DataSourceValidation().ValidateUserAcknowledgedCloudEmbedding(false), Is.Null); } [TestCase("*")] [TestCase("*.mp3")] [TestCase("*.MP4")] [TestCase("meeting*")] [TestCase("*.*")] [TestCase("*.m?a")] [TestCase(":documents:;*.webm")] public void APatternWhichMaySelectRecordingsCounts(string patterns) { Assert.That(FileNamePatterns.MaySelectMedia(FileNamePatterns.Parse(patterns)), Is.True); } [TestCase(":documents:")] [TestCase(":text:")] [TestCase("*.pdf;*.docx")] [TestCase(".gitignore")] [TestCase("Makefile")] [TestCase("report_*.txt")] public void APatternWhichSelectsNoRecordingDoesNotCount(string patterns) { Assert.That(FileNamePatterns.MaySelectMedia(FileNamePatterns.Parse(patterns)), Is.False, "The dialog would warn about a transcription which never happens."); } }