From 922a96ef136b10d2ee77129cb63752dc389a74ae Mon Sep 17 00:00:00 2001 From: k-m_schindler Date: Sun, 16 May 2010 22:51:29 +0000 Subject: Test for sign algorithm in libavutil/libavcodec. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2379 b956fd51-792f-4845-bead-9b4dfca2ff2c --- test/TestSignAlgorithm.pas | 58 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 test/TestSignAlgorithm.pas (limited to 'test') diff --git a/test/TestSignAlgorithm.pas b/test/TestSignAlgorithm.pas new file mode 100644 index 00000000..915e5681 --- /dev/null +++ b/test/TestSignAlgorithm.pas @@ -0,0 +1,58 @@ +program TestSignAlgorithm; + +uses + sysutils; + +const + a1 = 2; + a2 = 1; + a3 = 0; + a4 = -1; + a5 = -2; + +var + index, number: longint; + +begin + writeln; + writeln ('This tests the arithmetic procedure used in libavutil and libavcodec.'); + writeln ('positive numbers should give 1, negative numbers -1.'); + writeln ('-17: ', not((-17 shr 30) and $00000002) + 2); + writeln ('-16: ', not((-16 shr 30) and $00000002) + 2); + writeln ('-15: ', not((-15 shr 30) and $00000002) + 2); + writeln (' -3: ', not(( -3 shr 30) and $00000002) + 2); + writeln (' -2: ', not(( -2 shr 30) and $00000002) + 2); + writeln (' -1: ', not(( -1 shr 30) and $00000002) + 2); + writeln (' 0: ', not(( 0 shr 30) and $00000002) + 2); + writeln (' 1: ', not(( 1 shr 30) and $00000002) + 2); + writeln (' 2: ', not(( 2 shr 30) and $00000002) + 2); + writeln (' 3: ', not(( 3 shr 30) and $00000002) + 2); + writeln (' 8: ', not(( 8 shr 30) and $00000002) + 2); + writeln ('MaxInt: ', MaxInt:12, ' ', IntToHex(MaxInt,8), ' ', not((MaxInt shr 30) and $00000002) + 2); + writeln ('MaxLongint: ', MaxLongint:12, ' ', IntToHex(MaxLongint,8), ' ', not((MaxLongint shr 30) and $00000002) + 2); + writeln ('MinInt: ', -MaxInt - 1:12, ' ', IntToHex(-MaxInt - 1,8), ' ', not(((-MaxInt - 1) shr 30) and $00000002) + 2); + writeln ('MinLongInt: ', -MaxLongint - 1:12, ' ', IntToHex(-MaxLongint - 1,8), ' ', not(((-MaxLongint - 1) shr 30) and $00000002) + 2); + writeln (a1, ' ', IntToHex(a1,8) , ' ', not((a1 shr 30) and $00000002) + 2); + writeln (a2, ' ', IntToHex(a2,8) , ' ', not((a2 shr 30) and $00000002) + 2); + writeln (a3, ' ', IntToHex(a3,8) , ' ', not((a3 shr 30) and $00000002) + 2); + writeln (a4, ' ', IntToHex(a4,8) , ' ', not((a4 shr 30) and $00000002) + 2); + writeln (a5, ' ', IntToHex(a5,8) , ' ', not((a5 shr 30) and $00000002) + 2); + writeln; + writeln ('Hit RETURN for more positive numbers. The last one overflows and becomes negative.'); + readln; + number := 1; + for index := 1 to 32 do + begin + writeln (index:2, ': ', number:11, ' ', IntToHex(number shr 30 ,8):10, ' ', not((number shr 30) and $00000002) + 2); + number := number * 2; + end; + writeln; + writeln ('Hit RETURN for more positive numbers.'); + readln; + number := -1; + for index := 1 to 32 do + begin + writeln (index:2, ': ', number:11, ' ', IntToHex(number shr 30 ,8):10, ' ', not((number shr 30) and $00000002) + 2); + number := number * 2; + end; +end. \ No newline at end of file -- cgit v1.2.3