File: enum4.adb

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (59 lines) | stat: -rw-r--r-- 1,680 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
--  { dg-do run }

procedure Enum4 is

   procedure Assert (Expected, Actual : String) is
   begin
      if Expected /= Actual then
         raise Program_Error;
      end if;
   end Assert;

   procedure Test_1 is
      type Test_Enum is (Enum_1,     Enum_2);
      for Test_Enum use (Enum_1=> 8, Enum_2=> 12);

      Enum_Values : constant array (Test_Enum) of Natural := (8, 12);

      type Test_Enum_Rep is range 1..12;
      Tmp_Test_Enum_Rep : Test_Enum_Rep;
   begin
      Tmp_Test_Enum_Rep := Test_Enum'Enum_Rep (Test_Enum'First);
      Assert (" 8", Tmp_Test_Enum_Rep'Img);

      for Enum in Test_Enum loop
         Tmp_Test_Enum_Rep := Test_Enum'Enum_Rep (Enum);
         Assert (Enum_Values (Enum)'Img, Tmp_Test_Enum_Rep'Img);
      end loop;
   end Test_1;

   procedure Test_2 is
      type Test_Enum is (Enum_1);
      for Test_Enum use (Enum_1=> 2);

      type Test_Enum_Rep_Full is range 0..2;
      subtype Test_Enum_Rep_Short is
        Test_Enum_Rep_Full range 2..Test_Enum_Rep_Full'Last;

      Tmp_Test_Enum_Rep_Full  : Test_Enum_Rep_Full;
      Tmp_Test_Enum_Rep_Short : Test_Enum_Rep_Short;

   begin
      Tmp_Test_Enum_Rep_Short := Test_Enum'Enum_Rep (Test_Enum'First);
      Assert (" 2", Tmp_Test_Enum_Rep_Short'Img);

      for Enum in Test_Enum loop
         Tmp_Test_Enum_Rep_Full := Test_Enum'Enum_Rep (Enum);
         Assert (" 2", Tmp_Test_Enum_Rep_Short'Img);
      end loop;

      for Enum in Test_Enum range Test_Enum'First .. Test_Enum'Last loop
         Tmp_Test_Enum_Rep_Short := Test_Enum'Enum_Rep(Enum);  --  Test #2
         Assert (" 2", Tmp_Test_Enum_Rep_Short'Img);
      end loop;
   end Test_2;

begin
   Test_1;
   Test_2;
end;