semdiff_differ_audio/
report_summary.rs1use 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}