1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
//! This is documentation for the `console_tester` crate.
//! 
//! # What is this?
//! The purpose of this crate is to aid developers by allowing them to test their console code on multiple  
//! different terminals. When it comes to displaying data, not all terminals handle output in the same  
//! manner. One might find that a particular escape sequence is properly displayed through terminal A but  
//! the same is not the case for terminal B. Thus, the developer may be required to configure these escape  
//! sequences differently for different environments. This can be a source of frustration for those that  
//! desire consistent output across the board. By providing a means to compare expected and actual output  
//! data on a selected terminal (or list of terminals), we hope to expedite the testing process.   
//! 
//! # How is this done?
//! Through the `TermWriter` and `TermStrings` structs, this crate parses data given by the user and  
//! compares it against a list of known good escape sequences for the given terminal. If one or more bad  
//! escape sequences are found in the input data, the input data is displayed on the screen with the bad  
//! sequences highlighted and the good sequences removed.  
//!   
//! + **TermWriter**  
//! >  The TermWriter module stores user data. TermWriter also contains the *compare* function which handles  
//! various possible errors and provides feedback to the user.
//! <br/>
//!   
//! + **TermString**  
//! >  The TermStrings module holds the valid escape sequences for a given terminal. When the user selects  
//! the terminal they wish to test their input data against, TermSring is populated by the known good escape  
//! sequences for that terminal.  
//!   
//! # How do I use this?
//! In an effort for simplicity and clarity, the following examples will show how to use this crate. You'll  
//! notice (Example 1) does not provide a terminal to test user input data against. In this case, TermStrings  
//! will just default to the current terminal.
//! <br/>
//!   
//! **In simple terms, what does using this crate look like?**  
//!   
//! Feed in the string or data you wish to test, provide an argument for the selected terminal (if desired),  
//! results will be displayed.  
//! 
//! ### Example 1:  general use, no arguments
//! ```
//!     use console_tester::buffer::TermWriter;
//!     use console_tester::term::TermStrings;
//!     use std::io::Write;
//!
//!     let mut buffer: TermWriter = TermWriter::new();
//!     buffer.write(b"Console output information here");
//!
//!     // Find local terminal
//!     let cmd_ts: TermStrings = TermStrings::new_from_env();
//!
//!     let b1 = buffer.compare(cmd_ts);
//! ```
//!   
//! ### Example 2:  with argument
//! ```
//!     use console_tester::buffer::TermWriter;
//!     use console_tester::term::TermStrings;
//!     use std::io::Write;
//!
//!     let mut buffer: TermWriter = TermWriter::new();
//!     buffer.write(b"Console output information here");
//!
//!     // x-term test
//!     let path = std::path::Path::new("./terminfo_files/x/xterm");
//!     let cmd_ts: TermStrings = TermStrings::new_from_path(path);
//!
//!     let b1 = buffer.compare(cmd_ts);
//! ```
//! 
//! ### Example 3:  with multiple arguments
//! ```
//!     use console_tester::buffer::TermWriter;
//!     use console_tester::term::TermStrings;
//!     use std::io::Write;
//!
//!     let mut buffer: TermWriter = TermWriter::new();
//!     buffer.write(b"Console output information here");
//!
//!     // x-term test
//!     let path = std::path::Path::new("./terminfo_files/x/xterm");
//!     let cmd_ts: TermStrings = TermStrings::new_from_path(path);
//!
//!     // cygwin test
//!     let path2 = std::path::Path::new("./terminfo_files/c/cygwin");
//!     let cmd_cygwin: TermStrings = TermStrings::new_from_path(path);
//!
//!     let b1 = buffer.compare(cmd_ts);
//!     let b2 = buffer.compare(cmd_cygwin);
//! ```
//! 
//! ### Example 4:  bad escape sequence found
//! ```
//!     use console_tester::buffer::TermWriter;
//!     use console_tester::term::TermStrings;
//!     use std::io::Write;
//!
//!     let mut buffer: TermWriter = TermWriter::new();
//!     buffer.write(b"Console output information here");
//!
//!     // x-term test
//!     let path = std::path::Path::new("./terminfo_files/x/xterm");
//!     let cmd_ts: TermStrings = TermStrings::new_from_path(path);
//!
//!     let b1 = buffer.compare(cmd_ts);
//!     let b2 = buffer.compare(cmd_cygwin);
//! ```

#![crate_type = "lib"]
#![crate_name = "console_tester"]

// Internal Exposure
mod reg;

// Public Exposure
pub mod buffer;
pub mod term;