using System; using NUnit.Framework; using NHibernate; using NHibernate.Cfg; using System.Reflection; namespace SDLite { /// /// Tiny program to demostrate NHibernate /// public class Survey { private String name; private String groupName; private int status; private int priority; public Survey(){} public Survey(string name, string groupName, int priority, int status) { this.Name = name; this.GroupName = groupName; this.Priority = priority; this.Status = status; } //NHibernate needs accessors public string Name {get{return name;}set{name=value;}} public string GroupName {get{return groupName;}set{groupName = value;}} public int Status {get{return status;}set{status=value;}} public int Priority {get{return priority;}set{priority=value;}} public override string ToString() { return "Survey\r\n Name:"+Name+"\r\n GroupName: "+GroupName+"\r\n Status: "+Status+"\r\n Priority: "+Priority+"\r\n"; } } [TestFixture] public class SurveyTest { Configuration cfg; ISessionFactory factory; [TestFixtureSetUp] public void OneTimeSetUp() { Console.Out.WriteLine("running "+MethodBase.GetCurrentMethod()); cfg = new Configuration(); cfg.AddAssembly("SDLite"); factory = cfg.BuildSessionFactory(); } [TestFixtureTearDown] public void OneTimeTearDown() { Console.Out.WriteLine("running "+MethodBase.GetCurrentMethod()); cfg = null; factory = null; } [Test] public void Save() { Console.Out.WriteLine("running "+MethodBase.GetCurrentMethod()); string name = "TestSurvey42"; Survey s = CreateSurvey(name,"TestGroup",10,1); } [Test] public void Retrieve() { Console.Out.WriteLine("running "+MethodBase.GetCurrentMethod()); string name = "TestSurveyRetrieve"; CreateSurvey(name,"TestGroup",10,1); Survey s = GetSurvey(name); Assert.IsNotNull(s); Assert.AreEqual(s.Name,name); Assert.AreEqual(s.GroupName,"TestGroup"); Assert.AreEqual(s.Priority,10); Console.Out.WriteLine(s.ToString()); } [Test] public void Modify() { Console.Out.WriteLine("running "+MethodBase.GetCurrentMethod()); string name = "TestSurveyModify"; CreateSurvey(name,"TestGroup",10,1); Survey survey = GetSurvey(name); survey.Priority = 5; survey.Status = 0; Console.Out.WriteLine(survey.ToString()); ISession session = factory.OpenSession(); //ITransaction transaction = session.BeginTransaction(); session.Update(survey); //transaction.Commit(); session.Flush(); session.Close(); } /// /// utility method to get a survey /// /// survey name /// survey object public Survey GetSurvey(string name) { ISession session = factory.OpenSession(); session = factory.OpenSession(); Survey s = (Survey)session.Load(typeof(Survey), name); session.Close(); return s; } /// /// If it already exists, it is deleted. /// Then it is created. /// /// survey name public Survey CreateSurvey(string name, string groupName, int priority, int status) { DeleteSurvey(name); ISessionFactory factory = cfg.BuildSessionFactory(); ISession session = factory.OpenSession(); ITransaction transaction = session.BeginTransaction(); Survey survey = new Survey(name,groupName,priority,status); //Console.Out.WriteLine(survey.ToString()); session.Save(survey); transaction.Commit(); session.Close(); return survey; } /// /// deletes the survey if it exists, if it does not exist, we exit quietly /// /// survey name public void DeleteSurvey(string name) { ISessionFactory factory = cfg.BuildSessionFactory(); ISession session = factory.OpenSession(); Survey survey = (Survey)session.Get(typeof(Survey), name); if(survey != null) { ITransaction transaction = session.BeginTransaction(); session.Delete(survey); transaction.Commit(); session.Close(); } } } }