summaryrefslogtreecommitdiff
path: root/testsuite/vests/vhdl-93/billowitch/compliant/tc1637.vhd
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/vests/vhdl-93/billowitch/compliant/tc1637.vhd')
-rw-r--r--testsuite/vests/vhdl-93/billowitch/compliant/tc1637.vhd238
1 files changed, 238 insertions, 0 deletions
diff --git a/testsuite/vests/vhdl-93/billowitch/compliant/tc1637.vhd b/testsuite/vests/vhdl-93/billowitch/compliant/tc1637.vhd
new file mode 100644
index 0000000..0db0ff8
--- /dev/null
+++ b/testsuite/vests/vhdl-93/billowitch/compliant/tc1637.vhd
@@ -0,0 +1,238 @@
+
+-- 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: tc1637.vhd,v 1.2 2001-10-26 16:29:42 paw Exp $
+-- $Revision: 1.2 $
+--
+-- ---------------------------------------------------------------------
+
+package c08s12b00x00p05n01i01637pkg is
+
+ -- type declarations
+ type ENUM is ( E1, E2, E3 );
+ type DISTANCE is range 0 to 1E9
+ units
+ -- Base units.
+ A; -- angstrom
+
+ -- Metric lengths.
+ nm = 10 A; -- nanometer
+ um = 1000 nm; -- micrometer (or micron)
+ mm = 1000 um; -- millimeter
+ cm = 10 mm; -- centimeter
+
+ -- English lengths.
+ mil = 254000 A; -- mil
+ inch = 1000 mil; -- inch
+ end units;
+ type ANARRAY is ARRAY( 0 to 1 ) of REAL;
+ type ARECORD is
+ RECORD
+ Field1 : INTEGER;
+ Field2 : BOOLEAN;
+ end record;
+
+ -- constant declarations
+ CONSTANT CONSTI : INTEGER := 47;
+ CONSTANT CONSTR : REAL := 47.0;
+ CONSTANT CONSTE : ENUM := E1;
+ CONSTANT CONSTD : DISTANCE := 1 A;
+ CONSTANT CONSTT : TIME := 1 hr;
+ CONSTANT CONSTB : BIT := '1';
+ CONSTANT CONSTS : SEVERITY_LEVEL := WARNING;
+ CONSTANT CONSTBO : BOOLEAN := FALSE;
+ CONSTANT CONSTA : ANARRAY := ( 3.1415926, 4.0 );
+ CONSTANT CONSTRE : ARECORD := ( Field1 => 2, Field2 => TRUE );
+
+ -- function declarations.
+ function funcI return INTEGER;
+ function funcR return REAL;
+ function funcE return ENUM;
+ function funcD return DISTANCE;
+ function funcT return TIME;
+ function funcB return BIT;
+ function funcS return SEVERITY_LEVEL;
+ function funcBO return BOOLEAN;
+ function funcA return ANARRAY;
+ function funcRE return ARECORD;
+
+end c08s12b00x00p05n01i01637pkg;
+
+package body c08s12b00x00p05n01i01637pkg is
+
+ function funcI return INTEGER is
+ begin
+ return( CONSTI );
+ end;
+
+ function funcR return REAL is
+ begin
+ return( CONSTR );
+ end;
+
+ function funcE return ENUM is
+ begin
+ return( CONSTE );
+ end;
+
+ function funcD return DISTANCE is
+ begin
+ return( CONSTD );
+ end;
+
+ function funcT return TIME is
+ begin
+ return( CONSTT );
+ end;
+
+ function funcB return BIT is
+ begin
+ return( CONSTB );
+ end;
+
+ function funcS return SEVERITY_LEVEL is
+ begin
+ return( CONSTS );
+ end;
+
+ function funcBO return BOOLEAN is
+ begin
+ return( CONSTBO );
+ end;
+
+ function funcA return ANARRAY is
+ begin
+ return( CONSTA );
+ end;
+
+ function funcRE return ARECORD is
+ begin
+ return( CONSTRE );
+ end;
+
+end c08s12b00x00p05n01i01637pkg;
+
+use work.c08s12b00x00p05n01i01637pkg.all;
+ENTITY c08s12b00x00p05n01i01637ent IS
+END c08s12b00x00p05n01i01637ent;
+
+ARCHITECTURE c08s12b00x00p05n01i01637arch OF c08s12b00x00p05n01i01637ent IS
+
+BEGIN
+ TESTING: PROCESS
+ -- variable declarations.
+ VARIABLE VARI : INTEGER;
+ VARIABLE VARR : REAL;
+ VARIABLE VARE : ENUM;
+ VARIABLE VARD : DISTANCE;
+ VARIABLE VART : TIME;
+ VARIABLE VARB : BIT;
+ VARIABLE VARS : SEVERITY_LEVEL;
+ VARIABLE VARBO : BOOLEAN;
+ VARIABLE VARA : ANARRAY;
+ VARIABLE VARRE : ARECORD;
+ BEGIN
+ -- Call each function, verify that it returns the proper value.
+ assert (funcI = CONSTI);
+ assert (funcR = CONSTR);
+ assert (funcE = CONSTE);
+ assert (funcD = CONSTD);
+ assert (funcT = CONSTT);
+ assert (funcB = CONSTB);
+ assert (funcS = CONSTS);
+ assert (funcBO = CONSTBO);
+ assert (funcA = CONSTA);
+ assert (funcRE = CONSTRE);
+
+ -- Assign function values to variables, make sure they're OK.
+ VARI := funcI;
+ VARR := funcR;
+ VARE := funcE;
+ VARD := funcD;
+ VART := funcT;
+ VARB := funcB;
+ VARS := funcS;
+ VARBO := funcBO;
+ VARA := funcA;
+ VARRE := funcRE;
+ assert (VARI = CONSTI);
+ assert (VARR = CONSTR);
+ assert (VARE = CONSTE);
+ assert (VARD = CONSTD);
+ assert (VART = CONSTT);
+ assert (VARB = CONSTB);
+ assert (VARS = CONSTS);
+ assert (VARBO = CONSTBO);
+ assert (VARA = CONSTA);
+ assert (VARRE = CONSTRE);
+
+ assert NOT((funcI = CONSTI) and
+ (funcR = CONSTR) and
+ (funcE = CONSTE) and
+ (funcD = CONSTD) and
+ (funcT = CONSTT) and
+ (funcB = CONSTB) and
+ (funcS = CONSTS) and
+ (funcBO = CONSTBO) and
+ (funcA = CONSTA) and
+ (funcRE = CONSTRE) and
+ (VARI = CONSTI) and
+ (VARR = CONSTR) and
+ (VARE = CONSTE) and
+ (VARD = CONSTD) and
+ (VART = CONSTT) and
+ (VARB = CONSTB) and
+ (VARS = CONSTS) and
+ (VARBO = CONSTBO) and
+ (VARA = CONSTA) and
+ (VARRE = CONSTRE))
+ report "***PASSED TEST: c08s12b00x00p05n01i01637"
+ severity NOTE;
+ assert ((funcI = CONSTI) and
+ (funcR = CONSTR) and
+ (funcE = CONSTE) and
+ (funcD = CONSTD) and
+ (funcT = CONSTT) and
+ (funcB = CONSTB) and
+ (funcS = CONSTS) and
+ (funcBO = CONSTBO) and
+ (funcA = CONSTA) and
+ (funcRE = CONSTRE) and
+ (VARI = CONSTI) and
+ (VARR = CONSTR) and
+ (VARE = CONSTE) and
+ (VARD = CONSTD) and
+ (VART = CONSTT) and
+ (VARB = CONSTB) and
+ (VARS = CONSTS) and
+ (VARBO = CONSTBO) and
+ (VARA = CONSTA) and
+ (VARRE = CONSTRE))
+ report "***FAILED TEST: c08s12b00x00p05n01i01637 - The value of the expression defines the result returned by the function."
+ severity ERROR;
+ wait;
+ END PROCESS TESTING;
+
+END c08s12b00x00p05n01i01637arch;