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();
}
}
}
}