* gdb.ada/fixed_points/fixed_points.adb: Add a test on overprecise
authorJerome Guitton <guitton@adacore.com>
Thu, 19 Mar 2009 14:08:50 +0000 (14:08 +0000)
committerJerome Guitton <guitton@adacore.com>
Thu, 19 Mar 2009 14:08:50 +0000 (14:08 +0000)
deltas.
* gdb.ada/fixed_points.exp: Ditto.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.ada/fixed_points.exp
gdb/testsuite/gdb.ada/fixed_points/fixed_points.adb

index 784f271d8e97331d22dccd49373179becc4e1983..a409c4d6e77c14306c27d34ea2dd22a9ebaade28 100644 (file)
@@ -1,3 +1,9 @@
+2009-03-19  Jerome Guitton  <guitton@adacore.com>
+
+       * gdb.ada/fixed_points/fixed_points.adb: Add a test on overprecise
+       deltas.
+       * gdb.ada/fixed_points.exp: Ditto.
+
 2009-03-18  Pedro Alves  <pedro@codesourcery.com>
 
        * return-nodebug.c: Don't include stdio.h.
index b3992446acb976577a22d6b2c67cd753240dbe02..abc94c8530174a31f36b287cb832bb6e2c341d29 100644 (file)
@@ -37,6 +37,8 @@ gdb_load ${binfile}
 set bp_location [gdb_get_line_number "Set breakpoint here" ${testdir}/fixed_points.adb]
 runto "fixed_points.adb:$bp_location"
 
+# Fixed point subtypes:
+
 gdb_test "print base_object" \
          "= -50" \
          "p on a fixed point type"
@@ -48,3 +50,11 @@ gdb_test "print subtype_object" \
 gdb_test "print new_type_object" \
          "= -50" \
          "p on a new fixed point type"
+
+# Overprecise delta:
+
+gdb_test "print Overprecise_Object" \
+         "= 0.13579135791"
+
+gdb_test "ptype Overprecise_Object" \
+         "= delta 0.135791"
index eab016f91aec5074079ba6b9a807244761d66b0c..f3e4cf0158e6eee3d4ccb56d67def1ddf391d95c 100644 (file)
@@ -17,22 +17,47 @@ with System;
 
 procedure Fixed_Points is
 
+   ------------
+   -- Test 1 --
+   ------------
+
+   --  Fixed point subtypes
+
    type Base_Fixed_Point_Type is
      delta 1.0 / 16.0
        range (System.Min_Int / 2) * 1.0 / 16.0 ..
        (System.Max_Int / 2) * 1.0 / 16.0;
 
-     subtype Fixed_Point_Subtype is
-       Base_Fixed_Point_Type range -50.0 .. 50.0;
+   subtype Fixed_Point_Subtype is
+     Base_Fixed_Point_Type range -50.0 .. 50.0;
+
+   type New_Fixed_Point_Type is
+     new Base_Fixed_Point_Type range -50.0 .. 50.0;
+
+   Base_Object            : Base_Fixed_Point_Type := -50.0;
+   Subtype_Object         : Fixed_Point_Subtype := -50.0;
+   New_Type_Object        : New_Fixed_Point_Type := -50.0;
+
+
+   ------------
+   -- Test 2 --
+   ------------
+
+   --  Overprecise delta
+
+   Overprecise_Delta : constant := 0.135791357913579;
+   --  delta whose significant figures cannot be stored into a long.
+
+   type Overprecise_Fixed_Point is
+     delta Overprecise_Delta range 0.0 .. 200.0;
+   for Overprecise_Fixed_Point'Small use Overprecise_Delta;
 
-     type New_Fixed_Point_Type is
-       new Base_Fixed_Point_Type range -50.0 .. 50.0;
+   Overprecise_Object : Overprecise_Fixed_Point :=
+     Overprecise_Fixed_Point'Small;
 
-     Base_Object            : Base_Fixed_Point_Type := -50.0;
-     Subtype_Object         : Fixed_Point_Subtype := -50.0;
-     New_Type_Object        : New_Fixed_Point_Type := -50.0;
 begin
    Base_Object := 1.0/16.0;   -- Set breakpoint here
    Subtype_Object := 1.0/16.0;
    New_Type_Object := 1.0/16.0;
+   Overprecise_Object := Overprecise_Fixed_Point'Small * 2;
 end Fixed_Points;