//
// 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 System.Collections;
using System.Collections.Specialized;

namespace FrameworkLibraries
{
	public class CollectionsUtilMain 
	{
		static void Main(string [] args)
		{
			Hashtable ht = CollectionsUtil.CreateCaseInsensitiveHashtable();
			ht.Add("Pierwszy", "To jest pierwszy element");
			ht.Add("Drugi", "To jest drugi element");
			ht.Add("Trzeci", "To jest trzeci element");
			ht.Add("Czwarty", "To jest czwarty element");
			ht.Add("Piąty", "To jest piąty element");
			foreach(DictionaryEntry de in ht)
			{
				Console.WriteLine("{0} {1}", de.Key, de.Value);
			}
			Console.WriteLine("Zawiera \"pierwszy\": {0}", ht.Contains("pierwszy"));
			Console.WriteLine("Zawiera \"szósty\": {0}", ht.Contains("szósty"));
			Console.WriteLine("ht[\"PIERWSZY\"]: \"{0}\"", ht["PIERWSZY"]);

			// Teraz posortowana lista niewrażliwa na wielkość liter
			SortedList sl = CollectionsUtil.CreateCaseInsensitiveSortedList();
			sl.Add("Pierwszy", "To jest pierwszy element");
			sl.Add("Drugi", "To jest drugi element");
			sl.Add("Trzeci", "To jest trzeci element");
			sl.Add("Czwarty", "To jest czwarty element");
			sl.Add("Piąty", "To jest piąty element");

			foreach(DictionaryEntry de in sl)
			{
				Console.WriteLine("\"{0}\" {1}", de.Key, de.Value);
			}
			Console.WriteLine("Zawiera \"pierwszy\": {0}", sl.Contains("pierwszy"));
			Console.WriteLine("Zawiera \"szósty\": {0}", sl.Contains("szósty"));
			Console.WriteLine("sl[\"PIERWSZY\"]: \"{0}\"", sl["PIERWSZY"]);

		}
	}
}