Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 418346# This is the source of the test file. The test file is produced by: # gap -T -A -b -r < test_new.src # remove the lines after STOP_TEST( "test", 10000 ); at the end of the generated file. LogTo("test_new"); START_TEST( "Test of the 'openmath' package" ); SizeScreen([80]);; ValidatePackageInfo( Filename( DirectoriesPackageLibrary( "openmath", "" ), "PackageInfo.g" ) ); LoadPackage("openmath"); ### Some examples from file openmath/examples stream := InputTextFile(Filename( DirectoriesPackageLibrary("openmath","tst"),"test3.omt"));; OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); CloseStream( stream ); # similar, for file tst/test3.bin: binary encoding stream := InputTextFile(Filename( DirectoriesPackageLibrary("openmath","tst"),"test3.bin"));; OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); CloseStream( stream ); # similar, for file tst/test4.out: gpipe encoding stream := InputTextFile(Filename( DirectoriesPackageLibrary("openmath","tst"),"test4.out"));; OMgetObjectByteStream(stream); OMgetObjectByteStream(stream); CloseStream( stream ); # similar, for file tst/test5.omt stream := InputTextFile(Filename(DirectoriesPackageLibrary("openmath","tst"),"test5.omt"));; OMGetObject(stream); CloseStream( stream ); # similar, for file tst/test6.omt stream := InputTextFile(Filename(DirectoriesPackageLibrary("openmath","tst"),"test6.omt"));; OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR; a; OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR; OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR; OM_GAP_OUTPUT_STR := "";; a; OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR; OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR; OM_GAP_OUTPUT_STR := "";; OM_GAP_ERROR_STR := "";; OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR; OMGetObject(stream); OM_GAP_OUTPUT_STR; OM_GAP_ERROR_STR; # there are some objects left on stream, but they are character table examples CloseStream( stream ); # similar, for file tst/test_new.omt stream := InputTextFile(Filename(DirectoriesPackageLibrary("openmath","tst"),"test_new.omt"));; OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); OMGetObject(stream); CloseStream( stream ); ## Tests of conversion from GAP to OpenMath g := SymmetricGroup(5); t := ""; s := OutputTextString(t, true); w := OpenMathXMLWriter( s ); OMPutObject(w, g); CloseStream(s); s := InputTextString(t); g2 := OMGetObject(s); CloseStream(s); g2 = g; g := SymmetricGroup(5); OMPrint(g); ### test with the different kinds of stream ## OutputTextFile, InputTextFile s := OutputTextFile( Filename( OMDirectoryTemporary, "test" ), false );; w := OpenMathXMLWriter( s );; OMPutObject( w, 123 ); OMPutObject( w, false ); OMPutObject( w, "OutputTextFile, InputTextFile" ); CloseStream( s ); s := InputTextFile( Filename( OMDirectoryTemporary, "test" ) );; OMGetObject( s ); OMGetObject( s ); OMGetObject( s ); CloseStream( s ); RemoveFile( Filename( OMDirectoryTemporary, "test" ) ); ## OutputTextUser, InputTextUser # how do one tests OutputTextUser? # how do one tests InputTextUser? ## OutputTextString, InputTextString test_string := ""; s := OutputTextString( test_string, false ); w := OpenMathXMLWriter( s );; OMPutObject( w, 123 ); OMPutObject( w, false ); OMPutObject( w, "OutputTextString, InputTextString" ); CloseStream( s ); test_string; s := InputTextString( test_string ); OMGetObject( s ); OMGetObject( s ); OMGetObject( s ); CloseStream( s ); ## OutputTextNone s := OutputTextNone( ); w := OpenMathXMLWriter( s );; OMPutObject( w, 123 ); OMPutObject( w, false ); OMPutObject( w, "OutputTextNone" ); CloseStream( s ); ### miscellaneous tests # test with binary encoding and InputTextString s := InputTextString( "\030\020\b\007\cminmax1max\020\b\004\cset1set\>\>\>\t\>\005\021\021\031" ); OMGetObject(s); CloseStream(s); # test with gpipe encoding and InputTextString gpipe_string := List( [ 24, 16, 8, 109, 105, 110, 109, 97, 120, 49, 255, 109, 97, 120, 255, 16, 8, 115, 101, 116, 49, 255, 115, 101, 116, 255, 2, 49, 255, 2, 57, 255, 2, 53, 255, 17, 17, 25 ], CHAR_INT );; s := InputTextString( gpipe_string ); OMgetObjectByteStream(s); CloseStream(s); # test of a long object OMTest(10^4000); # test of a hexadecimal encoded integer s := InputTextString( "<OMOBJ xmlns=\"http://www.openmath.org/OpenMath\" version=\"2.0\"><OMI>x10ab2937fed2837a028374</OMI></OMOBJ>" ); OMGetObject(s); CloseStream(s); # test of escaped XML chars s := InputTextString( "<OMOBJ xmlns=\"http://www.openmath.org/OpenMath\" version=\"2.0\"> <OMSTR><&>"'</OMSTR> </OMOBJ>" ); OMGetObject(s); CloseStream(s); # test of a strings with all the chars OMTest( List( [4..127], CHAR_INT ) ); # test that the strings are returned in string representation 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>" );; IsStringRep( OMGetObject( stream ) ); IsStringRep( OMGetObject( stream ) ); CloseStream(stream); ### test of Hasse (there was a bug) d := Domain(["0","a","b","c","1"]); Elements(d); Size(d); r := BinaryRelationByElements(d, [ DirectProductElement(["0","a"]), DirectProductElement(["0","b"]), DirectProductElement(["0","c"]), DirectProductElement(["a","1"]), DirectProductElement(["b","1"]), DirectProductElement(["c","1"])]); p := TransitiveClosureBinaryRelation(ReflexiveClosureBinaryRelation(r)); IsPartialOrderBinaryRelation(p); h := HasseDiagram(p); # the bug was here. Elements(UnderlyingRelation(h)); ### test for the various supported objects #I Searching Method for OMPut with 2 arguments: #I Total: 18 entries #I Method 1: ``OMPut: for Rationals'', value: 65 OMPrint(Rationals); OMTest(Rationals); #I Method 2: ``OMPut: for Integers'', value: 42 OMPrint(Integers); OMTest(Integers); #I Method 3: ``OMPut: for a range'', value: 40 OMPrint([3..10]); OMTest([3..10]); #I Method 4: ``OMPut: for a matrix'', value: 32 OMPrint([[11,12],[21,22]]); OMTest([[11,12],[21,22]]); #I Method 5: ``OMPut: for NonnegativeIntegers'', value: 31 OMPrint(NonnegativeIntegers); OMTest(NonnegativeIntegers); #I Method 6: ``OMPut: for a character table'', value: 23 #I Method 7: ``OMPut: for a permutation group'', value: 23 OMPrint(AlternatingGroup(6)); OMTest(AlternatingGroup(6)); #I Method: ``OMPut: for a group'' OMPrint( Group( [[0,1],[-1,0]],[[1,1],[0,1]] ) ); OMTest( Group( [[0,1],[-1,0]],[[1,1],[0,1]] ) ); #I Method 8: ``OMPut: for an integer'', value: 20 OMPrint(10^72); OMTest(10^72); #I Method 9: ``OMPut: for a rational'', value: 19 OMPrint(10/72); OMTest(10/72); #I Method 10: ``OMPut: for infinity'', value: 18 OMPrint(infinity); OMTest(infinity); #I Method 11: ``OMPut: for a proper cyclotomic'', value: 18 OMPrint(2/3+5/4*E(4)); OMTest(2/3+5/4*E(4)); #I Method 12: ``OMPut: for a row vector'', value: 14 OMPrint([1,2,3]); OMTest([1,2,3]); #I Method 13: ``OMPut: for a Hasse diagram'', value: 13 OMPrint(h); #I Method 14: ``OMPut: for a finite set'', value: 11 OMPrint([]); OMTest([]); OMPrint(Set([true,false])); OMTest(Set([true,false])); #I Method 15: ``OMPut: for a permutation'', value: 10 OMPrint((1,3,5)); OMTest((1,3,5)); #I Method 16: ``OMPut: for a string'', value: 7 OMPrint("OMPut: for a string"); OMTest("OMPut: for a string"); OMPrint(Set(['a','b'])); OMTest(Set(['a','b'])); OMPrint(""); OMTest(""); # also the escaped XML chars OMPrint("&"); OMTest("&"); OMPrint("<"); OMTest("<"); OMPrint("<&>\"'"); OMTest("<&>\"'"); OMPrint("<&"); OMTest("<&"); #I Method 17: ``OMPut: for a finite list or collection'', value: 6 OMPrint([ [ 1 .. 10 ], Rationals, false, true, infinity, 1, 0 ]); OMTest([ [ 1 .. 10 ], Rationals, false, true, infinity, 1, 0 ]); #I Method 18: ``OMPut: for a boolean'', value: 3 OMPrint(false); OMTest(false); #I Method 19: ``OMPut: for a float'', value: 3 floats := List( [ 0, "-0", 1, 1/2, -1, "inf", "-inf" ], Float ); OMPrint(floats); OMTest(floats); floats := List( [ 11^7, 11^-7, -11^7, -11^-7, "nan" ], Float ); OMPrint(floats); STOP_TEST( "test", 10000 ); LogTo(); quit;