Пример #1
0
		public void TestCRUD()
		{
			a = new PropertyHolder( 0, "MyPH", 2, 3, 4, 5.0, true, DateTime.Now, DateTime.Now,
			                        "char", "nchar", "varchar", "nvarchar", "text", "ntext" );
			// insert
			a.Persist();
			Assert.AreEqual( a.Name, "MyPH" );
			// select
			b = PropertyHolder.Retrieve( a.Id );
			// verify select/insert
			Assert.IsTrue( b.Id != 0 );
			Assert.AreEqual( a.Id, b.Id );
			Assert.AreEqual( "MyPH", b.Name );
			// update
			b.Name = "NewPH";
			b.TDateTime = DateTime.MinValue; // should result in DBNull being written
			b.Persist();
			// verify update
			a = Broker.RetrieveInstance( typeof(PropertyHolder), b.GetKey() ) as PropertyHolder;
			Assert.AreEqual( b.Name, a.Name );
			Assert.AreEqual( DateTime.MinValue, a.TDateTime );
			// delete
			b.Remove();
			// verify delete by counting the number of rows
			SqlBuilder sb = new SqlBuilder( StatementType.Count, typeof(PropertyHolder) );
			sb.AddConstraint( Operator.Equals, "Id", a.Id );
			SqlResult sr = Broker.Execute( sb.GetStatement( true ) );
			Assert.AreEqual( 0, sr.Count, "Object not removed" );
		}
Пример #2
0
		public void TestEnum()
		{
			if( Broker.Provider.GetAnalyzer() != null && GentleSettings.AnalyzerLevel != AnalyzerLevel.None )
			{
				a = new PHEnum( 0, DayOfWeek.Monday, DayOfWeek.Monday, DayOfWeek.Monday );
				// insert
				a.Persist();
				// select as PropertyHolder to get string representations
				b = PropertyHolder.Retrieve( a.Id );
				// verify select/insert
				Assert.AreEqual( "Monday", b.Name );
				Assert.AreEqual( "Monday", b.TNVarChar );
				Assert.AreEqual( "Monday", b.TNText );
				// update
				a.SetEnum( DayOfWeek.Tuesday );
				a.Persist();
				// select and verify update
				a = PHEnum.Retrieve( a.Id );
				Assert.AreEqual( DayOfWeek.Tuesday, a.AsText );
				Assert.AreEqual( DayOfWeek.Tuesday, a.AsNVarChar );
				Assert.AreEqual( DayOfWeek.Tuesday, a.AsNText );
				// clean up
				a.Remove();
			}
		}
Пример #3
0
		public void TestMagicValue()
		{
			int nullValue = -1;
			a = new PropertyHolder( 0, "MyPH", nullValue, nullValue, 4, 5.0, true, new DateTime( 2000, 1, 20 ),
			                        DateTime.Now, "char", "nchar", "varchar", "nvarchar", "text", "ntext" );
			// insert
			a.Persist();
			Assert.AreEqual( a.Name, "MyPH" );
			// select raw data
			GentleSqlFactory sf = Broker.GetSqlFactory();
			SqlResult sr = Broker.Execute( "select TInt from " + sf.GetTableName( "PropertyHolder" ) );
			// verify that TInt of nullValue was converted to DB null
			Assert.IsNull( sr[ 0, "TInt" ], "NullValue was not converted to null." );
			// verify select/insert
			b = PropertyHolder.Retrieve( a.Id );
			Assert.IsTrue( b.Id != 0 );
			Assert.AreEqual( a.Id, b.Id );
			Assert.AreEqual( "MyPH", b.Name );
			Assert.AreEqual( nullValue, b.TInt, "Database NULL was not converted to NullValue." );
			Key key = new Key( typeof(PropertyHolder), true, "Id", a.Id );
			b = Broker.RetrieveInstance( typeof(PropertyHolder), key ) as PropertyHolder;
			// verify select/insert
			Assert.IsTrue( b.Id != 0 );
			Assert.AreEqual( a.Id, b.Id );
			Assert.AreEqual( "MyPH", b.Name );
			Assert.AreEqual( nullValue, b.TInt, "Database NULL was not converted to NullValue." );
			// delete
			b.Remove();
		}
Пример #4
0
		public void TestNullHandling()
		{
			a = PropertyHolder.Retrieve( 2107 );
		}
Пример #5
0
		public void TestNullValueForDecimal()
		{
			ObjectMap om = ObjectFactory.GetMap( null, typeof(PropertyHolder) );
			FieldMap fm = om.GetFieldMap( "TDecimal" );
			decimal dec = (decimal) fm.NullValue;
			Assert.AreEqual( Decimal.MinValue, dec, "Invalid NullValue for test case." );
			// test NULL handling for decimals
			a = new PropertyHolder( 0, "MyPH", 2, 3, Decimal.MinValue, 5.0, true, DateTime.Now, DateTime.Now,
			                        "char", "nchar", "varchar", "nvarchar", "text", "ntext" );
			a.Persist();
			// verify that NULL is inserted when using NullValue
			SqlResult sr = Broker.Execute( "select TDecimal from PropertyHolder where ph_Id = " + a.Id );
			Assert.IsNull( sr[ 0, "TDecimal" ], "Default NullValue was not converted to NULL on insert." );
			// verify that object creation uses correct NullValue
			b = PropertyHolder.Retrieve( a.Id );
			Assert.AreEqual( a.TDecimal, b.TDecimal );
			Assert.AreEqual( Decimal.MinValue, b.TDecimal );
			// verify that translation is disabled for ordinary values
			b.TDecimal = 4;
			b.Persist();
			a = PropertyHolder.Retrieve( b.Id );
			Assert.AreEqual( 4, a.TDecimal );
			// verify that translation is disabled for MaxValue
			// diabled: SQL Server 2005 only works with 2^38-1 (whereas MaxValue is 2^96-1)..
			//a.TDecimal = Decimal.MaxValue;
			//a.Persist();
			//sr = Broker.Execute( "select TDecimal from PropertyHolder where ph_Id = "+a.Id );
			//Assert.IsNotNull( sr[ 0, "TDecimal" ], "Erronous NullValue conversion for MaxValue." );
			// cleanup
			a.Remove();
		}
Пример #6
0
		public void TestMySQLDateTimeBug()
		{
			// insert first
			a = new PropertyHolder( 0, "MyPH1", 2, 3, 4, 5.0, true, DateTime.Now, DateTime.Now,
			                        "char", "nchar", "varchar", "nvarchar", "text", "ntext" );
			a.Persist();
			// wait a bit (dont set below 1s as milliseconds are not preserved by MySQL provider)
			Thread.Sleep( 1000 );
			// insert second
			a = new PropertyHolder( 0, "MyPH2", 2, 3, 4, 5.0, true, DateTime.Now, DateTime.Now,
			                        "char", "nchar", "varchar", "nvarchar", "text", "ntext" );
			a.Persist();
			// select
			IList list = PropertyHolder.ListAll;
			DateTime last = DateTime.MinValue;
			foreach( PropertyHolder ph in list )
			{
				Assert.IsTrue( last != ph.TDateTime, "DateTime not correctly retrieved or saved." );
				last = ph.TDateTime;
			}
		}
Пример #7
0
		public void TestColumnInMultipleConstraints()
		{
			a = new PropertyHolder( 0, "MyPH", 2, 3, 4, 5.0, true, new DateTime( 2000, 1, 20 ), DateTime.Now,
			                        "char", "nchar", "varchar", "nvarchar", "text", "ntext" );
			// insert
			a.Persist();
			// select
			SqlBuilder sb = new SqlBuilder( StatementType.Select, typeof(PropertyHolder) );
			sb.AddConstraint( Operator.GreaterThan, "TDateTime", new DateTime( 1999, 1, 1 ) );
			sb.AddConstraint( Operator.LessThan, "TDateTime", new DateTime( 2001, 1, 1 ) );
			SqlStatement stmt = sb.GetStatement();
			SqlResult sr = stmt.Execute();
			Assert.AreEqual( 1, sr.RowsContained, "Statement did not fetch the expected row." );
		}
Пример #8
0
		public void TestIdFieldNotSame()
		{
			// avoid using DateTime.Now when comparing objects/DTs (because of common db rounding mismatches)
			a = new PropertyHolder( 0, "MyPH", 2, 3, 4, 5.0, true, new DateTime( 2000, 1, 20 ), new DateTime( 2000, 1, 30 ),
			                        "char", "nchar", "varchar", "nvarchar", "text", "ntext" );
			// insert
			a.Persist();
			Assert.AreEqual( a.Name, "MyPH" );
			Assert.AreEqual( a.TDecimal, 4, "TDecimal not updated." );
			// select
			b = PropertyHolder.Retrieve( a.Id );
			Assert.AreEqual( a, b, "Refresh did not properly retrieve all fields." );
			a = (PropertyHolder) Broker.RetrieveInstance( a.GetType(), new Key( typeof(PropertyHolder), true, "Id", a.Id ) );
			Assert.AreEqual( a, b, "Refresh and retrieve did not yield identical objects." );
			// cleanup
			a.Remove();
		}
Пример #9
0
		public void TestNullStringMagicValue()
		{
			GentleSettings.CacheObjects = false;
			CacheManager.Clear();
			// verify INSERT using NULL
			PropertyHolder ph = new PropertyHolder();
			ph.Name = "first";
			ph.TDateTimeNN = DateTime.Now;
			ph.Persist();
			int testPropertyHolderID = ph.Id;
			// check null column on database 
			SqlResult sr = Broker.Execute( "select ph_Name, TVarChar from PropertyHolder where ph_ID = " + testPropertyHolderID );
			Assert.AreEqual( "first", sr[ 0, "ph_Name" ] );
			Assert.AreEqual( null, sr[ 0, "TVarChar" ] );
			// verify UPDATE using NULL
			ph.Name = "second";
			ph.Persist();
			// check null column on database 
			sr = Broker.Execute( "select ph_Name, TVarChar from PropertyHolder where ph_ID = " + testPropertyHolderID );
			Assert.AreEqual( "second", sr[ 0, "ph_Name" ] );
			Assert.AreEqual( null, sr[ 0, "TVarChar" ] );
			// re-load and assert that null is converted to MagicValue
			ph = PropertyHolder.Retrieve( testPropertyHolderID );
			Assert.AreEqual( "second", ph.Name );
			Assert.AreEqual( "", ph.TVarChar );
			// verify UPDATE using ""
			ph.Name = "third";
			ph.Persist();
			// check null column on database 
			sr = Broker.Execute( "select ph_Name, TVarChar from PropertyHolder where ph_ID = " + testPropertyHolderID );
			Assert.AreEqual( "third", sr[ 0, "ph_Name" ] );
			Assert.AreEqual( null, sr[ 0, "TVarChar" ], "Database field no longer Null" );
			// verify INSERT using ""
			ph = new PropertyHolder();
			ph.Name = "fourth";
			ph.TDateTimeNN = DateTime.Now;
			ph.TVarChar = "";
			ph.Persist();
			// check null column on database 
			sr = Broker.Execute( "select ph_Name, TVarChar from PropertyHolder where ph_ID = " + ph.Id );
			Assert.AreEqual( "fourth", sr[ 0, "ph_Name" ] );
			Assert.AreEqual( null, sr[ 0, "TVarChar" ], "Database field no longer Null" );
		}