#!/usr/bin/env perl
# Check categories_disabled() works as expected.
use strict;
use warnings;
no warnings qw(uninitialized);
use Test::More qw(no_plan);
use_ok('warnings::everywhere');
# At first, no warning categories are disabled
is_deeply([warnings::everywhere::categories_disabled()],
[], 'No warnings are disabled at first');
ok(warnings::everywhere::_is_bit_set($warnings::Bits{all}),
'The all bit is set');
# We can disable uninitialized warnings
ok(warnings::everywhere::disable_warning_category('uninitialized'),
'We can disable uninitialized warnings');
ok(!warnings::everywhere::_is_bit_set($warnings::Bits{all}),
'The all bit is now unset');
is_deeply([warnings::everywhere::categories_disabled()],
['uninitialized'], 'This is now in our list of disabled categories');
# We can re-enable an unrelated warning; that changes nothing.
ok(warnings::everywhere::enable_warning_category('reserved'),
'We can pointlessly enable reserved warnings');
is_deeply([warnings::everywhere::categories_disabled()],
['uninitialized'], 'Uninitialized warnings are still disabled');
# We can re-enable it
ok(warnings::everywhere::enable_warning_category('uninitialized'),
'We can re-enable uninitialized warnings');
is_deeply([warnings::everywhere::categories_disabled()],
[], 'No warnings are disabled any more');
ok(warnings::everywhere::_is_bit_set($warnings::Bits{all}),
'The all bit is set once more')
or diag(warnings::everywhere::_dump_mask($warnings::Bits{all}));