cxf2a01.a

来自「用于进行gcc测试」· A 代码 · 共 449 行 · 第 1/2 页

A
449
字号
   type Money_Ops   is array (FXF2A00.Optr_Range) of Money_Optr_Ptr;   type Money_Opnds is array (FXF2A00.Opnd_Range) of Money;   Money_Optr_Table_Cancel : Money_Ops   := ( Money_Add, Money_Add,                                              Money_Sub, Money_Add,                                              Money_Sub, Money_Sub );   Money_Optr_Table_Cumul  : Money_Ops   := ( others => Money_Sub );   Money_Opnd_Table_Cancel  : Money_Opnds := (       127.10,                                                    5600.44,                                                       0.05,                                                  189662.78,                                               226900402.99  );   Money_Opnd_Table_Cumul   : Money_Opnds := (        17.99,                                                     500.41,                                                      92.78,                                                       0.38,                                                    2942.99  );   function Test_Money_Ops is new FXF2A00.Operations_Loop     (Decimal_Fixed  => Money,      Operator_Ptr   => Money_Optr_Ptr,      Operator_Table => Money_Ops,      Operand_Table  => Money_Opnds);               ---=---=---=---=---=---=---=---=---=---=---   type Cash_Ops   is array (FXF2A00.Optr_Range) of Cash_Optr_Ptr;   type Cash_Opnds is array (FXF2A00.Opnd_Range) of Cash;   Cash_Optr_Table_Cancel : Cash_Ops   := ( Cash_Add, Cash_Add,                                            Cash_Sub, Cash_Add,                                            Cash_Sub, Cash_Sub );   Cash_Optr_Table_Cumul  : Cash_Ops   := ( others => Cash_Add );   Cash_Opnd_Table_Cancel : Cash_Opnds := (       127.10,                                                 5600.44,                                                    0.05,                                               189662.78,                                            226900402.99  );   Cash_Opnd_Table_Cumul  : Cash_Opnds := (         3.33,                                               100056.14,                                                   22.87,                                                 3901.55,                                                  111.21  );   function Test_Cash_Ops is new FXF2A00.Operations_Loop     (Decimal_Fixed  => Cash,      Operator_Ptr   => Cash_Optr_Ptr,      Operator_Table => Cash_Ops,      Operand_Table  => Cash_Opnds);               ---=---=---=---=---=---=---=---=---=---=---   type Broad_Ops   is array (FXF2A00.Optr_Range) of Broad_Optr_Ptr;   type Broad_Opnds is array (FXF2A00.Opnd_Range) of Broad;   Broad_Optr_Table_Cancel : Broad_Ops   := ( Broad_Sub, Broad_Add,                                              Broad_Add, Broad_Sub,                                              Broad_Sub, Broad_Add );   Broad_Optr_Table_Cumul  : Broad_Ops   := ( others => Broad_Sub );   Broad_Opnd_Table_Cancel : Broad_Opnds := (         1.000009092,                                              732919479.445022293,                                                  89662.787000006,                                                    660.101010133,                                                1121127.999905594  );   Broad_Opnd_Table_Cumul  : Broad_Opnds := (        12.000450223,                                                    479.430320780,                                                      0.003492096,                                                      8.112888400,                                                   1002.994937800  );   function Test_Broad_Ops is new FXF2A00.Operations_Loop     (Decimal_Fixed  => Broad,      Operator_Ptr   => Broad_Optr_Ptr,      Operator_Table => Broad_Ops,      Operand_Table  => Broad_Opnds);               ---=---=---=---=---=---=---=---=---=---=---end CXF2A01_0.CXF2A01_1;     --==================================================================--with CXF2A01_0.CXF2A01_1;with Report;procedure CXF2A01 is   package Data renames CXF2A01_0.CXF2A01_1;   use type CXF2A01_0.Micro;   use type CXF2A01_0.Money;   use type CXF2A01_0.Cash;   use type CXF2A01_0.Broad;   Micro_Cancel_Expected : constant CXF2A01_0.Micro := 0.0;   Money_Cancel_Expected : constant CXF2A01_0.Money := 0.0;   Cash_Cancel_Expected  : constant CXF2A01_0.Cash  := 0.0;   Broad_Cancel_Expected : constant CXF2A01_0.Broad := 0.0;   Micro_Cumul_Expected  : constant CXF2A01_0.Micro :=  0.075682140420000000;   Money_Cumul_Expected  : constant CXF2A01_0.Money := -21327300.00;   Cash_Cumul_Expected   : constant CXF2A01_0.Cash  :=  624570600.00;   Broad_Cumul_Expected  : constant CXF2A01_0.Broad := -9015252.535794000;   Micro_Actual   : CXF2A01_0.Micro;   Money_Actual   : CXF2A01_0.Money;   Cash_Actual    : CXF2A01_0.Cash;   Broad_Actual   : CXF2A01_0.Broad;begin   Report.Test ("CXF2A01", "Check decimal addition and subtraction");               ---=---=---=---=---=---=---=---=---=---=---   Micro_Actual := Data.Test_Micro_Ops (0.0,                                        Data.Micro_Optr_Table_Cancel,                                        Data.Micro_Opnd_Table_Cancel);   if Micro_Actual /= Micro_Cancel_Expected then      Report.Failed ("Wrong cancellation result for type Micro");   end if;                       ---=---=---=---=---=---=---   Micro_Actual := Data.Test_Micro_Ops (0.0,                                        Data.Micro_Optr_Table_Cumul,                                        Data.Micro_Opnd_Table_Cumul);   if Micro_Actual /= Micro_Cumul_Expected then      Report.Failed ("Wrong cumulation result for type Micro");   end if;               ---=---=---=---=---=---=---=---=---=---=---   Money_Actual := Data.Test_Money_Ops (0.0,                                        Data.Money_Optr_Table_Cancel,                                        Data.Money_Opnd_Table_Cancel);   if Money_Actual /= Money_Cancel_Expected then      Report.Failed ("Wrong cancellation result for type Money");   end if;                       ---=---=---=---=---=---=---   Money_Actual := Data.Test_Money_Ops (0.0,                                        Data.Money_Optr_Table_Cumul,                                        Data.Money_Opnd_Table_Cumul);   if Money_Actual /= Money_Cumul_Expected then      Report.Failed ("Wrong cumulation result for type Money");   end if;               ---=---=---=---=---=---=---=---=---=---=---   Cash_Actual := Data.Test_Cash_Ops (0.0,                                      Data.Cash_Optr_Table_Cancel,                                      Data.Cash_Opnd_Table_Cancel);   if Cash_Actual /= Cash_Cancel_Expected then      Report.Failed ("Wrong cancellation result for type Cash");   end if;                       ---=---=---=---=---=---=---   Cash_Actual := Data.Test_Cash_Ops (0.0,                                      Data.Cash_Optr_Table_Cumul,                                      Data.Cash_Opnd_Table_Cumul);   if Cash_Actual /= Cash_Cumul_Expected then      Report.Failed ("Wrong cumulation result for type Cash");   end if;               ---=---=---=---=---=---=---=---=---=---=---   Broad_Actual := Data.Test_Broad_Ops (0.0,                                        Data.Broad_Optr_Table_Cancel,                                        Data.Broad_Opnd_Table_Cancel);   if Broad_Actual /= Broad_Cancel_Expected then      Report.Failed ("Wrong cancellation result for type Broad");   end if;                       ---=---=---=---=---=---=---   Broad_Actual := Data.Test_Broad_Ops (0.0,                                        Data.Broad_Optr_Table_Cumul,                                        Data.Broad_Opnd_Table_Cumul);   if Broad_Actual /= Broad_Cumul_Expected then      Report.Failed ("Wrong cumulation result for type Broad");   end if;               ---=---=---=---=---=---=---=---=---=---=---   Report.Result;end CXF2A01;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?