public void Empty_Batcher_Test()
        {
            using var batcher = new TemporaryExposureKeyBatches(cacheRoot);

            Assert.False(batcher.HasFiles);
            Assert.Empty(batcher.Files);
        }
        public async Task Batcher_Batches_Min_0_Test()
        {
            // create 0 keys
            var keys = Enumerable.Range(1, 0).Select(id => new TemporaryExposureKey(BitConverter.GetBytes(id), DateTimeOffset.Now, TimeSpan.Zero, RiskLevel.Medium));

            using var batcher = new TemporaryExposureKeyBatches(cacheRoot);

            await batcher.AddBatchAsync(keys);

            Assert.False(batcher.HasFiles);
            Assert.Empty(batcher.Files);
        }
        public async Task Batcher_Batches_Max_17000_From_Single_Batch_Test()
        {
            // create 10K keys
            var keys = Enumerable.Range(1, 10_000).Select(id => new TemporaryExposureKey(BitConverter.GetBytes(id), DateTimeOffset.Now, TimeSpan.Zero, RiskLevel.Medium));

            using var batcher = new TemporaryExposureKeyBatches(cacheRoot);

            await batcher.AddBatchAsync(keys);

            Assert.True(batcher.HasFiles);
            Assert.Single(batcher.Files);
        }
        public Task <(ExposureDetectionSummary summary, IEnumerable <ExposureInfo> info)> DetectExposuresAsync(TemporaryExposureKeyBatches batches)
        {
            var summary = new ExposureDetectionSummary(10, 2, 5);

            var info = new List <ExposureInfo>
            {
                new ExposureInfo(DateTime.UtcNow.AddDays(-10), TimeSpan.FromMinutes(15), 65, 5, RiskLevel.Medium),
                new ExposureInfo(DateTime.UtcNow.AddDays(-11), TimeSpan.FromMinutes(5), 40, 3, RiskLevel.Low),
            };

            return(Task.FromResult((summary, (IEnumerable <ExposureInfo>)info)));
        }