mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
118 lines
4.6 KiB
Rust
118 lines
4.6 KiB
Rust
// ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
|
|
//██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<T> = std::result::Result<T, Box<dyn std::error::Error>>;
|
|
/// Standard optional result type.
|
|
pub type Perhaps<T> = std::result::Result<Option<T>, Box<dyn std::error::Error>>;
|
|
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();
|
|
}
|