#![cfg(feature = "utf8")]
use morse_codec::{
decoder::{Decoder, Precision}, CharacterSet, MorseCodeSet, MorseSignal::{Long as L, Short as S}, MORSE_DEFAULT_CHAR
};
#[test]
fn utf8_decoding() {
const MESSAGE_MAX_LENGTH: usize = 256;
#[cfg(feature = "utf8")]
let character_set: CharacterSet = &[
' ',
'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ',
'Υ', 'Φ', 'Χ', 'Ψ', 'Ω',
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
',', '?', ':', '-', '"', '(', '=', 'X', '.', ';', '/', '\'', '_', ')', '+', '@',
];
#[cfg(feature = "utf8")]
let morse_code_set: MorseCodeSet =
&[
MORSE_DEFAULT_CHAR, [Some(S), Some(L), None, None, None, None], [Some(L), Some(S), Some(S), Some(S), None, None], [Some(L), Some(L), Some(S), None, None, None], [Some(L), Some(S), Some(S), None, None, None], [Some(S), None, None, None, None, None], [Some(L), Some(L), Some(S), Some(S), None, None], [Some(S), Some(S), Some(S), Some(S), None, None], [Some(L), Some(S), Some(L), Some(S), None, None], [Some(S), Some(S), None, None, None, None], [Some(L), Some(S), Some(L), None, None, None], [Some(S), Some(L), Some(S), Some(S), None, None], [Some(L), Some(L), None, None, None, None], [Some(L), Some(S), None, None, None, None], [Some(L), Some(S), Some(S), Some(L), None, None], [Some(L), Some(L), Some(L), None, None, None], [Some(S), Some(L), Some(L), Some(S), None, None], [Some(S), Some(L), Some(S), None, None, None], [Some(S), Some(S), Some(S), None, None, None], [Some(L), None, None, None, None, None], [Some(L), Some(S), Some(L), Some(L), None, None], [Some(S), Some(S), Some(L), Some(S), None, None], [Some(L), Some(L), Some(L), Some(L), None, None], [Some(L), Some(L), Some(S), Some(L), None, None], [Some(S), Some(L), Some(L), None, None, None], [Some(S), Some(L), Some(L), Some(L), Some(L), None], [Some(S), Some(S), Some(L), Some(L), Some(L), None], [Some(S), Some(S), Some(S), Some(L), Some(L), None], [Some(S), Some(S), Some(S), Some(S), Some(L), None], [Some(S), Some(S), Some(S), Some(S), Some(S), None], [Some(L), Some(S), Some(S), Some(S), Some(S), None], [Some(L), Some(L), Some(S), Some(S), Some(S), None], [Some(L), Some(L), Some(L), Some(S), Some(S), None], [Some(L), Some(L), Some(L), Some(L), Some(S), None], [Some(L), Some(L), Some(L), Some(L), Some(L), None], [Some(L), Some(L), Some(S), Some(S), Some(L), Some(L)], [Some(S), Some(S), Some(L), Some(L), Some(S), Some(S)], [Some(L), Some(L), Some(L), Some(S), Some(S), Some(S)], [Some(L), Some(S), Some(S), Some(S), Some(S), Some(L)], [Some(S), Some(L), Some(S), Some(S), Some(L), Some(S)], [Some(L), Some(S), Some(L), Some(L), Some(S), None], [Some(L), Some(S), Some(S), Some(S), Some(L), None], [Some(L), Some(S), Some(S), Some(L), None, None], [Some(S), Some(L), Some(S), Some(L), Some(S), Some(L)], [Some(L), Some(S), Some(L), Some(S), Some(L), Some(S)], [Some(L), Some(S), Some(S), Some(L), Some(S), None], [Some(S), Some(L), Some(L), Some(L), Some(L), Some(S)], [Some(S), Some(S), Some(L), Some(L), Some(S), Some(L)], [Some(L), Some(S), Some(L), Some(L), Some(S), Some(L)], [Some(S), Some(L), Some(S), Some(L), Some(S), None], [Some(S), Some(L), Some(L), Some(S), Some(L), Some(S)], ];
println!("TEST DECODING UTF8 CHARACTERS WITH GREEK ALPHABET:");
println!();
character_set.iter().for_each(|ch| print!("{} ", *ch as char));
println!();
let mut decoder = Decoder::<MESSAGE_MAX_LENGTH>::new()
.with_precision(Precision::Accurate)
.with_character_set(character_set)
.with_morse_code_set(morse_code_set)
.build();
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(700, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(700, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(700, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(700, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(700, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(700, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(100, false);
decoder.signal_event(300, true);
decoder.signal_event(300, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(100, false);
decoder.signal_event(100, true);
decoder.signal_event(300, false);
let message_str = decoder.message.as_str();
println!("Message is {}", message_str);
}