comparison tests/test_schema.py @ 41:d2b43423fa4c

Some new test cases with ref-false, when-ref-false, ref-not-existss, when-ref-not-exists
author Franz Glasner <fzglas.hg@dom66.de>
date Thu, 20 Jul 2023 02:04:17 +0200
parents 5a2fba996773
children 0e7acd426e3a
comparison
equal deleted inserted replaced
40:2376224a9717 41:d2b43423fa4c
805 self.assertEqual(["r1", "r2", "r3"], r["require"]) 805 self.assertEqual(["r1", "r2", "r3"], r["require"])
806 self.assertTrue("new-key" in r) 806 self.assertTrue("new-key" in r)
807 self.assertIsNone(r["new-key"]) 807 self.assertIsNone(r["new-key"])
808 self.assertFalse("cond" in r) 808 self.assertFalse("cond" in r)
809 809
810 def test_simple_replace_when_ref_false(self):
811 schema = data_schema._Schema(
812 None, True, {"$type": None,
813 "require": ["huhu", "haha"],
814 "cond": [
815 {"when-ref-false": '#foo2',
816 "then": {
817 "require": ["r1", "r2", "r3"],
818 "new-key": None,
819 }}
820 ]})
821 r = data_schema.process_schema_conditionals(schema, self._ctx)
822 self.assertIsNot(r, schema)
823 self.assertEqual(["r1", "r2", "r3"], r["require"])
824 self.assertTrue("new-key" in r)
825 self.assertIsNone(r["new-key"])
826 self.assertFalse("cond" in r)
827
810 def test_simple_replace_when_ref_true_2(self): 828 def test_simple_replace_when_ref_true_2(self):
811 schema = data_schema._Schema( 829 schema = data_schema._Schema(
812 None, True, {"$type": None, 830 None, True, {"$type": None,
813 "require": ["huhu", "haha"], 831 "require": ["huhu", "haha"],
814 "cond": [ 832 "cond": [
879 self.assertTrue("new-key" in r) 897 self.assertTrue("new-key" in r)
880 self.assertIsNone(r["new-key"]) 898 self.assertIsNone(r["new-key"])
881 self.assertFalse("new-key3" in r) 899 self.assertFalse("new-key3" in r)
882 self.assertFalse("cond" in r) 900 self.assertFalse("cond" in r)
883 901
902 def test_simple_replace_when_ref_not_exists(self):
903 schema = data_schema._Schema(
904 None, True, {"$type": None,
905 "require": ["huhu", "haha"],
906 "cond": [
907 {"when-ref-not-exists": '#foo3-non-existing',
908 "then": {
909 "require": ["r1", "r2", "r3"],
910 "new-key": None,
911 }},
912 {"when": True,
913 "then": {
914 "new-key3": "val"}}
915 ]})
916 r = data_schema.process_schema_conditionals(schema, self._ctx)
917 self.assertIsNot(r, schema)
918 self.assertEqual(["r1", "r2", "r3"], r["require"])
919 self.assertTrue("new-key" in r)
920 self.assertIsNone(r["new-key"])
921 self.assertFalse("new-key3" in r)
922 self.assertFalse("cond" in r)
923
884 def test_simple_replace_when_ref_exists_2(self): 924 def test_simple_replace_when_ref_exists_2(self):
885 schema = data_schema._Schema( 925 schema = data_schema._Schema(
886 None, True, {"$type": None, 926 None, True, {"$type": None,
887 "require": ["huhu", "haha"], 927 "require": ["huhu", "haha"],
888 "cond": [ 928 "cond": [
901 self.assertTrue("new-key" in r) 941 self.assertTrue("new-key" in r)
902 self.assertIsNone(r["new-key"]) 942 self.assertIsNone(r["new-key"])
903 self.assertFalse("new-key3" in r) 943 self.assertFalse("new-key3" in r)
904 self.assertFalse("cond" in r) 944 self.assertFalse("cond" in r)
905 945
946 def test_simple_replace_when_ref_not_exists_2(self):
947 schema = data_schema._Schema(
948 None, True, {"$type": None,
949 "require": ["huhu", "haha"],
950 "cond": [
951 {"when": {"ref-not-exists": '#foo3-non-existing'},
952 "then": {
953 "require": ["r1", "r2", "r3"],
954 "new-key": None,
955 }},
956 {"when": True,
957 "then": {
958 "new-key3": "val"}}
959 ]})
960 r = data_schema.process_schema_conditionals(schema, self._ctx)
961 self.assertIsNot(r, schema)
962 self.assertEqual(["r1", "r2", "r3"], r["require"])
963 self.assertTrue("new-key" in r)
964 self.assertIsNone(r["new-key"])
965 self.assertFalse("new-key3" in r)
966 self.assertFalse("cond" in r)
967
906 def test_simple_replace_when_ref_exists_is_false(self): 968 def test_simple_replace_when_ref_exists_is_false(self):
907 schema = data_schema._Schema( 969 schema = data_schema._Schema(
908 None, True, {"$type": None, 970 None, True, {"$type": None,
909 "cond": [ 971 "cond": [
910 {"when-ref-exists": '#foo-not-existing', 972 {"when-ref-exists": '#foo-not-existing',
956 ]}) 1018 ]})
957 r = data_schema.process_schema_conditionals(schema, self._ctx) 1019 r = data_schema.process_schema_conditionals(schema, self._ctx)
958 self.assertIsNot(r, schema) 1020 self.assertIsNot(r, schema)
959 self.assertEqual("string", r["$type"]) 1021 self.assertEqual("string", r["$type"])
960 1022
1023 def test_allOf_true_2(self):
1024 schema = data_schema._Schema(
1025 None, True, {"cond": [
1026 {"when": {"all-of": [
1027 True,
1028 {"ref-not-exists": '#foo3-not-existing'},
1029 {"ref-true": '#foo'}]},
1030 "then": {"$type": "string"}},
1031 {"when": True,
1032 "then": {"$type": None}}
1033 ]})
1034 r = data_schema.process_schema_conditionals(schema, self._ctx)
1035 self.assertIsNot(r, schema)
1036 self.assertEqual("string", r["$type"])
1037
961 def test_allOf_false(self): 1038 def test_allOf_false(self):
962 schema = data_schema._Schema( 1039 schema = data_schema._Schema(
963 None, True, {"cond": [ 1040 None, True, {"cond": [
964 {"when": {"all-of": [ 1041 {"when": {"all-of": [
965 True, 1042 True,
971 ]}) 1048 ]})
972 r = data_schema.process_schema_conditionals(schema, self._ctx) 1049 r = data_schema.process_schema_conditionals(schema, self._ctx)
973 self.assertIsNot(r, schema) 1050 self.assertIsNot(r, schema)
974 self.assertIsNone(r["$type"]) 1051 self.assertIsNone(r["$type"])
975 1052
1053 def test_allOf_false_2(self):
1054 schema = data_schema._Schema(
1055 None, True, {"cond": [
1056 {"when": {"all-of": [
1057 True,
1058 {"ref-not-exists": '#foo2'},
1059 {"ref-true": '#foo'}]},
1060 "then": {"$type": "string"}},
1061 {"when": True,
1062 "then": {"$type": None}}
1063 ]})
1064 r = data_schema.process_schema_conditionals(schema, self._ctx)
1065 self.assertIsNot(r, schema)
1066 self.assertIsNone(r["$type"])
1067
976 def test_short_allOf_true(self): 1068 def test_short_allOf_true(self):
977 schema = data_schema._Schema( 1069 schema = data_schema._Schema(
978 None, True, {"cond": [ 1070 None, True, {"cond": [
979 {"when": [ 1071 {"when": [
980 True, 1072 True,
1016 ]}) 1108 ]})
1017 r = data_schema.process_schema_conditionals(schema, self._ctx) 1109 r = data_schema.process_schema_conditionals(schema, self._ctx)
1018 self.assertIsNot(r, schema) 1110 self.assertIsNot(r, schema)
1019 self.assertEqual("string", r["$type"]) 1111 self.assertEqual("string", r["$type"])
1020 1112
1113 def test_anyOf_true_2(self):
1114 schema = data_schema._Schema(
1115 None, True, {"cond": [
1116 {"when": {"any-of": [
1117 False,
1118 {"ref-not-exists": '#foo3-non'},
1119 {"ref-false": '#foo2'}]},
1120 "then": {"$type": "string"}},
1121 {"when": True,
1122 "then": {"$type": None}}
1123 ]})
1124 r = data_schema.process_schema_conditionals(schema, self._ctx)
1125 self.assertIsNot(r, schema)
1126 self.assertEqual("string", r["$type"])
1127
1021 def test_anyOf_false(self): 1128 def test_anyOf_false(self):
1022 schema = data_schema._Schema( 1129 schema = data_schema._Schema(
1023 None, True, {"cond": [ 1130 None, True, {"cond": [
1024 {"when": {"any-of": [ 1131 {"when": {"any-of": [
1025 False, 1132 False,
1038 None, True, {"cond": [ 1145 None, True, {"cond": [
1039 {"when": {"one-of": [ 1146 {"when": {"one-of": [
1040 False, 1147 False,
1041 {"ref-exists": '#foo2'}, 1148 {"ref-exists": '#foo2'},
1042 {"not": {"ref-true": '#foo'}}]}, 1149 {"not": {"ref-true": '#foo'}}]},
1150 "then": {"$type": "string"}},
1151 {"when": True,
1152 "then": {"$type": None}}
1153 ]})
1154 r = data_schema.process_schema_conditionals(schema, self._ctx)
1155 self.assertIsNot(r, schema)
1156 self.assertEqual("string", r["$type"])
1157
1158 def test_oneOf_true_2(self):
1159 schema = data_schema._Schema(
1160 None, True, {"cond": [
1161 {"when": {"one-of": [
1162 False,
1163 {"not": {"ref-false": '#foo'}}]},
1043 "then": {"$type": "string"}}, 1164 "then": {"$type": "string"}},
1044 {"when": True, 1165 {"when": True,
1045 "then": {"$type": None}} 1166 "then": {"$type": None}}
1046 ]}) 1167 ]})
1047 r = data_schema.process_schema_conditionals(schema, self._ctx) 1168 r = data_schema.process_schema_conditionals(schema, self._ctx)