Author: gbayon
Date: Sat Jul 23 06:30:36 2005
New Revision: 224463

URL: http://svn.apache.org/viewcvs?rev=224463&view=rev
Log:
- Added Nunit test for : IBATISNET-97  + more

Modified:
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/CacheTest.cs
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Cache/CacheModel.cs

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/CacheTest.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/CacheTest.cs?rev=224463&r1=224462&r2=224463&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/CacheTest.cs 
(original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/CacheTest.cs 
Sat Jul 23 06:30:36 2005
@@ -1,18 +1,15 @@
 
+
+//<-- To access the definition of the deleagte RowDelegate
 using System;
 using System.Collections;
 using System.Threading;
-using System.Configuration;
-
-using NUnit.Framework;
-
 using IBatisNet.Common;
 using IBatisNet.Common.Utilities;
-using IBatisNet.DataMapper; //<-- To access the definition of the deleagte 
RowDelegate
+using IBatisNet.DataMapper.Configuration.Cache;
 using IBatisNet.DataMapper.MappedStatements;
-
-using IBatisNet.DataMapper.Test;
 using IBatisNet.DataMapper.Test.Domain;
+using NUnit.Framework;
 
 namespace IBatisNet.DataMapper.Test.NUnit.SqlMapTests
 {
@@ -65,14 +62,14 @@
                {
                        IList list = 
sqlMap.QueryForList("GetCachedAccountsViaResultMap", null);
 
-                       int firstId = 
IBatisNet.Common.Utilities.HashCodeProvider.GetIdentityHashCode(list);
+                       int firstId = 
HashCodeProvider.GetIdentityHashCode(list);
                                
//System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(list);
 
                        list = 
sqlMap.QueryForList("GetCachedAccountsViaResultMap", null);
 
                        //Console.WriteLine(sqlMap.GetDataCacheStats());
 
-                       int secondId = 
IBatisNet.Common.Utilities.HashCodeProvider.GetIdentityHashCode(list);
+                       int secondId = 
HashCodeProvider.GetIdentityHashCode(list);
                                
//System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(list);
 
                        Assert.AreEqual(firstId, secondId);
@@ -83,13 +80,14 @@
 
                        list = 
sqlMap.QueryForList("GetCachedAccountsViaResultMap", null);
 
-                       int thirdId = 
IBatisNet.Common.Utilities.HashCodeProvider.GetIdentityHashCode(list);
+                       int thirdId = 
HashCodeProvider.GetIdentityHashCode(list);
 
                        Assert.IsTrue(firstId != thirdId);
 
                        //Console.WriteLine(sqlMap.GetDataCacheStats());
                }
 
+
                /// <summary>
                /// Test flush Cache
                /// </summary>
@@ -98,11 +96,11 @@
                {
                        IList list = 
sqlMap.QueryForList("GetCachedAccountsViaResultMap", null);
 
-                       int firstId = 
IBatisNet.Common.Utilities.HashCodeProvider.GetIdentityHashCode(list);
+                       int firstId = 
HashCodeProvider.GetIdentityHashCode(list);
 
                        list = 
sqlMap.QueryForList("GetCachedAccountsViaResultMap", null);
 
-                       int secondId = 
IBatisNet.Common.Utilities.HashCodeProvider.GetIdentityHashCode(list);
+                       int secondId = 
HashCodeProvider.GetIdentityHashCode(list);
 
                        Assert.AreEqual(firstId, secondId);
 
@@ -110,7 +108,7 @@
 
                        list = 
sqlMap.QueryForList("GetCachedAccountsViaResultMap", null);
 
-                       int thirdId = 
IBatisNet.Common.Utilities.HashCodeProvider.GetIdentityHashCode(list);
+                       int thirdId = 
HashCodeProvider.GetIdentityHashCode(list);
 
                        Assert.IsTrue(firstId != thirdId);
                }
@@ -141,13 +139,91 @@
 
                        list = 
sqlMap.QueryForList("GetCachedAccountsViaResultMap", null);
 
-                       int thirdId = 
IBatisNet.Common.Utilities.HashCodeProvider.GetIdentityHashCode(list);
+                       int thirdId = 
HashCodeProvider.GetIdentityHashCode(list);
 
                        Assert.IsTrue(firstId != thirdId);
 
                }
 
 
+               /// <summary>
+               /// Test Cache Null Object
+               /// </summary>
+               [Test]
+               public void TestCacheNullObject()
+               {
+                       CacheModel cache = GetCacheModel();
+                       cache["testKey"] = null;
+
+                       object returnedObject = cache["testKey"];
+                       Assert.IsNull(returnedObject);
+               }
+
+
+               /// <summary>
+               /// Test CacheHit
+               /// </summary>
+               [Test]
+               public void TestCacheHit() 
+               {
+                       CacheModel cache = GetCacheModel();
+                       string value = "testValue";
+                       cache["testKey"] = value;
+
+                       object returnedObject = cache["testKey"];
+                       Assert.AreEqual(value, returnedObject);
+                       
Assert.AreEqual(HashCodeProvider.GetIdentityHashCode(value), 
HashCodeProvider.GetIdentityHashCode(returnedObject));
+                       Assert.AreEqual(1, cache.HitRatio);
+               }
+
+               /// <summary>
+               /// Test CacheMiss
+               /// </summary>
+               [Test]
+               public void TestCacheMiss() 
+               {
+                       CacheModel cache = GetCacheModel();
+                       string value = "testValue";
+                       cache["testKey"] = value;
+
+                       object returnedObject = cache["wrongKey"];
+                       Assert.IsTrue(!value.Equals(returnedObject));
+                       Assert.IsNull(returnedObject) ;
+                       Assert.AreEqual(0, cache.HitRatio);
+               }
+               
+               /// <summary>
+               /// Test CacheHitMiss
+               /// </summary>
+               [Test]
+               public void TestCacheHitMiss() 
+               {
+                       CacheModel cache = GetCacheModel();
+                       string value = "testValue";
+                       cache["testKey"] = value;
+
+                       object returnedObject = cache["testKey"];
+                       Assert.AreEqual(value, returnedObject);
+                       
Assert.AreEqual(HashCodeProvider.GetIdentityHashCode(value), 
HashCodeProvider.GetIdentityHashCode(returnedObject));
+
+                       returnedObject = cache["wrongKey"];
+                       Assert.IsTrue(!value.Equals(returnedObject));
+                       Assert.IsNull(returnedObject) ;
+                       Assert.AreEqual(0.5, cache.HitRatio);
+               }
+
+
+               private CacheModel GetCacheModel() 
+               {
+                       CacheModel cache = new CacheModel();
+                       cache.FlushInterval = new FlushInterval();
+                       cache.FlushInterval.Minutes = 5;
+                       cache.Implementation = "LRU";
+                       cache.Initialize();
+
+                       return cache;
+               }
+
                #endregion
 
 
@@ -168,15 +244,15 @@
                        {
                                try 
                                {
-                                       MappedStatement statement = 
sqlMap.GetMappedStatement( _statementName );
+                                       MappedStatement statement = 
_sqlMap.GetMappedStatement( _statementName );
                                        IDalSession session = new 
SqlMapSession(sqlMap.DataSource);
                                        session.OpenConnection();
                                        IList list = 
statement.ExecuteQueryForList(session, null);
 
-                                       int firstId = 
IBatisNet.Common.Utilities.HashCodeProvider.GetIdentityHashCode(list);
+                                       //int firstId = 
HashCodeProvider.GetIdentityHashCode(list);
 
                                        list = 
statement.ExecuteQueryForList(session, null);
-                                       int secondId = 
IBatisNet.Common.Utilities.HashCodeProvider.GetIdentityHashCode(list);
+                                       int secondId = 
HashCodeProvider.GetIdentityHashCode(list);
 
                                        _results.Add("id", secondId );
                                        _results.Add("list", list);

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Cache/CacheModel.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Cache/CacheModel.cs?rev=224463&r1=224462&r2=224463&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Cache/CacheModel.cs 
(original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Cache/CacheModel.cs 
Sat Jul 23 06:30:36 2005
@@ -25,16 +25,18 @@
 #endregion
 
 #region Using
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
 using System.Reflection;
 using System.Xml.Serialization;
-
 using IBatisNet.Common.Exceptions;
 using IBatisNet.Common.Logging;
+using IBatisNet.Common.Utilities;
 using IBatisNet.DataMapper.Exceptions;
 using IBatisNet.DataMapper.MappedStatements;
+
 #endregion
 
 namespace IBatisNet.DataMapper.Configuration.Cache
@@ -50,7 +52,7 @@
                #region Fields
 
                [NonSerialized]
-               private static readonly ILog _logger = LogManager.GetLogger( 
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType );
+               private static readonly ILog _logger = LogManager.GetLogger( 
MethodBase.GetCurrentMethod().DeclaringType );
                
                /// <summary>
                /// Constant to turn off periodic cache flushes
@@ -138,9 +140,9 @@
                /// </summary>
                static CacheModel()
                {
-                       
_cacheControllerAliases.Add("MEMORY","IBatisNet.DataMapper.Configuration.Cache.Memory.MemoryCacheControler");
-                       
_cacheControllerAliases.Add("LRU","IBatisNet.DataMapper.Configuration.Cache.Lru.LruCacheController");
-                       
_cacheControllerAliases.Add("FIFO","IBatisNet.DataMapper.Configuration.Cache.Fifo.FifoCacheController");
+                       
_cacheControllerAliases.Add("MEMORY","IBatisNet.DataMapper.Configuration.Cache.Memory.MemoryCacheControler,
 IBatisNet.DataMapper");
+                       
_cacheControllerAliases.Add("LRU","IBatisNet.DataMapper.Configuration.Cache.Lru.LruCacheController,
 IBatisNet.DataMapper");
+                       
_cacheControllerAliases.Add("FIFO","IBatisNet.DataMapper.Configuration.Cache.Fifo.FifoCacheController,
 IBatisNet.DataMapper");
                }
 
                /// <summary>
@@ -148,7 +150,7 @@
                /// </summary>
                public CacheModel() 
                {
-                       _lastFlush = System.DateTime.Now.Ticks;
+                       _lastFlush = DateTime.Now.Ticks;
                }
                #endregion
 
@@ -162,9 +164,6 @@
                        _flushInterval.Initialize();
 
                        // Initialize controller
-                       Assembly assembly = null;
-                       Type type = null;
-
                        _implementation = 
_cacheControllerAliases[_implementation.ToUpper()] as string;
 
                        try 
@@ -174,10 +173,8 @@
                                        throw new DataMapperException ("Error 
instantiating cache controller for cache named '"+_id+"'. Cause: The class for 
name '"+_implementation+"' could not be found.");
                                }
 
-                               assembly = Assembly.GetCallingAssembly();
-
                                // Build the CacheController
-                               type = assembly.GetType(_implementation, true);
+                               Type type = 
Resources.TypeForName(_implementation);
                                object[] arguments = new object[0];
 
                                _controller = 
(ICacheController)Activator.CreateInstance(type, arguments);
@@ -234,7 +231,7 @@
                /// </summary>
                public void Flush() 
                {
-                       _lastFlush = System.DateTime.Now.Ticks;
+                       _lastFlush = DateTime.Now.Ticks;
                        _controller.Flush();
                }
 
@@ -255,7 +252,7 @@
                                lock(this) 
                                {
                                        if (_lastFlush != NO_FLUSH_INTERVAL
-                                               && (System.DateTime.Now.Ticks - 
_lastFlush > _flushInterval.Interval)) 
+                                               && (DateTime.Now.Ticks - 
_lastFlush > _flushInterval.Interval)) 
                                        {
                                                Flush();
                                        }


Reply via email to