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" ); }
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(); } }
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(); }
public void TestNullHandling() { a = PropertyHolder.Retrieve( 2107 ); }
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(); }
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; } }
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." ); }
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(); }
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" ); }