diff options
author | Tristan Gingold | 2013-12-20 04:48:54 +0100 |
---|---|---|
committer | Tristan Gingold | 2013-12-20 04:48:54 +0100 |
commit | 6c3f709174e8e4d5411f851cedb7d84c38d3b04a (patch) | |
tree | bd12c79c71a2ee65899a9ade9919ec2045addef8 /testsuite/vests/vhdl-93/billowitch/compliant/tc880.vhd | |
parent | bd4aff0f670351c0652cf24e9b04361dc0e3a01c (diff) | |
download | ghdl-6c3f709174e8e4d5411f851cedb7d84c38d3b04a.tar.gz ghdl-6c3f709174e8e4d5411f851cedb7d84c38d3b04a.tar.bz2 ghdl-6c3f709174e8e4d5411f851cedb7d84c38d3b04a.zip |
Import vests testsuite
Diffstat (limited to 'testsuite/vests/vhdl-93/billowitch/compliant/tc880.vhd')
-rw-r--r-- | testsuite/vests/vhdl-93/billowitch/compliant/tc880.vhd | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/testsuite/vests/vhdl-93/billowitch/compliant/tc880.vhd b/testsuite/vests/vhdl-93/billowitch/compliant/tc880.vhd new file mode 100644 index 0000000..a73930e --- /dev/null +++ b/testsuite/vests/vhdl-93/billowitch/compliant/tc880.vhd @@ -0,0 +1,117 @@ + +-- 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: tc880.vhd,v 1.2 2001-10-26 16:30:01 paw Exp $ +-- $Revision: 1.2 $ +-- +-- --------------------------------------------------------------------- + +package c10s01b00x00p05n01i00880pkg_1 is + subtype LOWERCASE is CHARACTER range 'a' to 'z'; +end c10s01b00x00p05n01i00880pkg_1; + +use WORK.c10s01b00x00p05n01i00880pkg_1.LOWERCASE; +package c10s01b00x00p05n01i00880pkg_2 is + function ISLOWER ( TESTCHAR: in CHARACTER ) return BOOLEAN; +end c10s01b00x00p05n01i00880pkg_2; + +package body c10s01b00x00p05n01i00880pkg_2 is + function ISLOWER ( TESTCHAR: in CHARACTER ) return BOOLEAN is + begin + if ( ( TESTCHAR >= LOWERCASE'LOW ) and ( TESTCHAR <= LOWERCASE'HIGH )) then + return TRUE; + else + return FALSE; + end if; + end ISLOWER; +end c10s01b00x00p05n01i00880pkg_2; + +ENTITY c10s01b00x00p05n01i00880ent IS +END c10s01b00x00p05n01i00880ent; + +-- run through all values of character +-- and post high if lowercase, low otherwise. also, if is lowercase, +-- place value on small_letter. +use WORK.c10s01b00x00p05n01i00880pkg_1.LOWERCASE; +use WORK.c10s01b00x00p05n01i00880pkg_2.all; +ARCHITECTURE c10s01b00x00p05n01i00880arch OF c10s01b00x00p05n01i00880ent IS + signal LOWER_TRUTH : BIT := '0'; + signal SMALL_LETTER: LOWERCASE; + signal TEST_LETTER : CHARACTER; +BEGIN + TESTING: PROCESS + variable k : integer := 0; + BEGIN + + for CHAR_AT_HAND in CHARACTER'LOW to CHARACTER'HIGH loop + -- do the work + TEST_LETTER <= CHAR_AT_HAND; + if ISLOWER( CHAR_AT_HAND ) then + LOWER_TRUTH <= '1'; + SMALL_LETTER <= CHAR_AT_HAND; + else + LOWER_TRUTH <= '0'; + end if; + wait for 1 ns; + -- make sure it happened + if ( ( CHAR_AT_HAND >= LOWERCASE'LOW ) and ( CHAR_AT_HAND <= LOWERCASE'HIGH ) ) then + if (ISLOWER(CHAR_AT_HAND) = false) then + k := 1; + end if; + assert ( ISLOWER( CHAR_AT_HAND ) ) + report "ISLOWER is wrong" + severity FAILURE; + if (LOWER_TRUTH /= '1') then + k := 1; + end if; + assert ( LOWER_TRUTH = '1' ) + report "LOWER_TRUTH is wrong" + severity FAILURE; + if (CHAR_AT_HAND /= SMALL_LETTER) then + k := 1; + end if; + assert ( CHAR_AT_HAND = SMALL_LETTER ) + report "SMALL_LETTER is wrong" + severity FAILURE; + else + if (LOWER_TRUTH /= '0') then + k := 1; + end if; + assert ( LOWER_TRUTH = '0' ) + report "LOWER_TRUTH is wrong" + severity FAILURE; + end if; + end loop; + + assert NOT( k=0 ) + report "***PASSED TEST: c10s01b00x00p05n01i00880" + severity NOTE; + assert ( k=0 ) + report "***FAILED TEST: c10s01b00x00p05n01i00880 - A declaration region is formed by a package declaration together with the corresponding body." + severity ERROR; + wait; + END PROCESS TESTING; + +END c10s01b00x00p05n01i00880arch; |