@@ -1219,3 +1219,79 @@ def test_ncol_ncols(fig_test, fig_ref):
1219
1219
ncols = 3
1220
1220
fig_test .legend (strings ,ncol = ncols )
1221
1221
fig_ref .legend (strings ,ncols = ncols )
1222
+
1223
+
1224
+ def test_loc_invalid_tuple_exception ():
1225
+ # check that exception is raised if the loc arg
1226
+ # of legend is not a 2-tuple of numbers
1227
+ fig ,ax = plt .subplots ()
1228
+ with pytest .raises (ValueError ,match = ('loc must be string, coordinate '
1229
+ 'tuple, or an integer 0-10, not\\ (1.1,\\ )' )):
1230
+ ax .legend (loc = (1.1 , ))
1231
+
1232
+ with pytest .raises (ValueError ,match = ('loc must be string, coordinate '
1233
+ 'tuple, or an integer 0-10, not\\ (0.481, 0.4227, 0.4523\\ )' )):
1234
+ ax .legend (loc = (0.481 ,0.4227 ,0.4523 ))
1235
+
1236
+ with pytest .raises (ValueError ,match = ('loc must be string, coordinate '
1237
+ 'tuple, or an integer 0-10, not\\ (0.481,\' go blue\' \\ )' )):
1238
+ ax .legend (loc = (0.481 ,"go blue" ))
1239
+
1240
+
1241
+ def test_loc_valid_tuple ():
1242
+ fig ,ax = plt .subplots ()
1243
+ ax .legend (loc = (0.481 ,0.442 ))
1244
+ ax .legend (loc = (1 ,2 ))
1245
+
1246
+
1247
+ def test_loc_valid_list ():
1248
+ fig ,ax = plt .subplots ()
1249
+ ax .legend (loc = [0.481 ,0.442 ])
1250
+ ax .legend (loc = [1 ,2 ])
1251
+
1252
+
1253
+ def test_loc_invalid_list_exception ():
1254
+ fig ,ax = plt .subplots ()
1255
+ with pytest .raises (ValueError ,match = ('loc must be string, coordinate '
1256
+ 'tuple, or an integer 0-10, not\\ [1.1, 2.2, 3.3\\ ]' )):
1257
+ ax .legend (loc = [1.1 ,2.2 ,3.3 ])
1258
+
1259
+
1260
+ def test_loc_invalid_type ():
1261
+ fig ,ax = plt .subplots ()
1262
+ with pytest .raises (ValueError ,match = ("loc must be string, coordinate "
1263
+ "tuple, or an integer 0-10, not {'not': True}" )):
1264
+ ax .legend (loc = {'not' :True })
1265
+
1266
+
1267
+ def test_loc_validation_numeric_value ():
1268
+ fig ,ax = plt .subplots ()
1269
+ ax .legend (loc = 0 )
1270
+ ax .legend (loc = 1 )
1271
+ ax .legend (loc = 5 )
1272
+ ax .legend (loc = 10 )
1273
+ with pytest .raises (ValueError ,match = ('loc must be string, coordinate '
1274
+ 'tuple, or an integer 0-10, not 11' )):
1275
+ ax .legend (loc = 11 )
1276
+
1277
+ with pytest .raises (ValueError ,match = ('loc must be string, coordinate '
1278
+ 'tuple, or an integer 0-10, not -1' )):
1279
+ ax .legend (loc = - 1 )
1280
+
1281
+
1282
+ def test_loc_validation_string_value ():
1283
+ fig ,ax = plt .subplots ()
1284
+ ax .legend (loc = 'best' )
1285
+ ax .legend (loc = 'upper right' )
1286
+ ax .legend (loc = 'best' )
1287
+ ax .legend (loc = 'upper right' )
1288
+ ax .legend (loc = 'upper left' )
1289
+ ax .legend (loc = 'lower left' )
1290
+ ax .legend (loc = 'lower right' )
1291
+ ax .legend (loc = 'right' )
1292
+ ax .legend (loc = 'center left' )
1293
+ ax .legend (loc = 'center right' )
1294
+ ax .legend (loc = 'lower center' )
1295
+ ax .legend (loc = 'upper center' )
1296
+ with pytest .raises (ValueError ,match = "'wrong' is not a valid value for" ):
1297
+ ax .legend (loc = 'wrong' )