@@ -288,6 +288,17 @@ def test_logical_not_abs(self):
288
288
np .abs (self .t , out = self .o )
289
289
assert_array_equal (self .o , self .t )
290
290
291
+ # test scalar array specialization
292
+ norm = np .zeros (114 , dtype = bool )[1 :]
293
+ scalar_f = np .ndarray (buffer = np .zeros ((), dtype = bool ), strides = (0 ,),
294
+ shape = norm .shape , dtype = bool )
295
+ scalar_t = np .ndarray (buffer = np .ones ((), dtype = bool ), strides = (0 ,),
296
+ shape = norm .shape , dtype = bool )
297
+ assert_array_equal (~ scalar_f , ~ norm )
298
+ assert_array_equal (np .abs (scalar_f ), norm )
299
+ assert_array_equal (~ scalar_t , norm )
300
+ assert_array_equal (np .abs (scalar_t ), ~ norm )
301
+
291
302
def test_logical_and_or_xor (self ):
292
303
assert_array_equal (self .t | self .t , self .t )
293
304
assert_array_equal (self .f | self .f , self .f )
@@ -310,16 +321,44 @@ def test_logical_and_or_xor(self):
310
321
311
322
assert_array_equal (self .nm & self .t , self .nm )
312
323
assert_array_equal (self .im & self .f , False )
324
+ assert_array_equal (self .t & self .nm , self .nm )
325
+ assert_array_equal (self .f & self .im , False )
313
326
assert_array_equal (self .nm & True , self .nm )
314
327
assert_array_equal (self .im & False , self .f )
328
+ assert_array_equal (True & self .nm , self .nm )
329
+ assert_array_equal (False & self .im , self .f )
315
330
assert_array_equal (self .nm | self .t , self .t )
316
331
assert_array_equal (self .im | self .f , self .im )
332
+ assert_array_equal (self .t | self .nm , self .t )
333
+ assert_array_equal (self .f | self .im , self .im )
317
334
assert_array_equal (self .nm | True , self .t )
318
335
assert_array_equal (self .im | False , self .im )
336
+ assert_array_equal (True | self .nm , self .t )
337
+ assert_array_equal (False | self .im , self .im )
319
338
assert_array_equal (self .nm ^ self .t , self .im )
320
339
assert_array_equal (self .im ^ self .f , self .im )
340
+ assert_array_equal (self .t ^ self .nm , self .im )
341
+ assert_array_equal (self .f ^ self .im , self .im )
321
342
assert_array_equal (self .nm ^ True , self .im )
322
343
assert_array_equal (self .im ^ False , self .im )
344
+ assert_array_equal (True ^ self .nm , self .im )
345
+ assert_array_equal (False ^ self .im , self .im )
346
+
347
+ # test scalar array specialization
348
+ norm = np .zeros (114 , dtype = bool )[1 :]
349
+ scalar_f = np .ndarray (buffer = np .zeros ((), dtype = bool ), strides = (0 ,),
350
+ shape = norm .shape , dtype = bool )
351
+ scalar_t = np .ndarray (buffer = np .ones ((), dtype = bool ), strides = (0 ,),
352
+ shape = norm .shape , dtype = bool )
353
+ assert_array_equal (scalar_f & scalar_t , norm )
354
+ assert_array_equal (scalar_t & scalar_t , ~ norm )
355
+ assert_array_equal (scalar_f & scalar_f , norm )
356
+ assert_array_equal (scalar_f | scalar_t , ~ norm )
357
+ assert_array_equal (scalar_t | scalar_t , ~ norm )
358
+ assert_array_equal (scalar_f | scalar_f , norm )
359
+ assert_array_equal (scalar_f ^ scalar_t , ~ norm )
360
+ assert_array_equal (scalar_t ^ scalar_t , norm )
361
+ assert_array_equal (scalar_f ^ scalar_f , norm )
323
362
324
363
325
364
class TestBoolCmp (TestCase ):
0 commit comments