with Ada.Text_IO; use Ada.Text_IO;
with Ada.Strings.Unbounded;
with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
with HTML;
with Geometric_Algebra_Generic;
with Command_Line_Generic;
procedure Test_Geometric_Algebra is
use Ada.Strings.Unbounded;
package Geometric_Algebra is new Geometric_Algebra_Generic (Dimension => 3);
use Geometric_Algebra;
function Create_Table_for_Different_Dimension (Dimension : Natural) return Unbounded_String is
package Local_Geometric_Algebra is new Geometric_Algebra_Generic (Dimension);
subtype String_Matrix_Type is HTML.String_Matrix_Type;
String_Matrix : String_Matrix_Type := Local_Geometric_Algebra.Prepare_Base_Name_Table_HTML;
Table : Unbounded_String := Null_Unbounded_String;
begin
Table := HTML.Table (String_Matrix, Head_Line => True, Mark_first_Column => True);
return Table;
end Create_Table_for_Different_Dimension;
procedure Several_Base_Vector_Tables_HTML (File_Name : String := "several_base_vector_tables.html") is
Out_File : File_Type;
HTML_Body : Unbounded_String := Null_Unbounded_String;
Link_Table : Unbounded_String := Null_Unbounded_String;
begin
Link_Table := To_Unbounded_String ("<table class=" & Quotation & "link" & Quotation & ">" & LF &
"<tr>" & LF &
"<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 &
"<td></td>" & LF &
"</tr>" & LF &
"</table>");
Create (File => Out_File, Name => File_Name);
Append (HTML_Body, Link_Table);
for Dimension in 2..10 loop
Append (HTML_Body, To_Unbounded_String ("<h2>" & integer'image(Dimension) & " Dimensions" & "</h2>" & LF) );
Append (HTML_Body, Create_Table_for_Different_Dimension(Dimension));
Append (HTML_Body, To_Unbounded_String ("<br>" & LF ));
end loop;
Put_Line (Out_File, To_String (HTML.HTML_Document (Body_Contens => HTML_Body)));
Close (Out_File);
end Several_Base_Vector_Tables_HTML;
type Command_Type is
(Show_Canonic_Base,
Create_Base_Vector_Table_HTML,
Several_Base_Vector_Tables_HTML,
Create_Base_Vector_Table_LaTex,
Create_Base_Vector_Table_LaTex_Forum,
Multiplikation_Table_HTML,
Multiplikation_Table_HTML_Short_Form,
Multiplikation_Table_Latex,
Multiplikation_Table_Latex_Short_Form,
Test_Product,
Exit_Program);
procedure Test_Product_1;
function Handle_Command (Command : Command_Type) return Boolean is
begin
case Command is
when Show_Canonic_Base =>
New_Line;
Put_Multi_Vector (Canonic_Base);
when Create_Base_Vector_Table_HTML =>
Create_Base_Vector_Table_HTML;
when Several_Base_Vector_Tables_HTML =>
Several_Base_Vector_Tables_HTML;
when Create_Base_Vector_Table_LaTex =>
Create_Base_Vector_Table_LaTex ;
when Create_Base_Vector_Table_LaTex_Forum =>
Create_Base_Vector_Table_LaTex(Formular_Elements => False);
when Multiplikation_Table_HTML =>
Create_Multipikation_Table_HTML;
when Multiplikation_Table_HTML_Short_Form =>
Create_Multipikation_Table_HTML_Short_Form;
when Multiplikation_Table_Latex =>
Create_Multiplication_Table_Latex;
when Multiplikation_Table_Latex_Short_Form =>
Create_Multiplication_Table_Latex_Short_Form;
when Test_Product =>
Test_Product_1;
when Exit_Program =>
return False;
end case;
return True;
end Handle_Command;
package Command_Line is new Command_Line_Generic (Command_Type => Command_Type, Handle_Command => Handle_Command);
procedure Test_Product_1 is
Product, First, Second : Multi_Vector_Type := Zero_Multivector;
begin
Put_Line ("begin Test_Product");
Set_Element (First, 1, 3.0);
Set_Element (Second, 2, 2.5);
Product := First * Second;
Put_Line (First);
New_Line;
Put_Line (Second);
New_Line;
Put_Line (Product);
end Test_Product_1;
begin
Put_Line ("begin Test_Geometric_Algebra");
Put_Line ("Dimension: " & Integer'image (Geometric_Algebra.Get_Dimension));
Command_Line.Get_Command;
Put_Line ("end Test_Geometric_Algebra");
end Test_Geometric_Algebra;