quantrs2_tytan/testing_framework/
results.rs1use std::time::Duration;
7
8use super::types::{TestFailure, TestResult};
9
10#[derive(Debug, Clone)]
12pub struct TestResults {
13 pub test_results: Vec<TestResult>,
15 pub summary: TestSummary,
17 pub failures: Vec<TestFailure>,
19 pub performance: PerformanceData,
21}
22
23#[derive(Debug, Clone)]
25pub struct TestSummary {
26 pub total_tests: usize,
28 pub passed: usize,
30 pub failed: usize,
32 pub skipped: usize,
34 pub avg_runtime: Duration,
36 pub success_rate: f64,
38 pub quality_metrics: QualityMetrics,
40}
41
42#[derive(Debug, Clone)]
44pub struct QualityMetrics {
45 pub avg_quality: f64,
47 pub best_quality: f64,
49 pub worst_quality: f64,
51 pub std_dev: f64,
53 pub constraint_satisfaction_rate: f64,
55}
56
57#[derive(Debug, Clone)]
59pub struct PerformanceData {
60 pub runtime_stats: RuntimeStats,
62 pub memory_stats: MemoryStats,
64 pub convergence_data: ConvergenceData,
66}
67
68#[derive(Debug, Clone)]
70pub struct RuntimeStats {
71 pub total_time: Duration,
73 pub qubo_generation_time: Duration,
75 pub solving_time: Duration,
77 pub validation_time: Duration,
79 pub time_per_test: Vec<(String, Duration)>,
81}
82
83#[derive(Debug, Clone)]
85pub struct MemoryStats {
86 pub peak_memory: usize,
88 pub avg_memory: usize,
90 pub memory_per_test: Vec<(String, usize)>,
92}
93
94#[derive(Debug, Clone)]
96pub struct ConvergenceData {
97 pub curves: Vec<ConvergenceCurve>,
99 pub avg_iterations: f64,
101 pub convergence_rate: f64,
103}
104
105#[derive(Debug, Clone)]
107pub struct ConvergenceCurve {
108 pub test_id: String,
110 pub iterations: Vec<IterationData>,
112 pub converged: bool,
114}
115
116#[derive(Debug, Clone)]
118pub struct IterationData {
119 pub iteration: usize,
121 pub best_value: f64,
123 pub current_value: f64,
125 pub temperature: Option<f64>,
127}
128
129impl Default for TestResults {
130 fn default() -> Self {
131 Self {
132 test_results: Vec::new(),
133 summary: TestSummary::default(),
134 failures: Vec::new(),
135 performance: PerformanceData::default(),
136 }
137 }
138}
139
140impl Default for TestSummary {
141 fn default() -> Self {
142 Self {
143 total_tests: 0,
144 passed: 0,
145 failed: 0,
146 skipped: 0,
147 avg_runtime: Duration::from_secs(0),
148 success_rate: 0.0,
149 quality_metrics: QualityMetrics::default(),
150 }
151 }
152}
153
154impl Default for QualityMetrics {
155 fn default() -> Self {
156 Self {
157 avg_quality: 0.0,
158 best_quality: f64::NEG_INFINITY,
159 worst_quality: f64::INFINITY,
160 std_dev: 0.0,
161 constraint_satisfaction_rate: 0.0,
162 }
163 }
164}
165
166impl Default for PerformanceData {
167 fn default() -> Self {
168 Self {
169 runtime_stats: RuntimeStats::default(),
170 memory_stats: MemoryStats::default(),
171 convergence_data: ConvergenceData::default(),
172 }
173 }
174}
175
176impl Default for RuntimeStats {
177 fn default() -> Self {
178 Self {
179 total_time: Duration::from_secs(0),
180 qubo_generation_time: Duration::from_secs(0),
181 solving_time: Duration::from_secs(0),
182 validation_time: Duration::from_secs(0),
183 time_per_test: Vec::new(),
184 }
185 }
186}
187
188impl Default for MemoryStats {
189 fn default() -> Self {
190 Self {
191 peak_memory: 0,
192 avg_memory: 0,
193 memory_per_test: Vec::new(),
194 }
195 }
196}
197
198impl Default for ConvergenceData {
199 fn default() -> Self {
200 Self {
201 curves: Vec::new(),
202 avg_iterations: 0.0,
203 convergence_rate: 0.0,
204 }
205 }
206}