Skip to content

Commit 40519d1

Browse files
committed
Fixing test
1 parent 3257e05 commit 40519d1

File tree

3 files changed

+33
-31
lines changed

3 files changed

+33
-31
lines changed

mitxgraders/helpers/math_helpers.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from voluptuous import Schema, Required, Any, All, Length, Coerce
1717

1818
from mitxgraders.baseclasses import ItemGrader
19-
from mitxgraders.exceptions import InvalidInput, ConfigError
19+
from mitxgraders.exceptions import InvalidInput, ConfigError, MissingInput
2020
from mitxgraders.comparers import CorrelatedComparer
2121
from mitxgraders.sampling import (VariableSamplingSet, RealInterval, DiscreteSet, DependentSampler,
2222
gen_symbols_samples, construct_functions,
@@ -545,6 +545,8 @@ def gen_var_and_func_samples(self, *args):
545545
# This is a sibling dictionary. Add it to the list of variables to sample.
546546
for k in entry:
547547
variables.append(k)
548+
if entry[k] == '':
549+
raise MissingInput('Cannot grade answer, a required input is missing.')
548550
sample_from_dict[k] = DependentSampler(formula=entry[k])
549551
break
550552

tests/formulagrader/test_formulagrader.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,36 @@ def test_fg_evals_numbered_variables_in_siblings():
688688
# The second call should provide only the first sibling formula
689689
assert results[1] == {'sibling_1': 'x_{0}+1'}
690690

691+
def test_siblings_in_dependent_samplers():
692+
grader = ListGrader(
693+
answers=['1', 'x'],
694+
subgraders=[
695+
FormulaGrader(),
696+
FormulaGrader(variables=['x'], sample_from={'x': DependentSampler(formula='sibling_1+1')})
697+
],
698+
ordered=True
699+
)
700+
701+
submission = ['1', '2']
702+
expected_result = {
703+
'overall_message': '',
704+
'input_list': [
705+
{'ok': True, 'grade_decimal': 1, 'msg': ''},
706+
{'ok': True, 'grade_decimal': 1, 'msg': ''},
707+
]
708+
}
709+
assert grader(None, submission) == expected_result
710+
711+
submission = ['2', '3']
712+
expected_result = {
713+
'overall_message': '',
714+
'input_list': [
715+
{'ok': False, 'grade_decimal': 0, 'msg': ''},
716+
{'ok': True, 'grade_decimal': 1, 'msg': ''},
717+
]
718+
}
719+
assert grader(None, submission) == expected_result
720+
691721
def test_ng_config():
692722
"""Test that the NumericalGrader config bars unwanted entries"""
693723
expect = r"not a valid value for dictionary value @ data\[u?'failable_evals'\]. Got 1"

tests/test_listgrader.py

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
NumericalGrader, SingleListGrader)
1010
from mitxgraders import CalcError
1111
from tests.helpers import mock
12-
from mitxgraders.sampling import DependentSampler
1312

1413
pp = pprint.PrettyPrinter(indent=4)
1514
printit = pp.pprint
@@ -589,35 +588,6 @@ def test_siblings_passed_to_subgrader_check_if_ordered_and_subgrader_list():
589588
for _, kwargs in check2.call_args_list:
590589
assert kwargs['siblings'] == siblings
591590

592-
def test_siblings_in_dependent_samplers():
593-
grader = ListGrader(
594-
answers=['1', 'x'],
595-
subgraders=[
596-
FormulaGrader(),
597-
FormulaGrader(variables=['x'], sample_from={'x': DependentSampler(formula='sibling_1+1')})
598-
]
599-
)
600-
601-
submission = ['1', '2']
602-
expected_result = {
603-
'overall_message': '',
604-
'input_list': [
605-
{'ok': True, 'grade_decimal': 1, 'msg': ''},
606-
{'ok': True, 'grade_decimal': 1, 'msg': ''},
607-
]
608-
}
609-
assert grader(None, submission) == expected_result
610-
611-
submission = ['2', '3']
612-
expected_result = {
613-
'overall_message': '',
614-
'input_list': [
615-
{'ok': False, 'grade_decimal': 0, 'msg': ''},
616-
{'ok': True, 'grade_decimal': 1, 'msg': ''},
617-
]
618-
}
619-
assert grader(None, submission) == expected_result
620-
621591

622592
def test_grouping_unordered_different_lengths():
623593
"""Test that an error is raised if unordered groupings use different numbers of inputs"""

0 commit comments

Comments
 (0)