#! /bin/sh
set -e

# Tests for partman's long integer <-> human representation conversions.

export DEBIAN_HAS_FRONTEND=1
export PARTMAN_TEST=1

. ../lib/base.sh

[ "$TEST_VERBOSE" ] || export TEST_VERBOSE=0

testnum=1
failures=0

test_eq () {
	if [ "$1" = "$2" ]; then
		if [ "$TEST_VERBOSE" -ge 1 ]; then
			echo "PASS $testnum '$1' = '$2'" >&2
		fi
	else
		echo "FAIL $testnum '$1' != '$2'" >&2
		failures="$(($failures + 1))"
	fi
	testnum="$(($testnum + 1))"
}

test_eq "$(longint2human 1)" '1.0 B'
test_eq "$(longint2human 30)" '30.0 B'
test_eq "$(longint2human 1049)" '1.0 kB'
test_eq "$(longint2human 1050)" '1.1 kB'
test_eq "$(longint2human 999999)" '1000.0 kB'
test_eq "$(longint2human 1000000)" '1.0 MB'
test_eq "$(longint2human 4294967296)" '4.3 GB'

test_eq "$(human2longint 3.5)" 3500000000
test_eq "$(human2longint 2B)" 2
test_eq "$(human2longint '3.9 b')" 3
test_eq "$(human2longint '4294967296 B')" 4294967296
test_eq "$(human2longint 2k)" 2000
test_eq "$(human2longint 2ki)" 2048
test_eq "$(human2longint 2.5 KiB)" 2560
test_eq "$(human2longint '2 M')" 2000000
test_eq "$(human2longint '2 MiB')" 2097152
test_eq "$(human2longint 20000KB)" 20000000
test_eq "$(human2longint '500.7 TB')" 500700000000000
test_eq "$(human2longint '500.7 PB')" 500700000000000000
test_eq "$(human2longint '12 EiB')" 13835058055282163712

if [ "$failures" != 0 ]; then
	exit 1
else
	exit 0
fi
