#!/bin/bash

# This file is part of util-linux.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

TS_TOPDIR="${0%/*}/../.."
TS_DESC="uuidgen"

. $TS_TOPDIR/functions.sh
ts_init "$*"

ts_check_test_command "$TS_HELPER_UUID_PARSER"
ts_check_test_command "$TS_CMD_UUIDGEN"

OUTPUT_FILE="$(mktemp "${TS_OUTDIR}/uuidgenXXXXXXXXXXXXX")"

test_flag() {
	echo "option: $1" >> $TS_OUTPUT
	$TS_CMD_UUIDGEN $1 > "$OUTPUT_FILE" 2>>$TS_OUTPUT
	ret=$?
	$TS_HELPER_UUID_PARSER "$OUTPUT_FILE" >> $TS_OUTPUT 2>&1
	if [ $? -ne 0 ] || [ $ret -ne 0 ]; then 
		echo "something wrong with $OUTPUT_FILE" >> $TS_OUTPUT
		cat $OUTPUT_FILE >> $TS_OUTPUT 2>&1
	fi
	echo "return values: $ret and $?" >> $TS_OUTPUT
}

test_flag -r
test_flag -t
test_flag --random
test_flag --time

rm -f "$OUTPUT_FILE"

ts_finalize
