public void SimpleSmokeTest()
		{
			AR.StartDefaultConversation();

			var software = new Software { Name = "FooBar" };
			software.Save();

			AR.Commit();

			var loaded = AR.Linq<Software>().Where(s => s.Name == "FooBar").First();

			// Will be from 1st level cache, hence same object
			Assert.That(loaded, Is.SameAs(software));
			
			AR.EndDefaultConversation();
		}
		public void SmokeTestOnDifferentSessions()
		{
			AR.StartDefaultConversation();

			var software = new Software { Name = "FooBar" };
			software.Save();

			Assert.That(software.Id, Is.Not.EqualTo(Guid.Empty));

			AR.Commit();
			AR.Restart();

			var loaded = AR.Linq<Software>().Where(s => s.Name == "FooBar").First();

			// Will not be from 1st level cache, hence different object
			Assert.That(loaded, Is.Not.SameAs(software));
			Assert.That(loaded.Id, Is.EqualTo(software.Id));

			AR.EndDefaultConversation();
		}
		public void FullTest()
		{
			// Arrange
			var guid = Guid.NewGuid();
			var software = new Software { Id = Guid.Empty, Name = "FooBar" };

			var mock = new MockInstaller(true);

			var dao = MockRepository.GenerateMock<IDao<Software>>();
			dao.Expect(d => d.Save(software)).WhenCalled(i => { software.Id = guid; });
			dao.Expect(d => d.Find(guid)).Return(software);
			mock.RegisterDaoDouble(dao);

			var conv = MockRepository.GenerateMock<IConversation>();
			conv.Expect(c => c.Execute(Arg<Action>.Is.Anything)).WhenCalled(i => ((Action)i.Arguments[0]).Invoke());
			conv.Expect(c => c.Commit());
			mock.RegisterConversationDouble(conv);

			AR.Install(mock);
			// Act
			using (var conversation = AR.StartConversation())
			{
				conv.Execute(() => software.Save());
				conv.Commit();
				Assert.That(AR.Find<Software>(guid), Is.SameAs(software));
			}

			//Assert
			dao.VerifyAllExpectations();
			conv.VerifyAllExpectations();
		}
		public void ExtSave()
		{
			var software = new Software { Name = "ActiveRecord" };
			mocks.Dao.Expect(d => d.Save(software));
			software.Save();
		}