// ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ //██Let me play the world's tiniest piano for you. ██ //█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ //█▙▙█▙▙▙█▙▙█▙▙▙█▙▙█▙▙▙█▙▙█▙▙▙█▙▙█▙▙▙█▙▙█▙▙▙█▙▙█▙▙▙██ //█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ //███████████████████████████████████████████████████ //█ ▀ ▀ ▀ █ #![allow(unused)] #![allow(clippy::unit_arg)] #![feature(adt_const_params)] #![feature(associated_type_defaults)] #![feature(if_let_guard)] #![feature(impl_trait_in_assoc_type)] #![feature(type_alias_impl_trait)] #![feature(trait_alias)] #![feature(type_changing_struct_update)] #![feature(let_chains)] /// Standard result type. pub type Usually = std::result::Result>; /// Standard optional result type. pub type Perhaps = std::result::Result, Box>; pub use ::tek_time::{self, *}; pub use ::tek_jack::{self, *, jack::*}; pub use ::tek_midi::{self, *, midly::{MidiMessage, num::*, live::*}}; pub use ::tek_sampler::{self, *}; #[cfg(feature = "host")] pub use ::tek_plugin::{self, *}; pub use ::tengri::dsl::*; pub use ::tengri::input::*; pub use ::tengri::output::*; pub use ::tengri::tui::*; pub use ::tengri::tui::ratatui; pub use ::tengri::tui::ratatui::prelude::buffer::Cell; pub use ::tengri::tui::ratatui::prelude::Color::{self, *}; pub use ::tengri::tui::ratatui::prelude::{Style, Stylize, Buffer, Modifier}; pub use ::tengri::tui::crossterm; pub use ::tengri::tui::crossterm::event::{Event, KeyCode::{self, *}}; pub(crate) use std::sync::{Arc, RwLock, atomic::{AtomicBool, Ordering::Relaxed}}; mod api; pub use self::api::*; mod audio; pub use self::audio::*; mod model; pub use self::model::*; mod view; pub use self::view::*; mod keys; pub use self::keys::*; #[cfg(test)] #[test] fn test_model () { let mut tek = Tek::default(); let _ = tek.clip(); let _ = tek.toggle_loop(); } #[cfg(test)] #[test] fn test_model_scene () { let mut app = Tek::default(); let _ = app.scene_longest(); let _ = app.scene(); let _ = app.scene_mut(); let _ = app.scene_add(None, None); app.scene_del(0); let scene = Scene::default(); let _ = scene.pulses(); let _ = scene.is_playing(&[]); } #[cfg(test)] #[test] fn test_view_clock () { let _ = button_play_pause(true); let mut app = Tek::default(); let _ = app.view_transport(); let _ = app.view_status(); let _ = app.update_clock(); } #[cfg(test)] #[test] fn test_view_layout () { let _ = button_2("", "", true); let _ = button_2("", "", false); let _ = button_3("", "", "", true); let _ = button_3("", "", "", false); let _ = heading("", "", 0, "", true); let _ = heading("", "", 0, "", false); let _ = wrap(Reset, Reset, ""); } #[cfg(test)] mod test_view_meter { use super::*; use proptest::prelude::*; #[test] fn test_view_meter () { let _ = view_meter("", 0.0); let _ = view_meters(&[0.0, 0.0]); } proptest! { #[test] fn proptest_view_meter ( label in "\\PC*", value in f32::MIN..f32::MAX ) { let _ = view_meter(&label, value); } #[test] fn proptest_view_meters ( value1 in f32::MIN..f32::MAX, value2 in f32::MIN..f32::MAX ) { let _ = view_meters(&[value1, value2]); } } } #[cfg(test)] #[test] fn test_view_iter () { let mut tek = Tek::default(); tek.editor = Some(Default::default()); let _: Vec<_> = tek.inputs_with_sizes().collect(); let _: Vec<_> = tek.outputs_with_sizes().collect(); let _: Vec<_> = tek.tracks_with_sizes().collect(); let _: Vec<_> = tek.scenes_with_sizes(true, 10, 10).collect(); //let _: Vec<_> = tek.scenes_with_colors(true, 10).collect(); //let _: Vec<_> = tek.scenes_with_track_colors(true, 10, 10).collect(); } #[cfg(test)] #[test] fn test_view_sizes () { let app = Tek::default(); let _ = app.w(); let _ = app.w_sidebar(); let _ = app.w_tracks_area(); let _ = app.h(); let _ = app.h_tracks_area(); let _ = app.h_inputs(); let _ = app.h_outputs(); let _ = app.h_scenes(); }