
# shellcheck disable=SC2043
# For the license, see the LICENSE file in the root directory.

function wait_for_file()
{
  local filename="$1"
  local timeout="$2"

  local loops=$((timeout * 10)) loop

  for ((loop=0; loop<loops; loop++)); do
    [ -f "${filename}" ] && return 1 
    sleep 0.1
  done
  return 0 
}

function check_logfile_patterns_level_20()
{
	local logfile="$1"

	for pattern in \
	"^ [[:print:]]+$" \
	"^  [[:print:]]+$" \
	"^   [[:print:]]+$" \
	"^    [[:print:]]+$" \
	"^     [[:print:]]+$" \
	"^      [[:print:]]+$" \
	"^       [[:print:]]+$" \
	; do
		shift
		ctr=$(grep -c -E "${pattern}" "$logfile")
		if [ "$ctr" -eq 0 ]; then
			echo "Counted $ctr occurrences of pattern '${pattern}' in logfile; expected at least 1"
			exit 1
		fi
		echo "'${pattern}' occurrences: $ctr (OK)"
	done
}

function check_logfile_patterns_level_1()
{
	local logfile="$1"
	local minocc="$2"

	for pattern in \
	"^[[:print:]]+$" \
	; do
		shift
		ctr=$(grep -c -E "${pattern}" "$logfile")
		if [ "$ctr" -lt "$minocc" ]; then
			echo "Counted $ctr occurrences of pattern '${pattern}' in logfile; expected at least $minocc"
			exit 1
		fi
		echo "'${pattern}' occurrences: $ctr (OK)"
	done
}
