103 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			V
		
	
	
import os
 | 
						|
import term
 | 
						|
 | 
						|
fn test_get_terminal_size() {
 | 
						|
	cols, _ := term.get_terminal_size()
 | 
						|
	assert cols > 0
 | 
						|
}
 | 
						|
 | 
						|
fn test_h_divider() {
 | 
						|
	divider := term.h_divider('-')
 | 
						|
	assert divider.len > 0
 | 
						|
	assert divider[0] == `-`
 | 
						|
	assert divider[divider.len - 1] == `-`
 | 
						|
}
 | 
						|
 | 
						|
fn test_h_divider_multiple_characters() {
 | 
						|
	xdivider := term.h_divider('abc')
 | 
						|
	assert xdivider.len > 0
 | 
						|
	assert xdivider.contains('abcabc')
 | 
						|
}
 | 
						|
 | 
						|
fn test_header() {
 | 
						|
	divider := term.h_divider('-')
 | 
						|
	term_width := divider.len
 | 
						|
	assert term_width > 0
 | 
						|
	empty_header := term.header('', '-')
 | 
						|
	short_header := term.header('reasonable header', '-')
 | 
						|
	very_long_header := term.header(['abc'].repeat(500).join(' '), '-')
 | 
						|
	very_long_header_2 := term.header(['abcd'].repeat(500).join(' '), '-')
 | 
						|
	/*
 | 
						|
	eprintln(divider)
 | 
						|
	eprintln(empty_header)
 | 
						|
	eprintln(short_header)
 | 
						|
	eprintln(term.header('another longer header', '_-/\\'))
 | 
						|
	eprintln(term.header('another longer header', '-'))
 | 
						|
	eprintln(term.header('short', '-'))
 | 
						|
	eprintln(term.header('12345', '-'))
 | 
						|
	eprintln(term.header('1234', '-'))
 | 
						|
	eprintln(term.header('123', '-'))
 | 
						|
	eprintln(term.header('12', '-'))
 | 
						|
	eprintln(term.header('1', '-'))
 | 
						|
	eprintln(very_long_header)
 | 
						|
	eprintln(divider)
 | 
						|
	eprintln(very_long_header_2)
 | 
						|
	eprintln(term.header(['abcd'].repeat(500).join(' '), '_-/\\'))
 | 
						|
	eprintln(term.header(['abcd'].repeat(500).join(' '), '_-//'))
 | 
						|
	eprintln(term.header('1', '_-/\\\/'))
 | 
						|
	eprintln(term.header('12', '_-/\\\/'))
 | 
						|
	eprintln(term.header('123', '_-/\\\/'))
 | 
						|
	eprintln(term.header('1234', '_-/\\/\\'))
 | 
						|
	eprintln(term.header('', '-'))
 | 
						|
	*/
 | 
						|
	assert term_width == empty_header.len
 | 
						|
	assert term_width == short_header.len
 | 
						|
	assert term_width == very_long_header.len
 | 
						|
	assert term_width == very_long_header_2.len
 | 
						|
	assert term_width == term.header('1234', '_-/\\/\\').len
 | 
						|
}
 | 
						|
 | 
						|
fn test_get_cursor_position() {
 | 
						|
	original_position := term.get_cursor_position()
 | 
						|
	cursor_position_1 := term.get_cursor_position()
 | 
						|
	assert original_position.x == cursor_position_1.x
 | 
						|
	assert original_position.y == cursor_position_1.y
 | 
						|
	//
 | 
						|
	term.set_cursor_position({
 | 
						|
		x: 10
 | 
						|
		y: 11
 | 
						|
	})
 | 
						|
	cursor_position_2 := term.get_cursor_position()
 | 
						|
	//
 | 
						|
	term.set_cursor_position({
 | 
						|
		x: 5
 | 
						|
		y: 6
 | 
						|
	})
 | 
						|
	cursor_position_3 := term.get_cursor_position()
 | 
						|
	//
 | 
						|
	term.set_cursor_position(original_position)
 | 
						|
	eprintln('original_position: $original_position')
 | 
						|
	eprintln('cursor_position_2: $cursor_position_2')
 | 
						|
	eprintln('cursor_position_3: $cursor_position_3')
 | 
						|
	// 0,0 is returned on dumb terminals
 | 
						|
	if cursor_position_2.x == 0 && cursor_position_2.y == 0 {
 | 
						|
		return
 | 
						|
	}
 | 
						|
	if cursor_position_3.x == 0 && cursor_position_3.y == 0 {
 | 
						|
		return
 | 
						|
	}
 | 
						|
	assert cursor_position_2.x == 10
 | 
						|
	assert cursor_position_2.y == 11
 | 
						|
	assert cursor_position_3.x == 5
 | 
						|
	assert cursor_position_3.y == 6
 | 
						|
}
 | 
						|
 | 
						|
fn test_set_terminal_title() {
 | 
						|
	// do not change the current terminal title outside of CI:
 | 
						|
	if os.getenv('CI') != 'true' {
 | 
						|
		return
 | 
						|
	}
 | 
						|
	title_change := term.set_terminal_title('v is awesome!')
 | 
						|
	assert title_change == true
 | 
						|
}
 |