//
// 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.
//
// 
using System;
using VBException;
using PerlWordCount;
using CPPExceptions;

namespace CrossLanguage
{
	/// <summary>
	/// Podsumowanie dla Class1.
	/// </summary>
	class CrossLanguageException
	{
		static void Main(string[] args)
		{
			Console.WriteLine("\nWyjątek VB\n");
			// Zgłoszenie wyjątku w VB
			try
			{
				VBExceptionClass vbe = new VBExceptionClass();
				vbe.ExceptionGenerator();
			}
			catch(Exception e)
			{
				Console.WriteLine("Przechwycono wyjątek VB " + e.ToString());
			}

			Console.WriteLine("\nWyjątek VC++\n");
			// Zgłoszenie wyjątku w VC++
			try
			{
				CPPExceptionClass vcppe = new CPPExceptionClass();
				vcppe.ExceptionGenerator();
			}
			catch(Exception e)
			{
				Console.WriteLine("Przechwycono wyjątek VC++ " + e.ToString());
			}

			Console.WriteLine("\nWyjątek Perl\n");
			// Teraz spróbujmy użyć Perla
			using (WordCount obj = new WordCount()) 
			{
				// Ustawienie właściwości 'Text'
				obj.Text = "Być albo nie być?";

				// Uzyskanie właściwości 'Text'
				Console.WriteLine("Tekst to '{0}'", obj.Text);

				// Wywołanie 'Count' dla słowa nie znajdującego się w 'Text' powoduje zgłoszenie wyjątku
				try 
				{
					String word = "test";
					Console.WriteLine("{0} pojawia się {1} raza(y)", word, obj.Count(word));
				}
				catch (Exception e) 
				{
					Console.WriteLine(e.ToString());
				}
			}
		}
	}
}
