The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
# status test

use strict ;
use warnings ;

use Test::Exception ;
use Test::Warn;
use Test::NoWarnings ;

use Test::More 'no_plan';
use Test::Block qw($Plan);

use Debug::Mixin ; 

{
local $Plan = {'ALWAYS_USE_DEBUGGER' => 2} ;

Debug::Mixin::AddBreakpoint
	(
	NAME    =>   'simple',
	ACTIONS => 
		[
		sub{return(0)},# do NOT jump in debugger
		],
	ACTIVE => 1,
	) ;

warning_like
	{
	Debug::Mixin::ActivateAlwaysUseDebugger(qr/sim/) ;
	} qr/Breakpoint 'simple' will always activate the perl debugger/, "always activate warning" ;
	
is(Debug::Mixin::CheckBreakpoints(), 1, 'jumping into debugger') ;

#cleanup
Debug::Mixin::RemoveAllBreakpoints() ;
}

{
local $Plan = {'ALWAYS_USE_DEBUGGER' => 2} ;

Debug::Mixin::AddBreakpoint
	(
	NAME    =>   'simple',
	ACTIONS => 
		[
		sub{return(0)},# do NOT jump in debugger
		],
	ACTIVE => 1,
	ALWAYS_USE_DEBUGGER => 1,
	) ;

warning_like
	{
	Debug::Mixin::DeactivateAlwaysUseDebugger(qr/./) ;
	} qr/Breakpoint 'simple' will NOT always activate the perl debugger/, "NOT always activate warning" ;

is(Debug::Mixin::CheckBreakpoints(), 0, 'no jumping into debugger') ;

#cleanup
Debug::Mixin::RemoveAllBreakpoints() ;
}


{
local $Plan = {'ACTIVE' => 2} ;

Debug::Mixin::AddBreakpoint
	(
	NAME    =>   'simple',
	ACTIONS => 
		[
		sub{return(0)},# do NOT jump in debugger
		],
	ALWAYS_USE_DEBUGGER => 1,
	) ;

warning_like
	{
	Debug::Mixin::ActivateBreakpoints(qr/SIMPLE/i) ;
	} qr/Breakpoint 'simple' activated/, "activated warning" ;

is(Debug::Mixin::CheckBreakpoints(), 1, 'jumping into debugger') ;

#cleanup
Debug::Mixin::RemoveAllBreakpoints() ;
}

{
local $Plan = {'ACTIVE' => 2} ;

Debug::Mixin::AddBreakpoint
	(
	NAME    =>   'simple',
	ACTIONS => 
		[
		sub{return(0)},# do NOT jump in debugger
		],
	ACTIVE => 1,
	ALWAYS_USE_DEBUGGER => 1,
	) ;

warning_like
	{
	Debug::Mixin::DeactivateBreakpoints(qr/simple/) ;
	} qr/Breakpoint 'simple' deactivated/, "deactivated warning" ;

is(Debug::Mixin::CheckBreakpoints(), 0, 'no jumping into debugger') ;

#cleanup
Debug::Mixin::RemoveAllBreakpoints() ;
}

=comment

{
die "name your test block in line below!" ;
local $Plan = {'' => } ;

is(result, expected, "message") ;
dies_ok
	{
	
	} "" ;

lives_ok
	{
	
	} "" ;

like(result, qr//, '') ;

warning_like
	{
	} qr//i, "";

is_deeply
	(
	generated,
	[],
	'expected values'
	) ;

}

=cut