def test_list_subset_strict_bad(self): letters = {'a': 'A', 'b': 'B', 'c': 'C'} numbers = {'a': 1, 'b': 2, 'c': 'C'} source = [letters, numbers] common_subset_pred = jp.LIST_SUBSET([{'c': 'C'}], strict=True) self.assertBadResult(PathValue('', source), common_subset_pred, common_subset_pred(source))
def test_list_subset_nonstrict_good(self): letters = {'a': 'A', 'b': 'B', 'c': 'C'} numbers = {'a': 1, 'b': 2, 'c': 'C'} source = [letters, numbers] common_subset_pred = jp.LIST_SUBSET([{'c': 'C'}]) self.assertFalse(common_subset_pred.strict) self.assertGoodResult(PathValue('', source), common_subset_pred, common_subset_pred(source))
def test_list_subset_nested_bad(self): context = ExecutionContext() letters = {'a': 'A', 'b': 'B', 'c': 'C'} numbers = {'a': 1, 'b': 2, 'c': 'C'} source = [numbers, [letters]] pred = jp.LIST_SUBSET([[{'b': 2}]]) self.assertBadResult(PathValue('', source), pred, pred(context, source))
def test_list_subset_strict_good(self): context = ExecutionContext() letters = {'a': 'A', 'b': 'B', 'c': 'C'} numbers = {'a': 1, 'b': 2, 'c': 'C'} source = [letters, numbers] common_subset_pred = jp.LIST_SUBSET([letters], strict=True) self.assertGoodResult(PathValue('', source), common_subset_pred, common_subset_pred(context, source))
def test_dict_subset_with_array_values_bad(self): context = ExecutionContext() small = {'a': ['A'], 'b': [1, 2]} big = {'a': ['A', 'B', 'C'], 'b': [1, 2]} big_subset_pred = jp.DICT_SUBSET(big) list_subset_pred = jp.LIST_SUBSET(big['a']) self.assertBadResult(expect_value=PathValue('a', small['a']), pred=list_subset_pred, got_result=big_subset_pred(context, small), source=small, target_path='a')
def test_list_subset_nonstrict_bad(self): context = ExecutionContext() letters = {'a':'A', 'b':'B', 'c':'C'} numbers = {'a':1, 'b':2, 'c':'C'} source = [letters, numbers] common_subset_pred = jp.LIST_SUBSET([{'c':3}]) self.assertEqual( jp.PathValueResult( valid=False, pred=common_subset_pred, source=source, target_path='', path_value=PathValue('', source)), common_subset_pred(context, source))