From daae6c2705335baa917d0babe25e525a9d380221 Mon Sep 17 00:00:00 2001 From: vandomej Date: Sat, 2 Oct 2021 21:21:01 -0700 Subject: [PATCH] Removing unnecessary debug fmt uses --- file_linked/src/lib.rs | 25 +------- gemla/src/bracket/mod.rs | 126 +++++++++++++++++++-------------------- gemla/src/tree/mod.rs | 22 +------ 3 files changed, 63 insertions(+), 110 deletions(-) diff --git a/file_linked/src/lib.rs b/file_linked/src/lib.rs index 7ccd138..95ff5d3 100644 --- a/file_linked/src/lib.rs +++ b/file_linked/src/lib.rs @@ -2,7 +2,6 @@ extern crate serde; -use std::fmt; use std::fs; use std::io; use std::io::prelude::*; @@ -24,6 +23,7 @@ pub enum Error { } /// A wrapper around an object `T` that ties the object to a physical file +#[derive(Debug, PartialEq)] pub struct FileLinked where T: Serialize, @@ -109,13 +109,6 @@ where /// # } /// ``` pub fn new(val: T, path: path::PathBuf) -> Result, Error> { - if path.is_file() { - return Err(Error::IO(io::Error::new( - io::ErrorKind::Other, - anyhow!("{} is not a valid file path", path.display()), - ))); - } - let result = FileLinked { val, path }; result.write_data()?; @@ -295,13 +288,6 @@ where /// # } /// ``` pub fn from_file(path: path::PathBuf) -> Result, Error> { - if !path.is_file() { - return Err(Error::IO(io::Error::new( - io::ErrorKind::Other, - anyhow!("{} is not a valid file path", path.display()), - ))); - } - let metadata = path .metadata() .with_context(|| format!("Error obtaining metadata for {}", path.display()))?; @@ -325,15 +311,6 @@ where } } -impl fmt::Debug for FileLinked -where - T: fmt::Debug + Serialize, -{ - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{:?}", self.val) - } -} - #[cfg(test)] mod tests { use super::*; diff --git a/gemla/src/bracket/mod.rs b/gemla/src/bracket/mod.rs index 98a47e9..b896b80 100644 --- a/gemla/src/bracket/mod.rs +++ b/gemla/src/bracket/mod.rs @@ -9,7 +9,6 @@ use crate::tree; use file_linked::FileLinked; use serde::de::DeserializeOwned; use serde::{Deserialize, Serialize}; -use std::fmt; use std::path; /// As the bracket tree increases in height, `IterationScaling` can be used to configure the number of iterations that @@ -26,7 +25,7 @@ use std::path; /// # use std::string::ToString; /// # use std::path; /// # -/// # #[derive(Default, Deserialize, Serialize, Clone)] +/// # #[derive(Default, Deserialize, Serialize, Clone, PartialEq)] /// # struct TestState { /// # pub score: f64, /// # } @@ -72,7 +71,7 @@ use std::path; /// # std::fs::remove_file("./temp").expect("Unable to remove file"); /// # } /// ``` -#[derive(Clone, Serialize, Deserialize, Copy)] +#[derive(Clone, Serialize, Deserialize, Copy, Debug, PartialEq)] #[serde(tag = "enumType", content = "enumContent")] pub enum IterationScaling { /// Scales the number of simulations linearly with the height of the bracket tree given by `f(x) = mx` where @@ -88,47 +87,24 @@ impl Default for IterationScaling { } } -impl fmt::Debug for IterationScaling { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!( - f, - "{}", - serde_json::to_string(self).expect("Unable to deserialize IterationScaling struct") - ) - } -} - /// Creates a tournament style bracket for simulating and evaluating nodes of type `T` implementing [`GeneticNode`]. /// These nodes are built upwards as a balanced binary tree starting from the bottom. This results in `Bracket` building /// a separate tree of the same height then merging trees together. Evaluating populations between nodes and taking the strongest /// individuals. /// /// [`GeneticNode`]: genetic_node::GeneticNode -#[derive(Serialize, Deserialize, Clone)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct Bracket where - T: genetic_node::GeneticNode, + T: genetic_node::GeneticNode + Serialize, { pub tree: tree::Tree, iteration_scaling: IterationScaling, } -impl fmt::Debug for Bracket -where - T: genetic_node::GeneticNode + Serialize, -{ - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!( - f, - "{}", - serde_json::to_string(self).expect("Unable to deserialize Bracket struct") - ) - } -} - impl Bracket where - T: genetic_node::GeneticNode + Default + DeserializeOwned + Serialize + Clone, + T: genetic_node::GeneticNode + Default + DeserializeOwned + Serialize + Clone + PartialEq, { /// Initializes a bracket of type `T` storing the contents to `file_path` /// @@ -136,6 +112,7 @@ where /// ``` /// # use gemla::bracket::*; /// # use gemla::btree; + /// # use gemla::tree; /// # use gemla::error::Error; /// # use serde::{Deserialize, Serialize}; /// # use std::fmt; @@ -143,7 +120,7 @@ where /// # use std::string::ToString; /// # use std::path; /// # - /// #[derive(Default, Deserialize, Serialize, Debug, Clone)] + /// #[derive(Default, Deserialize, Serialize, Debug, Clone, PartialEq)] /// struct TestState { /// pub score: f64, /// } @@ -197,12 +174,6 @@ where /// let mut bracket = Bracket::::initialize(path::PathBuf::from("./temp")) /// .expect("Bracket failed to initialize"); /// - /// assert_eq!( - /// format!("{:?}", bracket), - /// format!("{{\"tree\":{:?},\"iteration_scaling\":{{\"enumType\":\"Constant\",\"enumContent\":1}}}}", - /// btree!(TestState{score: 0.0})) - /// ); - /// /// std::fs::remove_file("./temp").expect("Unable to remove file"); /// # } /// ``` @@ -228,7 +199,7 @@ where /// # use std::string::ToString; /// # use std::path; /// # - /// # #[derive(Default, Deserialize, Serialize, Clone)] + /// # #[derive(Default, Deserialize, Serialize, Clone, PartialEq)] /// # struct TestState { /// # pub score: f64, /// # } @@ -331,7 +302,7 @@ where /// # use std::string::ToString; /// # use std::path; /// # - /// # #[derive(Default, Deserialize, Serialize, Clone)] + /// # #[derive(Default, Deserialize, Serialize, Clone, PartialEq)] /// # struct TestState { /// # pub score: f64, /// # } @@ -409,12 +380,13 @@ where #[cfg(test)] mod tests { - use super::*; + use crate::bracket::*; + use crate::tree::*; use serde::{Deserialize, Serialize}; use std::str::FromStr; - #[derive(Default, Deserialize, Serialize, Clone, Debug)] + #[derive(Default, Deserialize, Serialize, Clone, Debug, PartialEq)] struct TestState { pub score: f64, } @@ -456,9 +428,19 @@ mod tests { .expect("Bracket failed to initialize"); assert_eq!( - format!("{:?}", bracket), - format!("{{\"tree\":{:?},\"iteration_scaling\":{{\"enumType\":\"Constant\",\"enumContent\":1}}}}", - btree!(TestState{score: 0.0})) + bracket, + file_linked::FileLinked::new( + Bracket { + tree: Tree { + val: TestState { score: 0.0 }, + left: None, + right: None + }, + iteration_scaling: IterationScaling::Constant(1) + }, + path::PathBuf::from("./temp") + ) + .unwrap() ); std::fs::remove_file("./temp").expect("Unable to remove file"); @@ -479,29 +461,43 @@ mod tests { } assert_eq!( - format!("{:?}", bracket), - format!("{{\"tree\":{:?},\"iteration_scaling\":{{\"enumType\":\"Linear\",\"enumContent\":2}}}}", - btree!( - TestState{score: 12.0}, - btree!( - TestState{score: 12.0}, - btree!(TestState{score: 6.0}, - btree!(TestState{score: 2.0}), - btree!(TestState{score: 2.0})), - btree!(TestState{score: 6.0}, - btree!(TestState{score: 2.0}), - btree!(TestState{score: 2.0})) - ), - btree!( - TestState{score: 12.0}, - btree!(TestState{score: 6.0}, - btree!(TestState{score: 2.0}), - btree!(TestState{score: 2.0})), - btree!(TestState{score: 6.0}, - btree!(TestState{score: 2.0}), - btree!(TestState{score: 2.0}))) - ) + bracket, + file_linked::FileLinked::new( + Bracket { + iteration_scaling: IterationScaling::Linear(2), + tree: btree!( + TestState { score: 12.0 }, + btree!( + TestState { score: 12.0 }, + btree!( + TestState { score: 6.0 }, + btree!(TestState { score: 2.0 }), + btree!(TestState { score: 2.0 }) + ), + btree!( + TestState { score: 6.0 }, + btree!(TestState { score: 2.0 }), + btree!(TestState { score: 2.0 }) + ) + ), + btree!( + TestState { score: 12.0 }, + btree!( + TestState { score: 6.0 }, + btree!(TestState { score: 2.0 }), + btree!(TestState { score: 2.0 }) + ), + btree!( + TestState { score: 6.0 }, + btree!(TestState { score: 2.0 }), + btree!(TestState { score: 2.0 }) + ) + ) + ) + }, + path::PathBuf::from("./temp2") ) + .unwrap() ); std::fs::remove_file("./temp2").expect("Unable to remove file"); diff --git a/gemla/src/tree/mod.rs b/gemla/src/tree/mod.rs index 7c4cf34..8c39d42 100644 --- a/gemla/src/tree/mod.rs +++ b/gemla/src/tree/mod.rs @@ -18,7 +18,6 @@ use serde::{Deserialize, Serialize}; use std::cmp::max; -use std::fmt; /// An unbalanced binary tree type where each node has an optional left and right child. /// @@ -37,7 +36,7 @@ use std::fmt; /// t.right = Some(Box::new(btree!(3))); /// assert_eq!(t.right.unwrap().val, 3); /// ``` -#[derive(Default, Serialize, Deserialize, Clone, PartialEq)] +#[derive(Default, Serialize, Deserialize, Clone, PartialEq, Debug)] pub struct Tree { pub val: T, pub left: Option>>, @@ -142,17 +141,6 @@ impl Tree { } } -impl fmt::Debug for Tree { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let result = serde_json::to_string(self); - - match result { - Ok(string) => write!(f, "{}", string), - Err(_) => Err(std::fmt::Error), - } - } -} - #[cfg(test)] mod tests { use super::*; @@ -173,14 +161,6 @@ mod tests { ); } - #[test] - fn test_fmt() { - assert_eq!( - format!("{:?}", btree!("foo", btree!("bar"),),), - "{\"val\":\"foo\",\"left\":{\"val\":\"bar\",\"left\":null,\"right\":null},\"right\":null}" - ); - } - #[test] fn test_height() { assert_eq!(1, btree!(1).height());