Skip to main content

semdiff_differ_audio/
report_summary.rs

1use crate::{AudioDiff, AudioDiffReporter, audio_extension};
2use semdiff_core::fs::FileLeaf;
3use semdiff_core::{DetailReporter, MayUnsupported};
4use semdiff_output::summary::SummaryReport;
5use std::convert;
6
7impl<W> DetailReporter<AudioDiff, FileLeaf, SummaryReport<W>> for AudioDiffReporter {
8    type Error = convert::Infallible;
9
10    fn report_unchanged(
11        &self,
12        _name: &str,
13        _diff: &AudioDiff,
14        reporter: &SummaryReport<W>,
15    ) -> Result<MayUnsupported<()>, Self::Error> {
16        reporter.increment_unchanged();
17        Ok(MayUnsupported::Ok(()))
18    }
19
20    fn report_modified(
21        &self,
22        _name: &str,
23        _diff: &AudioDiff,
24        reporter: &SummaryReport<W>,
25    ) -> Result<MayUnsupported<()>, Self::Error> {
26        reporter.increment_modified();
27        Ok(MayUnsupported::Ok(()))
28    }
29
30    fn report_added(
31        &self,
32        _name: &str,
33        data: &FileLeaf,
34        reporter: &SummaryReport<W>,
35    ) -> Result<MayUnsupported<()>, Self::Error> {
36        if audio_extension(&data.kind).is_none()
37            || self
38                .spectrogram_analyzer
39                .decode_audio(&data.kind, &data.content)
40                .is_err()
41        {
42            return Ok(MayUnsupported::Unsupported);
43        }
44        reporter.increment_added();
45        Ok(MayUnsupported::Ok(()))
46    }
47
48    fn report_deleted(
49        &self,
50        _name: &str,
51        data: &FileLeaf,
52        reporter: &SummaryReport<W>,
53    ) -> Result<MayUnsupported<()>, Self::Error> {
54        if audio_extension(&data.kind).is_none()
55            || self
56                .spectrogram_analyzer
57                .decode_audio(&data.kind, &data.content)
58                .is_err()
59        {
60            return Ok(MayUnsupported::Unsupported);
61        }
62        reporter.increment_deleted();
63        Ok(MayUnsupported::Ok(()))
64    }
65}