//_Header
//*******************************************************************
//    NOVA CONTROL SYSTEM  ---  Lawrence Livermore Laboratory
//
//    Copyright 1984 by The Regents of the University of California
//*******************************************************************
//
//_Module_Name:  MTHCMPTST		_File:  [VCLIB.TEST.LSI]MTHCMPTST.PRX
//
//_Description:
//	Arithmatic comparison test
//_Call:
//_Remarks:
// 	Test #1 : A = B
// 	Test #2 : A <> B
// 	Test #3 : A < B
// 	Test #4 : A <= B
// 	Test #5 : A > B
// 	Test #6 : A >= B
// 	Condition #1 : A and B zero
// 	Condition #2 : A zero, B min positive
//	Condition #3 : A zero, B min negitive
// 	Condition #4 : A and B small positive
//	Condition #5 : A and B large positive
// 	Condition #6 : A and B small negitive
//	Condition #7 : A and B large negitive
//	Condition #8 : A min positive, B max positive
//	Condition #9 : A min negitive, B max negitive
// 	Condition #10 : A max positive, B max negitive
//	Condition #11 : A and B min positive
//	Condition #12 : A and B min negitive
//	Condition #13 : A and B max positive
//	Condition #14 : A and B max negitive
//_Identifier: { none }
//*******************************************************************
//_Author:  T. A. SHERMAN		_Creation_Date:   7-OCT-1984
//_Revisions:
//  1.000   7-OCT-1984  TAS	Initial Key-in.
//*******************************************************************
//_End
Main Module MTHCMPTST

	Use	TEXTIO

	Declare
//Boundary values
		Zero			= 0
		Min_pos_integer		= 1
		Min_neg_integer		= -1
		Max_pos_4_bit_integer	= 7			
		Max_neg_4_bit_integer	= -8
		Max_pos_8_bit_integer	= 127			
		Max_neg_8_bit_integer	= -128
		Max_pos_12_bit_integer	= 2047			
		Max_neg_12_bit_integer	= -2048
		Max_pos_16_bit_integer	= 32767			
		Max_neg_16_bit_integer	= -32768
		Max_pos_20_bit_integer	= 524287		
		Max_neg_20_bit_integer	= -524288
		Max_pos_24_bit_integer	= 8388607		
		Max_neg_24_bit_integer	= -8388608
		Max_pos_28_bit_integer	= 134217727		
		Max_neg_28_bit_integer	= -134217728
		Max_pos_32_bit_integer	= 16!7FFFFFFF
		Max_neg_32_bit_integer	= 16!80000000
//		Max_pos_32_bit_integer	= 2147483646		
//		Max_neg_32_bit_integer	= -2147483637
//Objects
		A_4	: static 4 bit integer		// Half byte object
		B_4	: static 4 bit integer
		A_8	: static 8 bit integer		// One byte object
		B_8	: static 8 bit integer
		A_12	: static 12 bit integer		// One and a half byte object
		B_12	: static 12 bit integer
		A_16	: static 16 bit integer		// One word object ( two bytes )
		B_16	: static 16 bit integer
		A_20	: static 20 bit integer		// Two and a half byte object
		B_20	: static 20 bit integer
		A_24	: static 24 bit integer		// Three byte object
		B_24	: static 24 bit integer
		A_28	: static 28 bit integer		// Three and a half byte object
		B_28	: static 28 bit integer
		A_32	: static 32 bit integer		// Two word object ( four bytes )
		B_32	: static 32 bit integer
		Error_count : static integer initially 0
	EndDeclare

	Procedure Pass ()
	EndProcedure

	Procedure Failure ( size: integer, test: integer, cond: integer )
		Out_string ( TTY, "Failure -- " )
		Out_integer ( TTY, size )
		Out_string ( TTY, " Bit Arithmatic comparison test #" )
		Out_integer ( TTY, test )
		Out_string ( TTY, ", condition #" )
		Out_integer ( TTY, cond )
		Out_record ( TTY )
		Error_count *= +1
	EndProcedure


	TTY_line ( "32 Bit Arithmatic Comparison Tests" )
// 32 bit tests
// Condition #3 : A zero, B min negitive
	A_32 := zero
	B_32 := min_neg_integer
// Test #3 : A < B
	If A_32 < B_32 do
		Failure ( 32,3,3 )
	Otherwise
		Pass ()
	EndIf
// Test #4 : A <= B
	If A_32 <= B_32 do
		Failure ( 32,4,3 )
	Otherwise
		Pass ()
	EndIf
// Test #5 : A > B
	If A_32 > B_32 do
		Pass ()
	Otherwise
		Failure ( 32,5,3 )
	EndIf
// Test #6 : A >= B
	If A_32 >= B_32 do
		Pass ()
	Otherwise
		Failure ( 32,6,3 )
	EndIf

	Out_string ( TTY, "Errors detected: " )
	Out_integer ( TTY, error_count )
	Out_record ( TTY )

EndModule