#include "wektor.h"
#include "wyjatki.h"
#include <iostream>

using namespace std;

int main()
{
	char *komunikat="\nUruchom wyjatkowa sytuacje:\n\t1 - zly indeks\n\t2 - zla inicjalizacja konstruktora\n\t3 - przepelnienie pamieci\n\t4 - inny wyjatek\n\t5 - bez sytuacji wyjatkowych\n\t0 - koniec\n";
	
	int wybor=-1;
	cout << "Program testujacy rzucanie wyjatkow.\n";
	while(wybor)
	{
		try
		{
			cout << komunikat; 
			cin >> wybor;
		
			switch(wybor)
			{
				case 1 :
				{
					Wektor<int> wektor1;
					
					wektor1[-10]=1;
					break;
				}
				case 2:
				{
					Wektor<char> wektor2(-2);
					wektor2.Dodaj('a');
					break;
				}
				case 3:
				{
					int rozmiar=1;
					while(1)
					{
						cout << "Rozmiar: " << rozmiar << " kB" << endl;
						Wektor<char> c(rozmiar*1024);		// w koncu zabraknie pamieci
						rozmiar*=2;
					}
					break;
				}
				case 4:
				{
					int x=5;
					throw x;
					break;
				}
				case 5:
				case 0:
					break;
				default:
					cout << "A co to za numer?\n";
			}

			cout << "Nie wystapil zaden wyjatek" << endl;
		}
		catch(BrakPamieci &w)
		{
			cout << "Zlapalem wyjatek typu: BrakPamieci" << endl;
			w.Komunikat();
		}
		catch(ZlyIndeksWektora &w)
		{
			cout << "Zlapalem wyjatek typu: ZlyIndeksWektora" << endl;
			w.Komunikat();
		}
		catch(Wyjatek &w)
		{
			cout << "Zlapalem wyjatek typu: Wyjatek" << endl;
			w.Komunikat();
		}
		catch(...)
		{
			cout << "Wystapil niezidentyfikowany wyjatek\n";
		}
	}

}