diff --git a/crates/app/src/main.rs b/crates/app/src/main.rs index 9c7c0de..7780bbb 100644 --- a/crates/app/src/main.rs +++ b/crates/app/src/main.rs @@ -60,11 +60,38 @@ mod dev { use clap::Subcommand; #[derive(Subcommand)] - pub(crate) enum DevCommands {} + pub(crate) enum DevCommands { + Enums { test_str: String }, + Add { num0: i32, num1: i32 }, + } impl DevCommands { pub fn run(self) { - println!("There are currently no dev commands."); + match self { + DevCommands::Enums { test_str } => { + use prowocessing::experimental::enum_based::PipelineBuilder; + + let upr = PipelineBuilder::new() + .insert(prowocessing::experimental::enum_based::Instruction::Uppercase) + .build(); + let lwr = PipelineBuilder::new() + .insert(prowocessing::experimental::enum_based::Instruction::Lowercase) + .build(); + + println!("Upr: {}", upr.run(test_str.clone())); + println!("Lwr: {}", lwr.run(test_str.clone())); + } + DevCommands::Add { num0, num1 } => { + use prowocessing::experimental::trait_based::pipeline::PipelineBuilder; + + let pipe = PipelineBuilder::new().add(1).stringify().build(); + println!( + "{:?}", + pipe.run(vec![&num0.into(), &num1.into()].into()) + .into_inner()[0] + ); + } + } } } } diff --git a/crates/prowocessing/src/experimental/trait_based/data/io.rs b/crates/prowocessing/src/experimental/trait_based/data/io.rs index 4eb9bd3..59e2f28 100644 --- a/crates/prowocessing/src/experimental/trait_based/data/io.rs +++ b/crates/prowocessing/src/experimental/trait_based/data/io.rs @@ -5,7 +5,6 @@ use std::{borrow::ToOwned, convert::Into}; use super::raw::Data; /// Newtype struct with borrowed types for pipeline/element inputs, so that doesn't force a move or clone -#[derive(PartialEq, Eq, Debug)] pub struct Inputs<'a>(pub Vec<&'a Data>); impl<'a> From> for Inputs<'a> { @@ -27,8 +26,7 @@ impl<'a> From<&'a Outputs> for Inputs<'a> { } /// Used for pipeline/element outputs -#[derive(PartialEq, Eq, Debug)] -pub struct Outputs(pub Vec); +pub struct Outputs(Vec); impl Outputs { /// consume self and return inner value(s) diff --git a/crates/prowocessing/src/experimental/trait_based/data/raw.rs b/crates/prowocessing/src/experimental/trait_based/data/raw.rs index 6640e64..502bb91 100644 --- a/crates/prowocessing/src/experimental/trait_based/data/raw.rs +++ b/crates/prowocessing/src/experimental/trait_based/data/raw.rs @@ -1,7 +1,7 @@ //! Dynamic data storage and transfer types for use in [`io`] // Dynamic data type -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug)] pub enum Data { String(String), Int(i32), diff --git a/crates/prowocessing/src/lib.rs b/crates/prowocessing/src/lib.rs index 083eb4f..aa81057 100644 --- a/crates/prowocessing/src/lib.rs +++ b/crates/prowocessing/src/lib.rs @@ -8,33 +8,13 @@ /// Gonna first try string processing... pub mod experimental; -#[cfg(test)] -mod tests { - use crate::experimental::{ - enum_based, - trait_based::{self, data::io::Outputs}, - }; +#[test] +fn test_enums() { + use crate::experimental::enum_based::{Instruction, PipelineBuilder}; + let builder = PipelineBuilder::new().insert(Instruction::Uppercase); + let upr = builder.build(); + let upr_lowr = builder.insert(Instruction::Lowercase).build(); - #[test] - fn test_enums() { - let builder = enum_based::PipelineBuilder::new().insert(enum_based::Instruction::Uppercase); - let upr = builder.build(); - let upr_lowr = builder.insert(enum_based::Instruction::Lowercase).build(); - - assert_eq!(upr.run(String::from("Test")), String::from("TEST")); - assert_eq!(upr_lowr.run(String::from("Test")), String::from("test")); - } - - #[test] - fn add() { - let pipe = trait_based::pipeline::PipelineBuilder::new() - .add(0) - .stringify() - .build(); - - assert_eq!( - pipe.run(vec![&2.into(), &3.into()].into()), - Outputs(vec![String::from("5").into()]) - ); - } + assert_eq!(upr.run(String::from("Test")), String::from("TEST")); + assert_eq!(upr_lowr.run(String::from("Test")), String::from("test")); }