| 1 | module termios |
| 2 | |
| 3 | fn test_portable() { |
| 4 | assert 123 == int(flag(123)) |
| 5 | o := Termios{ |
| 6 | c_lflag: flag(0xFFFF) |
| 7 | } // assume c_lflag exists everywhere |
| 8 | // dump( o.c_lflag ) |
| 9 | mut n := o |
| 10 | n.c_lflag &= invert(1) |
| 11 | // dump( n.c_lflag ) |
| 12 | assert n.c_lflag != o.c_lflag |
| 13 | n.disable_echo() // just assume it exists, and can be called everywhere |
| 14 | assert true |
| 15 | } |
| 16 | |
| 17 | @[if !windows] |
| 18 | fn test_termios() { |
| 19 | mut original_term := Termios{} |
| 20 | tcgetattr(0, mut original_term) |
| 21 | println(original_term) |
| 22 | |
| 23 | mut silent_term := original_term |
| 24 | silent_term.c_lflag &= invert(C.ECHO) |
| 25 | tcsetattr(0, C.TCSANOW, mut silent_term) |
| 26 | |
| 27 | mut check_term := Termios{} |
| 28 | tcgetattr(0, mut check_term) |
| 29 | assert check_term.c_lflag == silent_term.c_lflag |
| 30 | |
| 31 | tcsetattr(0, C.TCSANOW, mut original_term) |
| 32 | |
| 33 | tcgetattr(0, mut check_term) |
| 34 | assert check_term.c_lflag == original_term.c_lflag |
| 35 | } |
| 36 | |