Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 63 additions & 49 deletions test/test_evaluation.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import sys
import pytest


@pytest.mark.parametrize(
"str_expr,str_expected",
[
Expand Down Expand Up @@ -53,68 +52,84 @@ def test_evaluation(str_expr: str, str_expected: str, message=""):
else:
assert result == expected


def test_optionvalues():
session.evaluate("ClearAll[q];ClearAll[a];ClearAll[s];")
for str_expr, str_expected in (
(
"""
Options[f1]:={q->12};
f1[x_,OptionsPattern[]]:=x^OptionValue[q]; f1[y]
""",
"y ^ 12",
),
## mmatura: the below test isn't working for me. I Get:
## y ^ OptionValue[s]
# (
# """Options[f2]:={s->12}; f2[x_,opt:OptionsPattern[]]:=x^OptionValue[s];
# f2[y]""",
# "y ^ 12",
# ),
(
"""Options[f3]:={a->12};
f3[x_,opt:OptionsPattern[{a:>4}]]:=x^OptionValue[a];
f3[y]
""",
"y ^ 4",
),
(
"""
Options[f4]:={a->12};
f4[x_,OptionsPattern[{a:>4}]]:=x^OptionValue[a];
f4[y]
""",
"y ^ 4",
),
(
"""Options[F]:={a->89,b->37};
OptionValue[F, a]""",
"89",
),
(
"""OptionValue[F, {a,b}]""",
"{89, 37}",
),
("OptionValue[F, {l->77}, {a,b, l}]", "{89, 37, 77}"),
):
check_evaluation(str_expr, str_expected)
session.evaluate('ClearAll[q];ClearAll[a];ClearAll[s]; Options[f1]:={"q"->12}')
session.evaluate('f1[x_,OptionsPattern[]]:=x^OptionValue["q"]')
result = session.evaluate('f1[y]')
expected = session.evaluate('y ^ 12')
assert(result == expected)

session.evaluate("Options[f2]:={s->12}")
session.evaluate("f2[x_,opt:OptionsPattern[]]:=x^OptionValue[s]")
result = session.evaluate('f2[y]')
expected = session.evaluate('y ^ 12')
assert(result == expected)

session.evaluate("Options[f3]:={a->12}")
session.evaluate("f3[x_,opt:OptionsPattern[{a:>4}]]:=x^OptionValue[a]")
result = session.evaluate('f3[y]')
expected = session.evaluate('y ^ 4')
assert(result == expected)

session.evaluate("Options[f4]:={a->12}")
session.evaluate("f4[x_,OptionsPattern[{a:>4}]]:=x^OptionValue[a]")
result = session.evaluate('f4[y]')
expected = session.evaluate('y ^ 4')
assert(result == expected)


session.evaluate("Options[F]:={a->89,b->37}")
result = session.evaluate("OptionValue[F, a]")
expected = session.evaluate('89')
assert(result == expected)

result = session.evaluate("OptionValue[F, {a,b}]")
expected = session.evaluate('{89, 37}')
assert(result == expected)

result = session.evaluate("OptionValue[F, {a,b, l}]")
expected = session.evaluate('{89, 37, l}')
msg = "OptionValue::optnf: Option name l not found."
assert result == expected, msg

session.evaluate('Options[f5]:={"a"->12}')
session.evaluate("f5[x_,opt:OptionsPattern[]]:=x^OptionValue[a]")
result = session.evaluate('f5[y]')
expected = session.evaluate('y ^ 12')
assert(result == expected)

session.evaluate('Options[f6]:={a->12}')
session.evaluate('f6[x_,opt:OptionsPattern[]]:=x^OptionValue["a"]')
result = session.evaluate('f6[y]')
expected = session.evaluate('y ^ 12')
assert(result == expected)

session.evaluate('Options[f7]:={a->12}')
session.evaluate('f7[x_,OptionsPattern[{"a"->67}]]:=x^OptionValue[a]')
result = session.evaluate('f7[y]')
expected = session.evaluate('y ^ 67')
assert(result == expected)

result = session.evaluate("OptionValue[F, {l->77}, {a,b, l}]")
expected = session.evaluate('{89, 37, 77}')
assert(result == expected)

result = session.evaluate("OptionValue[F, {b->-1, l->77}, {a,b, l}]")
expected = session.evaluate('{89, -1, 77}')
assert(result == expected)


if sys.platform in ("linux",):

def test_system_specific_long_integer():
session.evaluate(
"""
session.evaluate("""
WRb[bytes_, form_] := Module[{str, res={}, byte}, str = OpenWrite[BinaryFormat -> True];
BinaryWrite[str, bytes, form];
str = OpenRead[Close[str], BinaryFormat -> True];
While[Not[SameQ[byte = BinaryRead[str], EndOfFile]], res = Join[res, {byte}];];
Close[str]; res]
"""
)
""")
for str_expr, str_expected, message in (
(
r'WRb[{1885507541, 4157323149}, Table["UnsignedInteger32", {2}]]',
Expand Down Expand Up @@ -150,7 +165,6 @@ def test_system_specific_long_integer():

check_evaluation(str_expr, str_expected, message)


# import os.path as osp
# def check_evaluation_with_err(str_expr: str, expected: str, message=""):
# import pdb; pdb.set_trace()
Expand Down