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