1. with Ada.Text_IO; use Ada.Text_IO; 
  2. with Ada.Strings.Unbounded; 
  3. with Ada.Characters.Latin_1; use Ada.Characters.Latin_1; 
  4. with HTML; 
  5. with Geometric_Algebra_Generic; 
  6. with Command_Line_Generic; 
  7. procedure Test_Geometric_Algebra is 
  8.  
  9.    use Ada.Strings.Unbounded; 
  10.  
  11.    package Geometric_Algebra is new Geometric_Algebra_Generic (Dimension => 3); 
  12.    use Geometric_Algebra; 
  13.  
  14. -------------------------------------------------------------------------------- 
  15.    function Create_Table_for_Different_Dimension (Dimension : Natural) return Unbounded_String is 
  16.       package Local_Geometric_Algebra is new Geometric_Algebra_Generic (Dimension); 
  17.       subtype String_Matrix_Type is HTML.String_Matrix_Type; 
  18.       String_Matrix : String_Matrix_Type := Local_Geometric_Algebra.Prepare_Base_Name_Table_HTML; 
  19.       Table : Unbounded_String := Null_Unbounded_String; 
  20.    begin 
  21.       Table := HTML.Table (String_Matrix, Head_Line => True, Mark_first_Column => True); 
  22.       return Table; 
  23.    end Create_Table_for_Different_Dimension; 
  24. -------------------------------------------------------------------------------- 
  25.  
  26. -------------------------------------------------------------------------------- 
  27.    procedure Several_Base_Vector_Tables_HTML (File_Name : String := "several_base_vector_tables.html") is 
  28.       Out_File  : File_Type; 
  29.       HTML_Body : Unbounded_String := Null_Unbounded_String; 
  30.       Link_Table : Unbounded_String := Null_Unbounded_String; 
  31.  
  32.    begin 
  33.       Link_Table := To_Unbounded_String ("<table  class=" & Quotation & "link" & Quotation & ">" & LF & 
  34.         "<tr>" & LF & 
  35.         "<td><p class=" & Quotation & "link_button" & Quotation &"><a href=" & Quotation & "../geometric_algebra.html" & Quotation & "style=" & Quotation & "white-space:nowrap" & Quotation & ">Geometric Algebra</a></p></td>" & LF & 
  36.         "<td></td>" & LF & 
  37.         "</tr>" & LF & 
  38.         "</table>"); 
  39.       Create (File => Out_File, Name => File_Name); 
  40.       Append (HTML_Body, Link_Table); 
  41.       for Dimension in 2..10 loop 
  42.          Append (HTML_Body, To_Unbounded_String ("<h2>" & integer'image(Dimension) & " Dimensions" & "</h2>" & LF) ); 
  43.          Append (HTML_Body, Create_Table_for_Different_Dimension(Dimension)); 
  44.          Append (HTML_Body, To_Unbounded_String ("<br>" & LF )); 
  45.       end loop; 
  46.       Put_Line (Out_File, To_String (HTML.HTML_Document (Body_Contens => HTML_Body))); 
  47.       Close (Out_File); 
  48.    end Several_Base_Vector_Tables_HTML; 
  49. -------------------------------------------------------------------------------- 
  50.  
  51.    type Command_Type is 
  52.      (Show_Canonic_Base, 
  53.       Create_Base_Vector_Table_HTML, 
  54.       Several_Base_Vector_Tables_HTML, 
  55.       Create_Base_Vector_Table_LaTex, 
  56.       Create_Base_Vector_Table_LaTex_Forum, 
  57.       Multiplikation_Table_HTML, 
  58.       Multiplikation_Table_HTML_Short_Form, 
  59.       Multiplikation_Table_Latex, 
  60.       Multiplikation_Table_Latex_Short_Form, 
  61.       Test_Product, 
  62.       Exit_Program); 
  63.  
  64.    procedure Test_Product_1; 
  65.  
  66.    function Handle_Command (Command : Command_Type) return Boolean is 
  67.    begin 
  68.       case Command is 
  69.          when Show_Canonic_Base => 
  70.             New_Line; 
  71.             Put_Multi_Vector (Canonic_Base); 
  72.          when Create_Base_Vector_Table_HTML => 
  73.             Create_Base_Vector_Table_HTML; 
  74.          when Several_Base_Vector_Tables_HTML => 
  75.             Several_Base_Vector_Tables_HTML; 
  76.          when Create_Base_Vector_Table_LaTex => 
  77.             Create_Base_Vector_Table_LaTex ; 
  78.          when Create_Base_Vector_Table_LaTex_Forum => 
  79.             Create_Base_Vector_Table_LaTex(Formular_Elements => False); 
  80.          when Multiplikation_Table_HTML => 
  81.             Create_Multipikation_Table_HTML; 
  82.          when Multiplikation_Table_HTML_Short_Form => 
  83.             Create_Multipikation_Table_HTML_Short_Form; 
  84.          when Multiplikation_Table_Latex => 
  85.             Create_Multiplication_Table_Latex; 
  86.          when Multiplikation_Table_Latex_Short_Form => 
  87.             Create_Multiplication_Table_Latex_Short_Form; 
  88.          when Test_Product => 
  89.             Test_Product_1; 
  90.          when Exit_Program => 
  91.             return False; 
  92.       end case; 
  93.       return True; 
  94.    end Handle_Command; 
  95.  
  96.    package Command_Line is new Command_Line_Generic (Command_Type => Command_Type, Handle_Command => Handle_Command); 
  97.  
  98.    procedure Test_Product_1 is 
  99.       Product, First, Second : Multi_Vector_Type := Zero_Multivector; 
  100.    begin 
  101.       Put_Line ("begin Test_Product"); 
  102.       Set_Element (First, 1, 3.0); 
  103.       Set_Element (Second, 2, 2.5); 
  104.       Product := First * Second; 
  105.       Put_Line (First); 
  106.       New_Line; 
  107.       Put_Line (Second); 
  108.       New_Line; 
  109.       Put_Line (Product); 
  110.    end Test_Product_1; 
  111.  
  112. begin 
  113.    Put_Line ("begin Test_Geometric_Algebra"); 
  114.    Put_Line ("Dimension: " & Integer'image (Geometric_Algebra.Get_Dimension)); 
  115.    Command_Line.Get_Command; 
  116.    Put_Line ("end   Test_Geometric_Algebra"); 
  117. -------------------------------------------------------------------------------- 
  118. end Test_Geometric_Algebra; ---------------------------------------------------- 
  119. --------------------------------------------------------------------------------