mirror of https://github.com/nirenjan/libx52.git
				
				
				
			
		
			
				
	
	
		
			92 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			92 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
#!/usr/bin/env bash
 | 
						|
# MFD tests
 | 
						|
#
 | 
						|
# Copyright (C) 2012-2018 Nirenjan Krishnan (nirenjan@nirenjan.org)
 | 
						|
#
 | 
						|
# SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0
 | 
						|
 | 
						|
source $(dirname $0)/../common_infra.sh
 | 
						|
 | 
						|
TEST_SUITE_ID="libx52 MFD text tests"
 | 
						|
 | 
						|
# Take in input as a string, and convert them to list of MFD set format
 | 
						|
format_text()
 | 
						|
{
 | 
						|
    local clear_index=$(eval echo $1)
 | 
						|
    local set_index=$(eval echo $2)
 | 
						|
    local input_string=$3
 | 
						|
    local output_list="$clear_index 0"
 | 
						|
    local count=0
 | 
						|
 | 
						|
    while [[ ${#input_string} -gt 1 ]]
 | 
						|
    do
 | 
						|
        char1=${input_string:0:1}
 | 
						|
        char2=${input_string:1:1}
 | 
						|
        input_string=${input_string:2}
 | 
						|
        output_list="$output_list $set_index $(printf '%02x%02x' \'$char2 \'$char1)"
 | 
						|
        ((count+=2))
 | 
						|
 | 
						|
        # The library ignores strings longer than 16 characters
 | 
						|
        if [[ $count -eq 16 ]]
 | 
						|
        then
 | 
						|
            # Discard the rest of the input string
 | 
						|
            input_string=
 | 
						|
        fi
 | 
						|
    done
 | 
						|
    
 | 
						|
    if [[ ${#input_string} -eq 1 ]]
 | 
						|
    then
 | 
						|
        # Add the remaining character, but pad with a space
 | 
						|
        output_list="$output_list $set_index $(printf '20%02x' \'$input_string)"
 | 
						|
    fi
 | 
						|
 | 
						|
    echo $output_list
 | 
						|
    return 0
 | 
						|
}
 | 
						|
 | 
						|
mfd_text_test()
 | 
						|
{
 | 
						|
    local line=$1
 | 
						|
    local clear_index="\$X52_MFD_LINE_${line}_CLR_INDEX"
 | 
						|
    local set_index="\$X52_MFD_LINE_${line}_SET_INDEX"
 | 
						|
    local text="$2"
 | 
						|
    TEST_ID="Test setting MFD line $line to '$text'"
 | 
						|
 | 
						|
    pattern=$(format_text $clear_index $set_index "$text")
 | 
						|
    expect_pattern $pattern
 | 
						|
 | 
						|
    $X52CLI mfd $line "$text"
 | 
						|
 | 
						|
    verify_output
 | 
						|
}
 | 
						|
 | 
						|
for text in \
 | 
						|
    a \
 | 
						|
    ab \
 | 
						|
    abc \
 | 
						|
    abcd \
 | 
						|
    abcde \
 | 
						|
    abcdef \
 | 
						|
    abcdefg \
 | 
						|
    abcdefgh \
 | 
						|
    abcdefghi \
 | 
						|
    abcdefghij \
 | 
						|
    abcdefghijk \
 | 
						|
    abcdefghijkl \
 | 
						|
    abcdefghijklm \
 | 
						|
    abcdefghijklmn \
 | 
						|
    abcdefghijklmno \
 | 
						|
    abcdefghijklmnop \
 | 
						|
    abcdefghijklmnopq \
 | 
						|
    abcdefghijklmnopqr \
 | 
						|
    ;
 | 
						|
do
 | 
						|
    for line in 0 1 2
 | 
						|
    do
 | 
						|
        mfd_text_test $line "$text"
 | 
						|
    done
 | 
						|
done
 | 
						|
 | 
						|
verify_test_suite
 | 
						|
 |