Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  test_new.tst   Sprache: unbekannt

 
Spracherkennung für: .tst vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

gap> START_TEST( "Test of the 'openmath' package" );

# Some examples from file openmath/examples
gap> 
gap> stream := InputTextFile(Filename(
>         DirectoriesPackageLibrary("openmath","tst"),"test3.omt"));;
gap> OMGetObject(stream);
912873912381273891
gap> OMGetObject(stream);
E(4)
gap> OMGetObject(stream);
true
gap> OMGetObject(stream);
false
gap> OMGetObject(stream);
"LAMBDA"
gap> OMGetObject(stream);
"dummy1"
gap> OMGetObject(stream);
"string1"
gap> OMGetObject(stream);
(1,2,3)
gap> OMGetObject(stream);
Group([ (1,2,3) ])
gap> OMGetObject(stream);
(1,2,3)
gap> CloseStream( stream );

# similar, for file tst/test3.bin: binary encoding
gap> stream := InputTextFile(Filename(
>         DirectoriesPackageLibrary("openmath","tst"),"test3.bin"));;
gap> OMGetObject(stream);
912873912381273891
gap> OMGetObject(stream);
E(4)
gap> OMGetObject(stream);
true
gap> OMGetObject(stream);
false
gap> OMGetObject(stream);
"LAMBDA"
gap> OMGetObject(stream);
"dummy1"
gap> OMGetObject(stream);
"string1"
gap> OMGetObject(stream);
(1,2,3)
gap> OMGetObject(stream);
Group([ (1,2,3) ])
gap> OMGetObject(stream);
(1,2,3)
gap> CloseStream( stream );

# similar, for file tst/test4.out: gpipe encoding
gap> stream := InputTextFile(Filename(
>         DirectoriesPackageLibrary("openmath","tst"),"test4.out"));;
gap> OMgetObjectByteStream(stream);
912873912381273891
gap> OMgetObjectByteStream(stream);
E(4)
gap> CloseStream( stream );

# similar, for file tst/test5.omt
gap> stream := InputTextFile(Filename(DirectoriesPackageLibrary("openmath","tst"),"test5.omt"));;
gap> OMGetObject(stream);
CharacterTable( Alt( [ 1 .. 3 ] ) )
gap> CloseStream( stream );

# similar, for file tst/test6.omt
gap> 
gap> stream := InputTextFile(Filename(DirectoriesPackageLibrary("openmath","tst"),"test6.omt"));;
gap> OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR;
""
""
""
gap> a;
1
gap> OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR;
1
""
""
gap> OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR; OM_GAP_OUTPUT_STR := "";;
true
"3"
""
gap> a;
3
gap> OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR;
true
"3"
""
gap> OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR; OM_GAP_OUTPUT_STR := "";; OM_GAP_ERROR_STR := "";;
true
""
""
gap> OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR;
""
""
""
gap> OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR;
""
""
""

# there are some objects left on stream, but they are character table examples
gap> CloseStream( stream );

# similar, for file tst/test_new.omt
gap> stream := InputTextFile(Filename(DirectoriesPackageLibrary("openmath","tst"),"test_new.omt"));;
gap> OMGetObject(stream);
true
gap> OMGetObject(stream);
[ [ 1922 ], [ 4350 ] ]
gap> OMGetObject(stream);
6
gap> OMGetObject(stream);
9
gap> OMGetObject(stream);
1
gap> OMGetObject(stream);
E(4)
gap> OMGetObject(stream);
infinity
gap> OMGetObject(stream);
369 ]
gap> OMGetObject(stream);
369 ]
gap> OMGetObject(stream);
369 ]
gap> OMGetObject(stream);
0
gap> OMGetObject(stream);
true
gap> OMGetObject(stream);
true
gap> OMGetObject(stream);
10/9
gap> CloseStream( stream );

# Tests of conversion from GAP to OpenMath
gap> g := SymmetricGroup(5);
Sym( [ 1 .. 5 ] )
gap> t := "";
""
gap> s := OutputTextString(t, true);
OutputTextString(0)
gap> w := OpenMathXMLWriter( s );
<OpenMath XML writer to OutputTextString(0)>
gap> OMPutObject(w, g);
gap> CloseStream(s);
gap> 
gap> s := InputTextString(t);
InputTextString(0,400)
gap> g2 := OMGetObject(s);
Group([ (1,2,3,4,5), (1,2) ])
gap> CloseStream(s);
gap> g2 = g;
true
gap> 
gap> g := SymmetricGroup(5);
Sym( [ 1 .. 5 ] )
gap> OMPrint(g);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="permgp1" name="group"/>
  <OMS cd="permutation1" name="right_compose"/>
  <OMA>
   <OMS cd="permut1" name="permutation"/>
   <OMI>2</OMI>
   <OMI>3</OMI>
   <OMI>4</OMI>
   <OMI>5</OMI>
   <OMI>1</OMI>
  </OMA>
  <OMA>
   <OMS cd="permut1" name="permutation"/>
   <OMI>2</OMI>
   <OMI>1</OMI>
  </OMA>
 </OMA>
</OMOBJ>

# test with the different kinds of stream
# OutputTextFile, InputTextFile
gap> tmpdir := DirectoryTemporary();;
gap> s := OutputTextFile( Filename( tmpdir, "test" ), false );;
gap> w := OpenMathXMLWriter( s );;
gap> OMPutObject( w, 123 );
gap> OMPutObject( w, false );
gap> OMPutObject( w, "OutputTextFile, InputTextFile" );
gap> CloseStream( s );
gap> 
gap> s := InputTextFile( Filename( tmpdir, "test" ) );;
gap> OMGetObject( s );
123
gap> OMGetObject( s );
false
gap> OMGetObject( s );
"OutputTextFile, InputTextFile"
gap> CloseStream( s );
gap> 
gap> RemoveFile( Filename( tmpdir, "test" ) );
true

## OutputTextUser,  InputTextUser
# how do one tests OutputTextUser?
# how do one tests InputTextUser?
## OutputTextString, InputTextString
gap> test_string := "";
""
gap> s := OutputTextString( test_string, false );
OutputTextString(0)
gap> w := OpenMathXMLWriter( s );;
gap> OMPutObject( w, 123 );
gap> OMPutObject( w, false );
gap> OMPutObject( w, "OutputTextString, InputTextString" );
gap> CloseStream( s );
gap> test_string;
"<OMOBJ xmlns=\"http://www.openmath.org/OpenMath\" version=\"2.0\">\n\t<OMI>12\
3</OMI>\n</OMOBJ>\n<OMOBJ xmlns=\"http://www.openmath.org/OpenMath\" version=\
\"2.0\">\n\t<OMS cd=\"logic1\" name=\"false\"/>\n</OMOBJ>\n<OMOBJ xmlns=\"http\
://www.openmath.org/OpenMath\" version=\"2.0\">\n\t<OMSTR>OutputTextString, In\
putTextString</OMSTR>\n</OMOBJ>\n"
gap> s := InputTextString( test_string );
InputTextString(0,315)
gap> OMGetObject( s );
123
gap> OMGetObject( s );
false
gap> OMGetObject( s );
"OutputTextString, InputTextString"
gap> CloseStream( s );

# OutputTextNone
gap> s := OutputTextNone(  );
OutputTextNone()
gap> w := OpenMathXMLWriter( s );;
gap> OMPutObject( w, 123 );
gap> OMPutObject( w, false );
gap> OMPutObject( w, "OutputTextNone" );
gap> CloseStream( s );
gap> 

# miscellaneous tests
# test with binary encoding and InputTextString
gap> s := InputTextString( "\030\020\b\007\cminmax1max\020\b\004\cset1set\>\>\>\t\>\005\021\021\031" );
InputTextString(0,35)
gap> OMGetObject(s);
9
gap> CloseStream(s);

# test with gpipe encoding and InputTextString
gap> gpipe_string := List( [ 24168109105110109971204925510997120255168115
10111649255115101116255249255257255253255171725 ], CHAR_INT );;
gap> s := InputTextString( gpipe_string );
InputTextString(0,38)
gap> OMgetObjectByteStream(s);
9
gap> CloseStream(s);

# test of a long object
gap> OMTest(10^4000);
true

# test of a hexadecimal encoded integer
gap> s := InputTextString( "<OMOBJ xmlns=\"http://www.openmath.org/OpenMath\" version=\"2.0\"><OMI>x10ab2937fed2837a028374</OMI></OMOBJ>" );
InputTextString(0,104)
gap> OMGetObject(s);
20151098133805576518534004
gap> CloseStream(s);

# test of escaped XML chars
gap> s := InputTextString( "<OMOBJ xmlns=\"http://www.openmath.org/OpenMath\" version=\"2.0\"> <OMSTR><&>"'</OMSTR> </OMOBJ>" );
InputTextString(0,112)
gap> OMGetObject(s);
"<&>\"'"
gap> CloseStream(s);

# test of a strings with all the chars
gap> OMTest( List( [4..127], CHAR_INT ) );
true

# test that the strings are returned in string representation
gap> stream := InputTextString( "<OMOBJ xmlns=\"http://www.openmath.org/OpenMath\" version=\"2.0\"><OMSTR></OMSTR></OMOBJ> <OMOBJ xmlns=\"http://www.openmath.org/OpenMath\" version=\"2.0\"><OMSTR>ciao</OMSTR></OMOBJ>" );;
gap> IsStringRep( OMGetObject( stream ) );
true
gap> IsStringRep( OMGetObject( stream ) );
true
gap> CloseStream(stream);

### test of Hasse
gap> d := Domain(["0","a","b","c","1"]);;
gap> Elements(d);
[ "0", "1", "a", "b", "c" ]
gap> Size(d);
5
gap> r := BinaryRelationByElements(d,
> [ DirectProductElement(["0","a"]),
> DirectProductElement(["0","b"]),
> DirectProductElement(["0","c"]),
> DirectProductElement(["a","1"]),
> DirectProductElement(["b","1"]),
> DirectProductElement(["c","1"])]);;
gap> p := TransitiveClosureBinaryRelation(ReflexiveClosureBinaryRelation(r));;
gap> IsPartialOrderBinaryRelation(p);
true
gap> h := HasseDiagram(p);;

# the bug was here.
gap> Elements(UnderlyingRelation(h));
[ DirectProductElement( [ "0", "a" ] ), DirectProductElement( [ "0", "b" ] ), 
  DirectProductElement( [ "0", "c" ] ), DirectProductElement( [ "a", "1" ] ), 
  DirectProductElement( [ "b", "1" ] ), DirectProductElement( [ "c", "1" ] ) ]

### test for the various supported objects
gap> OMPrint(Rationals);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMS cd="setname1" name="Q"/>
</OMOBJ>
gap> OMTest(Rationals);
true
gap> OMPrint(Integers);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMS cd="setname1" name="Z"/>
</OMOBJ>
gap> OMTest(Integers);
true
gap> OMPrint([3..10]);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="interval1" name="integer_interval"/>
  <OMI>3</OMI>
  <OMI>10</OMI>
 </OMA>
</OMOBJ>
gap> OMTest([3..10]);
true
gap> OMPrint([[11,12],[21,22]]);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="linalg2" name="matrix"/>
  <OMA>
   <OMS cd="linalg2" name="matrixrow"/>
   <OMI>11</OMI>
   <OMI>12</OMI>
  </OMA>
  <OMA>
   <OMS cd="linalg2" name="matrixrow"/>
   <OMI>21</OMI>
   <OMI>22</OMI>
  </OMA>
 </OMA>
</OMOBJ>
gap> OMTest([[11,12],[21,22]]);
true
gap> OMPrint(NonnegativeIntegers);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMS cd="setname1" name="N"/>
</OMOBJ>
gap> OMTest(NonnegativeIntegers);
true
gap> OMPrint(AlternatingGroup(6));
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="permgp1" name="group"/>
  <OMS cd="permutation1" name="right_compose"/>
  <OMA>
   <OMS cd="permut1" name="permutation"/>
   <OMI>2</OMI>
   <OMI>3</OMI>
   <OMI>4</OMI>
   <OMI>5</OMI>
   <OMI>1</OMI>
  </OMA>
  <OMA>
   <OMS cd="permut1" name="permutation"/>
   <OMI>1</OMI>
   <OMI>2</OMI>
   <OMI>3</OMI>
   <OMI>5</OMI>
   <OMI>6</OMI>
   <OMI>4</OMI>
  </OMA>
 </OMA>
</OMOBJ>
gap> OMTest(AlternatingGroup(6));
true
gap> OMPrint( Group( [[0,1],[-1,0]],[[1,1],[0,1]] ) );
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="group1" name="group_by_generators"/>
  <OMA>
   <OMS cd="linalg2" name="matrix"/>
   <OMA>
    <OMS cd="linalg2" name="matrixrow"/>
    <OMI>0</OMI>
    <OMI>1</OMI>
   </OMA>
   <OMA>
    <OMS cd="linalg2" name="matrixrow"/>
    <OMI>-1</OMI>
    <OMI>0</OMI>
   </OMA>
  </OMA>
  <OMA>
   <OMS cd="linalg2" name="matrix"/>
   <OMA>
    <OMS cd="linalg2" name="matrixrow"/>
    <OMI>1</OMI>
    <OMI>1</OMI>
   </OMA>
   <OMA>
    <OMS cd="linalg2" name="matrixrow"/>
    <OMI>0</OMI>
    <OMI>1</OMI>
   </OMA>
  </OMA>
 </OMA>
</OMOBJ>
gap> OMTest( Group( [[0,1],[-1,0]],[[1,1],[0,1]] ) );
true
gap> OMPrint(10^72);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMI>100000000000000000000000000000000000000000000000000000000000000000000000\
0</OMI>
</OMOBJ>
gap> OMTest(10^72);
true
gap> OMPrint(10/72);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="nums1" name="rational"/>
  <OMI>5</OMI>
  <OMI>36</OMI>
 </OMA>
</OMOBJ>
gap> OMTest(10/72);
true
gap> OMPrint(infinity);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMS cd="nums1" name="infinity"/>
</OMOBJ>
gap> OMTest(infinity);
true
gap> OMPrint(2/3+5/4*E(4));
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="complex1" name="complex_cartesian"/>
  <OMA>
   <OMS cd="nums1" name="rational"/>
   <OMI>2</OMI>
   <OMI>3</OMI>
  </OMA>
  <OMA>
   <OMS cd="nums1" name="rational"/>
   <OMI>5</OMI>
   <OMI>4</OMI>
  </OMA>
 </OMA>
</OMOBJ>
gap> OMTest(2/3+5/4*E(4));
true
gap> OMPrint([1,2,3]);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="list1" name="list"/>
  <OMI>1</OMI>
  <OMI>2</OMI>
  <OMI>3</OMI>
 </OMA>
</OMOBJ>
gap> OMTest([1,2,3]);
true
gap> OMPrint(h);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMBIND>
   <OMS cd="fns2" name="constant"/>
   <OMBVAR>
     <OMV name="0"/>
     <OMV name="a"/>
     <OMV name="b"/>
     <OMV name="c"/>
     <OMV name="1"/>
   </OMBVAR>
   <OMA>
    <OMS cd="relation2" name="hasse_diagram"/>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="0"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="a"/>
      <OMV name="b"/>
      <OMV name="c"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="a"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="1"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="b"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="1"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="c"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="1"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="1"/>
     <OMA>
      <OMS cd="list1" name="list"/>
     </OMA>
    </OMA>
   </OMA>
 </OMBIND>
</OMOBJ>
gap> OMPrint([]);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMS cd="set1" name="emptyset"/>
</OMOBJ>
gap> OMTest([]);
true
gap> OMPrint(Set([true,false]));
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="set1" name="set"/>
  <OMS cd="logic1" name="true"/>
  <OMS cd="logic1" name="false"/>
 </OMA>
</OMOBJ>
gap> OMTest(Set([true,false]));
true
gap> OMPrint((1,3,5));
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="permut1" name="permutation"/>
  <OMI>3</OMI>
  <OMI>2</OMI>
  <OMI>5</OMI>
  <OMI>4</OMI>
  <OMI>1</OMI>
 </OMA>
</OMOBJ>
gap> OMTest((1,3,5));
true
gap> OMPrint("OMPut: for a string");
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMSTR>OMPut: for a string</OMSTR>
</OMOBJ>
gap> OMTest("OMPut: for a string");
true
gap> OMPrint(Set(['a','b']));
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMSTR>ab</OMSTR>
</OMOBJ>
gap> OMTest(Set(['a','b']));
true
gap> OMPrint("");
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMSTR></OMSTR>
</OMOBJ>
gap> OMTest("");
true

# also the escaped XML chars
gap> OMPrint("&");
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMSTR>&</OMSTR>
</OMOBJ>
gap> OMTest("&");
true
gap> OMPrint("<");
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMSTR><</OMSTR>
</OMOBJ>
gap> OMTest("<");
true
gap> OMPrint("<&>\"'");
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMSTR><&>"'</OMSTR>
</OMOBJ>
gap> OMTest("<&>\"'");
true
gap> OMPrint("<&");
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMSTR>&lt;&amp;</OMSTR>
</OMOBJ>
gap> OMTest("<&");
true
gap> OMPrint([ [ 1 .. 10 ], Rationals, false, true, infinity, 10 ]);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="list1" name="list"/>
  <OMA>
   <OMS cd="interval1" name="integer_interval"/>
   <OMI>1</OMI>
   <OMI>10</OMI>
  </OMA>
  <OMS cd="setname1" name="Q"/>
  <OMS cd="logic1" name="false"/>
  <OMS cd="logic1" name="true"/>
  <OMS cd="nums1" name="infinity"/>
  <OMI>1</OMI>
  <OMI>0</OMI>
 </OMA>
</OMOBJ>
gap> OMTest([ [ 1 .. 10 ], Rationals, false, true, infinity, 10 ]);
true
gap> OMPrint(false);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMS cd="logic1" name="false"/>
</OMOBJ>
gap> OMTest(false);
true
gap> floats := List( [ 0, "-0", 11/2, -1, "inf", "-inf" ], Float );
0., -0., 1., 0.5, -1., inf, -inf ]
gap> OMPrint(floats);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="list1" name="list"/>
  <OMF dec="0"/>
  <OMF dec="0"/>
  <OMF dec="1."/>
  <OMF dec="0.5"/>
  <OMF dec="-1."/>
  <OMF dec="INF"/>
  <OMF dec="-INF"/>
 </OMA>
</OMOBJ>
gap> OMTest(floats);
true
gap> floats := List( [ 11^711^-7, -11^7, -11^-7, "nan" ], Float );
1.94872e+075.13158e-08, -1.94872e+07, -5.13158e-08, nan ]
gap> OMPrint(floats);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMA>
  <OMS cd="list1" name="list"/>
  <OMF dec="19487171."/>
  <OMF dec="5.1315811823070673e-08"/>
  <OMF dec="-19487171."/>
  <OMF dec="-5.1315811823070673e-08"/>
  <OMF dec="NaN"/>
 </OMA>
</OMOBJ>
gap> STOP_TEST( "test", 10000 );

[Dauer der Verarbeitung: 0.16 Sekunden, vorverarbeitet 2026-06-17]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik