@@ -1063,6 +1063,171 @@ def test_get(self):
1063
1063
assert 1 == core .get (vec .v (1 , 2 , 3 ), - 3 )
1064
1064
assert None is core .get (vec .v (1 , 2 , 3 ), - 4 )
1065
1065
1066
+ def test_find (self ):
1067
+ assert None is core .find (None , "a" )
1068
+ assert core .map_entry ("a" , 1 ) == core .find (lmap .map ({"a" : 1 }), "a" )
1069
+ assert None is core .find (lmap .map ({"a" : 1 }), "b" )
1070
+ assert core .map_entry (0 , 1 ) == core .find (vec .v (1 , 2 , 3 ), 0 )
1071
+ assert core .map_entry (1 , 2 ) == core .find (vec .v (1 , 2 , 3 ), 1 )
1072
+ assert core .map_entry (2 , 3 ) == core .find (vec .v (1 , 2 , 3 ), 2 )
1073
+ assert None is core .find (vec .v (1 , 2 , 3 ), 3 )
1074
+
1075
+ def test_assoc_in (self ):
1076
+ assert lmap .map ({"a" : 1 }) == core .assoc_in (None , vec .v ("a" ), 1 )
1077
+ assert lmap .map ({"a" : 8 }) == core .assoc_in (lmap .map ({"a" : 1 }), vec .v ("a" ), 8 )
1078
+ assert lmap .map ({"a" : 1 , "b" : "string" }) == core .assoc_in (
1079
+ lmap .map ({"a" : 1 }), vec .v ("b" ), "string"
1080
+ )
1081
+
1082
+ assert lmap .map ({"a" : lmap .map ({"b" : 3 })}) == core .assoc_in (
1083
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}), vec .v ("a" , "b" ), 3
1084
+ )
1085
+ assert lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 4 })})}) == core .assoc_in (
1086
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}),
1087
+ vec .v ("a" , "b" , "c" ),
1088
+ 4 ,
1089
+ )
1090
+ assert lmap .map (
1091
+ {"a" : lmap .map ({"b" : lmap .map ({"c" : 3 , "f" : 6 })})}
1092
+ ) == core .assoc_in (
1093
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}),
1094
+ vec .v ("a" , "b" , "f" ),
1095
+ 6 ,
1096
+ )
1097
+ assert lmap .map (
1098
+ {"a" : lmap .map ({"b" : lmap .map ({"c" : 3 }), "e" : lmap .map ({"f" : 6 })})}
1099
+ ) == core .assoc_in (
1100
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}),
1101
+ vec .v ("a" , "e" ),
1102
+ lmap .map ({"f" : 6 }),
1103
+ )
1104
+
1105
+ assert vec .v ("a" ) == core .assoc_in (vec .Vector .empty (), vec .v (0 ), "a" )
1106
+ assert vec .v ("c" , "b" ) == core .assoc_in (vec .v ("a" , "b" ), vec .v (0 ), "c" )
1107
+ assert vec .v ("a" , "c" ) == core .assoc_in (vec .v ("a" , "b" ), vec .v (1 ), "c" )
1108
+ assert vec .v ("a" , "d" , "c" ) == core .assoc_in (
1109
+ vec .v ("a" , "b" , "c" ), vec .v (1 ), "d"
1110
+ )
1111
+
1112
+ assert vec .v ("a" , vec .v ("q" , "r" , "s" , "w" ), "c" ) == core .assoc_in (
1113
+ vec .v ("a" , vec .v ("q" , "r" , "s" , "t" ), "c" ), vec .v (1 , 3 ), "w"
1114
+ )
1115
+ assert vec .v (
1116
+ "a" , vec .v ("q" , "r" , "s" , lmap .map ({"w" : "y" })), "c"
1117
+ ) == core .assoc_in (
1118
+ vec .v ("a" , vec .v ("q" , "r" , "s" , lmap .map ({"w" : "x" })), "c" ),
1119
+ vec .v (1 , 3 , "w" ),
1120
+ "y" ,
1121
+ )
1122
+ assert vec .v (
1123
+ "a" , vec .v ("q" , "r" , "s" , lmap .map ({"w" : "x" , "v" : "u" })), "c"
1124
+ ) == core .assoc_in (
1125
+ vec .v ("a" , vec .v ("q" , "r" , "s" , lmap .map ({"w" : "x" })), "c" ),
1126
+ vec .v (1 , 3 , "v" ),
1127
+ "u" ,
1128
+ )
1129
+
1130
+ def test_get_in (self ):
1131
+ assert 1 == core .get_in (lmap .map ({"a" : 1 }), vec .v ("a" ))
1132
+ assert None is core .get_in (lmap .map ({"a" : 1 }), vec .v ("b" ))
1133
+ assert 2 == core .get_in (lmap .map ({"a" : 1 }), vec .v ("b" ), 2 )
1134
+
1135
+ assert lmap .map ({"b" : lmap .map ({"c" : 3 })}) == core .get_in (
1136
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}), vec .v ("a" )
1137
+ )
1138
+ assert lmap .map ({"c" : 3 }) == core .get_in (
1139
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}), vec .v ("a" , "b" )
1140
+ )
1141
+ assert 3 == core .get_in (
1142
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}), vec .v ("a" , "b" , "c" )
1143
+ )
1144
+ assert None is core .get_in (
1145
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}), vec .v ("a" , "b" , "f" )
1146
+ )
1147
+ assert None is core .get_in (
1148
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}), vec .v ("a" , "e" , "c" )
1149
+ )
1150
+ assert "Not Found" == core .get_in (
1151
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}),
1152
+ vec .v ("a" , "b" , "f" ),
1153
+ "Not Found" ,
1154
+ )
1155
+ assert "Not Found" == core .get_in (
1156
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}),
1157
+ vec .v ("a" , "e" , "c" ),
1158
+ "Not Found" ,
1159
+ )
1160
+
1161
+ assert "b" == core .get_in (vec .v ("a" , "b" , "c" ), vec .v (1 ))
1162
+ assert "t" == core .get_in (
1163
+ vec .v ("a" , vec .v ("q" , "r" , "s" , "t" ), "c" ), vec .v (1 , 3 )
1164
+ )
1165
+ assert "x" == core .get_in (
1166
+ vec .v ("a" , vec .v ("q" , "r" , "s" , lmap .map ({"w" : "x" })), "c" ),
1167
+ vec .v (1 , 3 , "w" ),
1168
+ )
1169
+ assert None is core .get_in (
1170
+ vec .v ("a" , vec .v ("q" , "r" , "s" , lmap .map ({"w" : "x" })), "c" ),
1171
+ vec .v (1 , 3 , "v" ),
1172
+ )
1173
+
1174
+ def test_update_in (self ):
1175
+ assert lmap .map ({"a" : 2 }) == core .update_in (
1176
+ lmap .map ({"a" : 1 }), vec .v ("a" ), core .inc
1177
+ )
1178
+ assert lmap .map ({"a" : 1 , "b" : lmap .map ({"c" : 3 })}) == core .update_in (
1179
+ lmap .map ({"a" : 1 }), vec .v ("b" ), core .assoc , "c" , 3
1180
+ )
1181
+
1182
+ assert lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 2 })})}) == core .update_in (
1183
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}),
1184
+ vec .v ("a" , "b" , "c" ),
1185
+ core .dec ,
1186
+ )
1187
+ assert lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}) == core .update_in (
1188
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 , "f" : 6 })})}),
1189
+ vec .v ("a" , "b" ),
1190
+ core .dissoc ,
1191
+ "f" ,
1192
+ )
1193
+ assert lmap .map (
1194
+ {"a" : lmap .map ({"b" : lmap .map ({"c" : 3 }), "e" : lmap .map ({"f" : 6 })})}
1195
+ ) == core .update_in (
1196
+ lmap .map ({"a" : lmap .map ({"b" : lmap .map ({"c" : 3 })})}),
1197
+ vec .v ("a" ),
1198
+ core .assoc ,
1199
+ "e" ,
1200
+ lmap .map ({"f" : 6 }),
1201
+ )
1202
+
1203
+ assert vec .v (0 , 2 ) == core .update_in (vec .v (1 , 2 ), vec .v (0 ), core .dec )
1204
+ assert vec .v (1 , 3 ) == core .update_in (vec .v (1 , 2 ), vec .v (1 ), core .inc )
1205
+ assert vec .v ("a" , "B" , "c" ) == core .update_in (
1206
+ vec .v ("a" , "b" , "c" ), vec .v (1 ), lambda s : s .upper ()
1207
+ )
1208
+
1209
+ assert vec .v ("a" , vec .v ("q" , "r" , "s" , "T" ), "c" ) == core .update_in (
1210
+ vec .v ("a" , vec .v ("q" , "r" , "s" , "t" ), "c" ), vec .v (1 , 3 ), lambda s : s .upper ()
1211
+ )
1212
+ assert vec .v (
1213
+ "a" , vec .v ("q" , "r" , "s" , lmap .map ({"w" : "X" })), "c"
1214
+ ) == core .update_in (
1215
+ vec .v ("a" , vec .v ("q" , "r" , "s" , lmap .map ({"w" : "x" })), "c" ),
1216
+ vec .v (1 , 3 , "w" ),
1217
+ lambda s : s .upper (),
1218
+ )
1219
+ assert vec .v (
1220
+ "a" ,
1221
+ vec .v ("q" , "r" , "s" , lmap .map ({"w" : "x" , "v" : lmap .map ({"t" : "u" })})),
1222
+ "c" ,
1223
+ ) == core .update_in (
1224
+ vec .v ("a" , vec .v ("q" , "r" , "s" , lmap .map ({"w" : "x" })), "c" ),
1225
+ vec .v (1 , 3 , "v" ),
1226
+ core .assoc ,
1227
+ "t" ,
1228
+ "u" ,
1229
+ )
1230
+
1066
1231
def test_keys (self ):
1067
1232
assert None is core .keys (lmap .map ({}))
1068
1233
assert llist .l ("a" ) == core .keys (lmap .map ({"a" : 1 }))
0 commit comments