//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
// 
#define DEBUG
#define TRACE

using System ;
using System.Diagnostics ;
using Bugslayer ;


public class HappyAppy
{
    public static void Baz ( bool bAssert )
    {
        if ( true == bAssert )
        {
            Debug.Assert ( false ) ;
            Trace.Assert ( false ) ;
        }

    }

    public static void Bar ( bool bAssert )
    {
        Baz ( bAssert ) ;
    }
    public static void Foo ( bool bAssert )
    {
        Bar ( bAssert ) ;
    }

    public static void Main ( )
    {
        Debug.Listeners.Remove ( "Default" ) ;
        BugslayerTraceListener btl = new BugslayerTraceListener ( ) ;
        // Ten kod zawsze powoduje wyświetlenie okna dialogowe, nawet jeśli
        // DEBUG nie jest zdefiniowany!
        btl.Fail ( "Witaj!" ) ;
        Debug.Listeners.Add ( btl ) ;

        Foo ( true ) ;

        Baz ( false ) ;
        Baz ( true ) ;
        Baz ( false ) ;


        Debug.WriteLine ( btl , "WriteLine ( Object , String )" ) ;
        Debug.WriteLine ( "WriteLine ( String )" ) ;
        Debug.WriteLine ( btl ) ;
        Debug.WriteLine ( "WriteLine " , "( String , String )" ) ;

        btl.ShowEventLogTraces = true ;
        btl.EventSource = "MyLog" ;

        Debug.WriteLine ( btl , "WriteLine ( Object , String )" ) ;
        Debug.WriteLine ( "WriteLine ( String )" ) ;
        Debug.WriteLine ( btl ) ;
        Debug.WriteLine ( "WriteLine " , "( String , String )" ) ;

        Debug.Assert ( false ) ;

        Console.WriteLine ( "Sprawdzenie czy klucz MyLog znajduje się w rejestrze" ) ;
        Console.WriteLine ( "Wciśnij dowolny klawisz, aby go usunąć!" ) ;
        Console.Read ( ) ;
        btl.EventSource = null ;
        BugslayerTraceListener.SafeEventLogDelete ( "MyLog" ) ;

        BugslayerTraceSwitch Switcher ;

         Switcher = new BugslayerTraceSwitch ( "TestSwitch"     ,
                                               "Mój testowy przełącznik" ,
                                               "Foo.txt"         ) ;
    }

    public static void TestFunc ( bool Flag )
    {
        if ( true == Flag )
        {
            Console.WriteLine ( "Wywołano TestFunc!" ) ;
        }
        else
        {
            Console.WriteLine ( "Wywołano TestFunc z fałszem!" ) ;
        }
    }
}


