1-
21from mathics .session import MathicsSession
32
3+ import sys
44from mathics .core .parser import parse , SingleLineFeeder
55from mathics .core .definitions import Definitions
66from mathics .core .evaluation import Evaluation
1010session = MathicsSession (add_builtin = True , catch_interrupt = False )
1111
1212
13-
14-
1513@pytest .mark .parametrize (
1614 "str_expr,str_expected" ,
1715 [
4543 (r'StringInsert["", "X", 1]' , r'"X"' ),
4644 (r'StringInsert["", "X", -1]' , r'"X"' ),
4745 (r'StringInsert["abcdefghijklm", "", -1]' , r'"abcdefghijklm"' ),
48- (r'StringInsert[{"abcdefghijklm", "Mathics"}, "X", {}]' , r'{"abcdefghijklm", "Mathics"}' ),
46+ (
47+ r'StringInsert[{"abcdefghijklm", "Mathics"}, "X", {}]' ,
48+ r'{"abcdefghijklm", "Mathics"}' ,
49+ ),
4950 ],
5051)
51-
5252def test_evaluation (str_expr : str , str_expected : str , message = "" ):
53- global session
5453 result = session .evaluate (str_expr )
5554 expected = session .evaluate (str_expected )
5655
@@ -60,6 +59,79 @@ def test_evaluation(str_expr: str, str_expected: str, message=""):
6059 assert result == expected
6160
6261
62+ if sys .platform in ("linux" ,):
63+
64+ def test_system_specific_long_integer ():
65+ session .evaluate ("""
66+ WRb[bytes_, form_] := Module[{str, res={}, byte}, str = OpenWrite[BinaryFormat -> True];
67+ BinaryWrite[str, bytes, form];
68+ str = OpenRead[Close[str], BinaryFormat -> True];
69+ While[Not[SameQ[byte = BinaryRead[str], EndOfFile]], res = Join[res, {byte}];];
70+ Close[str]; res]
71+ """ )
72+ for str_expr , str_expected , message in (
73+ (
74+ r'WRb[{1885507541, 4157323149}, Table["UnsignedInteger32", {2}]]' ,
75+ r"{213, 143, 98, 112, 141, 183, 203, 247}" ,
76+ "UnsignedInteger32" ,
77+ ),
78+ (
79+ r'WRb[{384206740, 1676316040}, Table["UnsignedInteger32", {2}]]' ,
80+ r"{148, 135, 230, 22, 136, 141, 234, 99}" ,
81+ "UnsignedInteger32 - 2nd test" ,
82+ ),
83+ (
84+ r'WRb[7079445437368829279, "UnsignedInteger64"]' ,
85+ r"{95, 5, 33, 229, 29, 62, 63, 98}" ,
86+ "UnsignedInteger64" ,
87+ ),
88+ (
89+ r'WRb[5381171935514265990, "UnsignedInteger64"]' ,
90+ r"{134, 9, 161, 91, 93, 195, 173, 74}" ,
91+ "UnsignedInteger64 - 2nd test" ,
92+ ),
93+ (
94+ r'WRb[293382001665435747348222619884289871468, "UnsignedInteger128"]' ,
95+ r"{108, 78, 217, 150, 88, 126, 152, 101, 231, 134, 176, 140, 118, 81, 183, 220}" ,
96+ "UnsignedInteger128" ,
97+ ),
98+ (
99+ r'WRb[253033302833692126095975097811212718901, "UnsignedInteger128"]' ,
100+ r"{53, 83, 116, 79, 81, 100, 60, 126, 202, 52, 241, 48, 5, 113, 92, 190}" ,
101+ "UnsignedInteger128 - 2nd test" ,
102+ ),
103+ ):
104+
105+ test_evaluation (str_expr , str_expected , message )
106+
107+ # import os.path as osp
108+ # def test_evaluation_with_err(str_expr: str, expected: str, message=""):
109+ # import pdb; pdb.set_trace()
110+ # result = session.evaluate(str_expr)
111+
112+ # if message:
113+ # assert result == expected, message
114+ # else:
115+ # assert result == expected
116+
117+ # if osp.exists("/dev/zero"):
118+ # def test_system_specific_write_string():
119+ # for str_expr, str_expected, message in (
120+ # (
121+ # r'WriteString[OpenWrite["/dev/full"], "123"]',
122+ # r": No space left on device.",
123+ # "WriteString to full device",
124+ # ),
125+ # # (
126+ # # r'Close[str]',
127+ # # r"No space left on device.",
128+ # # "Close on full device",
129+ # # ),
130+ # ):
131+
132+ # test_evaluation_with_err(str_expr, str_expected, message)
133+
134+
63135def test_exit ():
64136 global session
65137 try :
0 commit comments