sz_orm_core/
binding_coverage.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9pub enum BindingLanguage {
10 Cabi,
12 Python,
14 Java,
16 Go,
18 Cpp,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct BindingCoverageReport {
25 pub language: BindingLanguage,
27 pub core_api_count: usize,
29 pub bound_api_count: usize,
31 pub coverage_rate: f64,
33 pub missing_apis: Vec<String>,
35 pub end_to_end_tested: usize,
37}
38
39impl BindingCoverageReport {
40 pub fn new(
42 language: BindingLanguage,
43 core_api_count: usize,
44 bound_api_count: usize,
45 missing_apis: Vec<String>,
46 end_to_end_tested: usize,
47 ) -> Self {
48 let coverage_rate = if core_api_count == 0 {
49 0.0
50 } else {
51 bound_api_count as f64 / core_api_count as f64
52 };
53 Self {
54 language,
55 core_api_count,
56 bound_api_count,
57 coverage_rate,
58 missing_apis,
59 end_to_end_tested,
60 }
61 }
62
63 pub fn is_fully_tested(&self) -> bool {
65 self.end_to_end_tested == self.bound_api_count
66 }
67
68 pub fn to_json(&self) -> Result<String, serde_json::Error> {
70 serde_json::to_string_pretty(self)
71 }
72}