diff options
Diffstat (limited to 'testsuite/vests/vhdl-93/billowitch/compliant/tc1910.vhd')
-rw-r--r-- | testsuite/vests/vhdl-93/billowitch/compliant/tc1910.vhd | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/testsuite/vests/vhdl-93/billowitch/compliant/tc1910.vhd b/testsuite/vests/vhdl-93/billowitch/compliant/tc1910.vhd new file mode 100644 index 000000000..4228e66be --- /dev/null +++ b/testsuite/vests/vhdl-93/billowitch/compliant/tc1910.vhd @@ -0,0 +1,186 @@ + +-- Copyright (C) 2001 Bill Billowitch. + +-- Some of the work to develop this test suite was done with Air Force +-- support. The Air Force and Bill Billowitch assume no +-- responsibilities for this software. + +-- This file is part of VESTs (Vhdl tESTs). + +-- VESTs 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. + +-- VESTs 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. + +-- You should have received a copy of the GNU General Public License +-- along with VESTs; if not, write to the Free Software Foundation, +-- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +-- --------------------------------------------------------------------- +-- +-- $Id: tc1910.vhd,v 1.2 2001-10-26 16:29:43 paw Exp $ +-- $Revision: 1.2 $ +-- +-- --------------------------------------------------------------------- + +ENTITY c07s02b00x00p09n01i01910ent IS +END c07s02b00x00p09n01i01910ent; + +ARCHITECTURE c07s02b00x00p09n01i01910arch OF c07s02b00x00p09n01i01910ent IS + +BEGIN + TESTING: PROCESS + -- Local declarations. + variable ValueB1 : BOOLEAN; + variable ValueB2 : BOOLEAN; + variable ValueB3 : BOOLEAN; + variable ValueB4 : BOOLEAN; + variable ValueI1, SameValueI1, DifferentValueI1 : INTEGER; + variable ValueI2, SameValueI2, DifferentValueI2 : INTEGER; + variable ValueI3, SameValueI3, DifferentValueI3 : INTEGER; + variable ValueI4, SameValueI4, DifferentValueI4 : INTEGER; + variable ValueI5, SameValueI5, DifferentValueI5 : INTEGER; + variable ValueI6, SameValueI6, DifferentValueI6 : INTEGER; + variable ValueI7, SameValueI7, DifferentValueI7 : INTEGER; + BEGIN + -- "+" (addition) operator, and the "-" operator. + -- - NOTE: The following expression would not be able to parse + -- if the precedence used was such that the "=" operator + -- had a higher precedence than the "+" operator. Thus, + -- if this parses you are guaranteed that the precedence + -- relative to these two levels is correctly defined.Same + -- goes for the "-" operator. + ValueB1 := 1 + 3 = 3 + 1; + assert (ValueB1) + report "The expression has not been processed correctly.(5)"; + ValueB2 := 3 - 1 = 5 - 3; + assert (ValueB2) + report "The expression has not been processed correctly.(6)"; + + -- "+" (sign) operator, and the "-" (sign) operator. + -- - NOTE: The following expression would not be able to parse + -- if the precedence used was such that the "=" operator + -- had a higher precedence than the "+" operator. Thus, + -- if this parses you are guaranteed that the precedence + -- relative to these two levels is correctly defined.Same + -- goes for the "-" operator. + ValueB3 := + 1 = + 1; + assert (ValueB3) + report "The expression has not been processed correctly.(7)"; + ValueB4 := - 3 = - 3; + assert (ValueB4) + report "The expression has not been processed correctly.(8)"; + + ValueI1 := -3 + 4; + SameValueI1 := (-3) + 4; + DifferentValueI1:= -(3 + 4); + assert (ValueI1 = SameValueI1) + report "Values of lower precedence associated before those of higher precedence.(9)"; + assert (ValueI1 /= DifferentValueI1) + report "Values of lower precedence associated before those of higher precedence.(10)"; + + -- "*" operator. + ValueI2 := 3 + 4 * 5; + SameValueI2 := 3 + (4 * 5); + DifferentValueI2:= (3 + 4) * 5; + assert (ValueI2 = SameValueI2) + report "Values of lower precedence associated before those of higher precedence.(13)"; + assert (ValueI2 /= DifferentValueI2) + report "Values of lower precedence associated before those of higher precedence.(14)"; + + -- "/" operator. + ValueI3 := 5 + 10 / 5; + SameValueI3 := 5 + (10 / 5); + DifferentValueI3:= (5 + 10) / 5; + assert (ValueI3 = SameValueI3) + report "Values of lower precedence associated before those of higher precedence.(15)"; + assert (ValueI3 /= DifferentValueI3) + report "Values of lower precedence associated before those of higher precedence.(16)"; + + -- "mod" operator. + ValueI4 := 4 + 11 mod 3; + SameValueI4 := 4 + (11 mod 3); + DifferentValueI4:= (4 + 11) mod 3; + assert (ValueI4 = SameValueI4) + report "Values of lower precedence associated before those of higher precedence.(17)"; + assert (ValueI4 /= DifferentValueI4) + report "Values of lower precedence associated before those of higher precedence.(18)"; + + -- "rem" operator. + ValueI5 := 4 + 11 rem 3; + SameValueI5 := 4 + (11 rem 3); + DifferentValueI5:= (4 + 11) rem 3; + assert (ValueI5 = SameValueI5) + report "Values of lower precedence associated before those of higher precedence.(19)"; + assert (ValueI5 /= DifferentValueI5) + report "Values of lower precedence associated before those of higher precedence.(20)"; + + -- "**" operator. + ValueI6 := 3 * 4 ** 2; + SameValueI6 := 3 * (4 ** 2); + DifferentValueI6:= (3 * 4) ** 2; + assert (ValueI6 = SameValueI6) + report "Values of lower precedence associated before those of higher precedence.(21)"; + assert (ValueI6 /= DifferentValueI6) + report "Values of lower precedence associated before those of higher precedence.(22)"; + + -- "abs" operator. + ValueI7 := abs (-5) * (-7); + SameValueI7 := (abs (-5)) * (-7); + DifferentValueI7:= abs((-5) * (-7)); + assert (ValueI7 = SameValueI7) + report "Values of lower precedence associated before those of higher precedence.(23)"; + assert (ValueI7 /= DifferentValueI7) + report "Values of lower precedence associated before those of higher precedence.(24)"; + + wait for 5 ns; + + assert NOT( (ValueB1) and + (ValueB2) and + (ValueB3) and + (ValueB4) and + (ValueI1 = SameValueI1) and + (ValueI1 /= DifferentValueI1) and + (ValueI2 = SameValueI2) and + (ValueI2 /= DifferentValueI2) and + (ValueI3 = SameValueI3) and + (ValueI3 /= DifferentValueI3) and + (ValueI4 = SameValueI4) and + (ValueI4 /= DifferentValueI4) and + (ValueI5 = SameValueI5) and + (ValueI5 /= DifferentValueI5) and + (ValueI6 = SameValueI6) and + (ValueI6 /= DifferentValueI6) and + (ValueI7 = SameValueI7) and + (ValueI7 /= DifferentValueI7) ) + report "***PASSED TEST: c07s02b00x00p09n01i01910" + severity NOTE; + assert ( (ValueB1) and + (ValueB2) and + (ValueB3) and + (ValueB4) and + (ValueI1 = SameValueI1) and + (ValueI1 /= DifferentValueI1) and + (ValueI2 = SameValueI2) and + (ValueI2 /= DifferentValueI2) and + (ValueI3 = SameValueI3) and + (ValueI3 /= DifferentValueI3) and + (ValueI4 = SameValueI4) and + (ValueI4 /= DifferentValueI4) and + (ValueI5 = SameValueI5) and + (ValueI5 /= DifferentValueI5) and + (ValueI6 = SameValueI6) and + (ValueI6 /= DifferentValueI6) and + (ValueI7 = SameValueI7) and + (ValueI7 /= DifferentValueI7) ) + report "***FAILED TEST: c07s02b00x00p09n01i01910 - Operators of higher precedence are associated with their operands before operators of lower precedence." + severity ERROR; + wait; + END PROCESS TESTING; + +END c07s02b00x00p09n01i01910arch; |