aboutsummaryrefslogtreecommitdiff
path: root/frontend/lib/models/benchmark/metrics.dart
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/lib/models/benchmark/metrics.dart')
-rw-r--r--frontend/lib/models/benchmark/metrics.dart70
1 files changed, 70 insertions, 0 deletions
diff --git a/frontend/lib/models/benchmark/metrics.dart b/frontend/lib/models/benchmark/metrics.dart
new file mode 100644
index 000000000..7c3a52519
--- /dev/null
+++ b/frontend/lib/models/benchmark/metrics.dart
@@ -0,0 +1,70 @@
+// TODO: Remove the ability to have null values when benchmark implementation is complete
+/// `Metrics` holds key performance metrics related to a benchmark test run.
+///
+/// The class encapsulates various data points like difficulty, success rate,
+/// whether the task was attempted, the percentage of success, and other performance metrics.
+class Metrics {
+ /// The perceived difficulty level of the test, usually represented as a string.
+ final String difficulty;
+
+ /// A boolean indicating whether the test was successful.
+ final bool success;
+
+ /// A boolean indicating whether the test was attempted.
+ final bool attempted;
+
+ /// The percentage of success in the test, represented as a double.
+ final double successPercentage;
+
+ /// The cost metric, can be any type depending on what is being measured (time, resources, etc.).
+ /// It is dynamic to allow for various types.
+ final dynamic cost;
+
+ /// The total runtime of the test, represented as a string.
+ final String runTime;
+
+ /// Constructs a new `Metrics` instance.
+ ///
+ /// [difficulty]: The perceived difficulty level of the test.
+ /// [success]: A boolean indicating the success status of the test.
+ /// [attempted]: A boolean indicating if the test was attempted.
+ /// [successPercentage]: The success rate as a percentage.
+ /// [cost]: The cost metric for the test.
+ /// [runTime]: The total runtime of the test.
+ Metrics({
+ required this.difficulty,
+ required this.success,
+ required this.attempted,
+ required this.successPercentage,
+ required this.cost,
+ required this.runTime,
+ });
+
+ /// Creates a `Metrics` instance from a map.
+ ///
+ /// [json]: A map containing key-value pairs corresponding to `Metrics` fields.
+ ///
+ /// Returns a new `Metrics` populated with values from the map.
+ factory Metrics.fromJson(Map<String, dynamic> json) => Metrics(
+ difficulty: json['difficulty'] ?? 'placeholder',
+ success: json['success'],
+ attempted: json['attempted'] ?? false,
+ successPercentage: (json['success_percentage'] != null)
+ ? json['success_percentage'].toDouble()
+ : 0.0,
+ cost: json['cost'] ?? 'placeholder',
+ runTime: json['run_time'] ?? 'placeholder',
+ );
+
+ /// Converts the `Metrics` instance to a map.
+ ///
+ /// Returns a map containing key-value pairs corresponding to `Metrics` fields.
+ Map<String, dynamic> toJson() => {
+ 'difficulty': difficulty,
+ 'success': success,
+ 'attempted': attempted,
+ 'success_percentage': successPercentage,
+ 'cost': cost,
+ 'run_time': runTime,
+ };
+}