Skip to content
Merged
Show file tree
Hide file tree
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
2 changes: 2 additions & 0 deletions mathics/builtin/atomic/symbols.py
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,8 @@ class Information(PrefixOperator):
"""

attributes = A_HOLD_ALL | A_SEQUENCE_HOLD | A_PROTECTED | A_READ_PROTECTED
eval_error = Builtin.generic_argument_error
expected_args = (1, 2)
messages = {"notfound": "Expression `1` is not a symbol"}
options = {
"LongForm": "True",
Expand Down
6 changes: 6 additions & 0 deletions mathics/builtin/testing_expressions/equality_inequality.py
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,8 @@ class Between(Builtin):
"Between[range_List][x_]": "Between[x, range]", # operator form
}

eval_error = Builtin.generic_argument_error
expected_args = (1, 2)
summary_text = "test if value or values are in range"


Expand Down Expand Up @@ -408,6 +410,8 @@ class BooleanQ(Builtin):
= True
"""

eval_error = Builtin.generic_argument_error
expected_args = 1
rules = {
"BooleanQ[expr_]": "If[expr, True, True, False]",
}
Expand Down Expand Up @@ -850,6 +854,8 @@ class TrueQ(Builtin):
= False
"""

eval_error = Builtin.generic_argument_error
expected_args = 1
rules = {
"TrueQ[expr_]": "If[expr, True, False, False]",
}
Expand Down
33 changes: 14 additions & 19 deletions test/builtin/atomic/test_symbols.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"""
Unit tests from mathics.builtin.atomic.symbols.
"""
from test.helper import check_evaluation
from test.helper import check_arg_counts, check_evaluation

import pytest

Expand Down Expand Up @@ -84,31 +84,26 @@ def test_symbol(str_expr, warnings, str_expected, fail_msg):


@pytest.mark.parametrize(
("str_expr", "msgs", "fail_msg"),
("function_name", "msg_fragment"),
[
(
"Symbol[]",
["Symbol called with 0 arguments; 1 argument is expected."],
"Symbol argument number error",
"Information",
"1 or 2 arguments are",
),
(
"SymbolName[]",
["SymbolName called with 0 arguments; 1 argument is expected."],
"SymbolName[] argument number error",
"Symbol",
"1 argument is",
),
(
"ValueQ[]",
["ValueQ called with 0 arguments; 1 argument is expected."],
"ValueQ[] argument number error",
"SymbolName",
"1 argument is",
),
(
"ValueQ",
"1 argument is",
),
],
)
def test_symbols_arg_errors(str_expr, msgs, fail_msg):
def test_symbols_arg_errors(function_name, msg_fragment):
""" """

check_evaluation(
str_expr,
str_expr,
failure_message=fail_msg,
expected_messages=msgs,
)
check_arg_counts(function_name, msg_fragment)
24 changes: 23 additions & 1 deletion test/builtin/test_testing_expressions.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,33 @@
Unit tests for mathics.builtin.testing_expressions
"""

from test.helper import check_evaluation
from test.helper import check_arg_counts, check_evaluation

import pytest


@pytest.mark.parametrize(
("function_name", "msg_fragment"),
[
(
"Between",
"1 or 2 arguments are",
),
(
"BooleanQ",
"1 argument is",
),
(
"TrueQ",
"1 argument is",
),
],
)
def test_arg_errors(function_name, msg_fragment):
""" """
check_arg_counts(function_name, msg_fragment)


@pytest.mark.parametrize(
("str_expr", "msgs", "str_expected", "fail_msg"),
[
Expand Down
15 changes: 15 additions & 0 deletions test/helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,21 @@ def evaluate(str_expr: str, form=None):
return session.evaluate(str_expr, form=form)


def check_arg_counts(function_name, msg_fragment):
""" """
str_expr = f"{function_name}[]"
expected_msgs = [
f"{function_name} called with 0 arguments; {msg_fragment} expected."
]
failure_message = f"{function_name} argument number error"
check_evaluation(
str_expr,
str_expr,
failure_message=failure_message,
expected_messages=expected_msgs,
)


def check_evaluation(
str_expr: Optional[str],
str_expected: Optional[str] = None,
Expand Down
Loading