//
// Authors:
//   Rafael Mizrahi   <rafim@mainsoft.com>
//   Erez Lotan       <erezl@mainsoft.com>
//   Vladimir Krasnov <vladimirk@mainsoft.com>
//
//
// Copyright (c) 2002-2005 Mainsoft Corporation.
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace GHTTests.System_Web_dll.System_Web_SessionState
{
	public class HttpSessionState_Add_Nothing
		: GHTBaseWeb 
	{
		#region Web Form Designer generated code
		override protected void OnInit(EventArgs e) 
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent() 
		{    
			this.Load += new System.EventHandler(this.Page_Load);
		}
		#endregion

		private void Page_Load(object sender, System.EventArgs e) 
		{

			System.Web.UI.HtmlControls.HtmlForm frm = (HtmlForm)this.FindControl("Form1");
			GHTTestBegin(frm);

			GHTSubTestBegin("GHTSubTest1");;
			try 
			{
				Session.Clear();
				Session.Add("s_nothing", null);

				if (Session["s_nothing"] == null)
				{
					GHTSubTestAddResult("Session(\"s_nothing\") is really Nothing");
					GHTSubTestAddResult(Session.Count.ToString());
				}
				else
					GHTSubTestAddResult("Session(\"s_nothing\") has " + Session["s_nothing"].GetType().ToString());
			}
			catch (Exception ex) 
			{
				GHTSubTestUnexpectedExceptionCaught(ex);
			}
			GHTSubTestEnd();

			GHTSubTestBegin("GHTSubTest2");
				try 
				{
					Session.Clear();
					Session["name"] = "Name";
					Session["name"] = null;

					if (Session["name"] == null)
					{
						GHTSubTestAddResult("Session(\"name\") is really Nothing");
						GHTSubTestAddResult(Session.Count.ToString());
					}
					else
						GHTSubTestAddResult("Session(\"name\") has " + Session["name"].GetType().ToString());
				}
				catch (Exception ex) 
				{
					GHTSubTestUnexpectedExceptionCaught(ex);
				}
			GHTSubTestEnd();

			GHTSubTestBegin("GHTSubTest1");;
			try 
			{
				Session.Clear();
				Session["name"] = "Name";
				Session[0] = null;

				if (Session[0] == null)
				{
					GHTSubTestAddResult("Session(0) is really Nothing");
					GHTSubTestAddResult(Session.Count.ToString());
				}
				else
					GHTSubTestAddResult("Session(0) has " + Session[0].GetType().ToString());
			}
			catch (Exception ex) 
			{
				GHTSubTestUnexpectedExceptionCaught(ex);
			}
			GHTSubTestEnd();
			GHTTestEnd();
		}
	}
}
