Skip to content

Commit

Permalink
preview5 优化一系列单元测试,升级DateTimeOffset的转换。 #59
Browse files Browse the repository at this point in the history
  • Loading branch information
JeffreySu committed Dec 27, 2018
1 parent f6bd7cf commit dc7dc11
Show file tree
Hide file tree
Showing 12 changed files with 164 additions and 9 deletions.
2 changes: 1 addition & 1 deletion src/Senparc.CO2NET.APM/Senparc.CO2NET.APM.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFrameworks>net35;net40;net45;netstandard2.0</TargetFrameworks>

<Version>0.2.1-preview3</Version>
<Version>0.2.1-preview6</Version>
<AssemblyName>Senparc.CO2NET.APM</AssemblyName>
<RootNamespace>Senparc.CO2NET.APM</RootNamespace>
<GeneratePackageOnBuild Condition=" '$(Configuration)' == 'Release' ">true</GeneratePackageOnBuild>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<TargetFrameworks>net45;netstandard2.0;</TargetFrameworks>
<Version>3.2.1-preview3</Version>
<Version>3.2.1-preview6</Version>
<AssemblyName>Senparc.CO2NET.Cache.Memcached</AssemblyName>
<RootNamespace>Senparc.CO2NET.Cache.Memcached</RootNamespace>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<TargetFrameworks>net45;netstandard2.0</TargetFrameworks>
<Version>3.3.1-preview3</Version>
<Version>3.3.1-preview6</Version>
<AssemblyName>Senparc.CO2NET.Cache.Redis</AssemblyName>
<RootNamespace>Senparc.CO2NET.Cache.Redis</RootNamespace>
<GeneratePackageOnBuild Condition=" '$(Configuration)' == 'Release' ">true</GeneratePackageOnBuild>
Expand Down
1 change: 0 additions & 1 deletion src/Senparc.CO2NET.Tests/Cache/Lock/CacheLockTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,6 @@ public void LockTest()


var dtAll1 = SystemTime.Now;
dt0 = SystemTime.Now;

list.ForEach(z => z.Start());

Expand Down
3 changes: 3 additions & 0 deletions src/Senparc.CO2NET.Tests/ConfigTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Senparc.CO2NET.Cache;
Expand All @@ -21,6 +22,7 @@ public void IsDebugTest()

var guid = Guid.NewGuid().ToString();
SenparcTrace.SendCustomLog("IsDebugTest:Debug", guid);
Thread.Sleep(1500);//通过队列写入需要等待
Assert.IsTrue(UnitTestHelper.CheckKeywordsExist(SenparcTraceTests.LogFilePath, guid));
}

Expand All @@ -31,6 +33,7 @@ public void IsDebugTest()

var guid = Guid.NewGuid().ToString();
SenparcTrace.SendCustomLog("IsDebugTest:Not Debug", guid);
Thread.Sleep(1500);//通过队列写入需要等待
Assert.IsFalse(UnitTestHelper.CheckKeywordsExist(SenparcTraceTests.LogFilePath, guid));
}
}
Expand Down
44 changes: 44 additions & 0 deletions src/Senparc.CO2NET.Tests/Helpers/DateTimeHelperTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Senparc.CO2NET.Helpers;
using System;
using System.Collections.Generic;
using System.Text;
Expand All @@ -8,7 +9,50 @@ namespace Senparc.CO2NET.Tests.Helpers
[TestClass]
public class DateTimeHelperTests
{
[TestMethod]
public void GetDateTimeFromXmlTest()
{
{
var timeTicks = "1545888011";
var result = DateTimeHelper.GetDateTimeFromXml(timeTicks);
var timeStr = "12/27/2018 13:20:11";//直接打印出来的结果
Console.WriteLine(result);

var timeStrToString = "2018/12/27 13:20:11";//ToString 之后结果会不一样
Console.WriteLine(result.ToString());
Assert.AreEqual(timeStrToString, result.ToString());
}
}

[TestMethod]
public void GetDateTimeOffsetFromXmlTest()
{
{
var timeTicks = "1545888011";
var result = DateTimeHelper.GetDateTimeOffsetFromXml(timeTicks);
var timeStr = "12/27/2018 13:20:11 +08:00";//直接打印出来的结果
Console.WriteLine(result);
Console.WriteLine(result+"");
Console.WriteLine(result.ToString());
Console.WriteLine(result.Date.ToString());
Console.WriteLine(result.DateTime.ToString());
Console.WriteLine(result.LocalDateTime.ToString());
var timeStrTostring = "2018/12/27 13:20:11 +08:00";//不是用ToString()返回结果不一致
Assert.AreEqual(timeStrTostring, result.ToString());

Console.WriteLine("==============");
var localTimeStr = "2018/12/27 13:20:11";
Console.WriteLine(result.LocalDateTime) ;
Assert.AreEqual(localTimeStr, result.LocalDateTime.ToString());
Console.WriteLine(result.DateTime);
Assert.AreEqual(localTimeStr, result.DateTime.ToString());



//Assert.AreEqual(timeStr, result);

}
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ namespace Senparc.CO2NET.Tests.Helpers
[TestClass]
public class ReflectionHelperTests
{
public ReflectionHelperTests() {
//注册本地缓存注入等
BaseTest.RegisterServiceCollection();
BaseTest.RegisterServiceStart();
}

[TestMethod]
public void CreateInstanceTest()
{
Expand All @@ -31,6 +37,7 @@ public void CreateInstanceTest2()
[TestMethod]
public void CreateStaticMemberTest()
{
//需要注册本地缓存注入
var obj = ReflectionHelper.GetStaticMember("Senparc.CO2NET", "Senparc.CO2NET.Cache", "LocalObjectCacheStrategy", "Instance");
Assert.IsNotNull(obj);
Assert.IsInstanceOfType(obj, typeof(LocalObjectCacheStrategy));
Expand All @@ -40,6 +47,8 @@ public void CreateStaticMemberTest()
[TestMethod]
public void CreateStaticMemberByTypeTest()
{
//需要注册本地缓存注入

var type = typeof(LocalObjectCacheStrategy);
var obj = ReflectionHelper.GetStaticMember(type, "Instance");
Assert.IsNotNull(obj);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@ public class MutipleCacheTestHelperTests
[TestMethod]
public void MutipleCacheTestHelperTest()
{
var exCache = TestExtensionCacheStrategy.Instance;//完成领域缓存注册
BaseTest.RegisterServiceStart();//自动注册Redis,也可以手动注册
BaseTest.RegisterServiceCollection();

var exCache = TestExtensionCacheStrategy.Instance;//完成领域缓存注册
var exRedisCache = TestExtensionRedisCacheStrategy.Instance;//完成Redis领域缓存注册

MutipleCacheTestHelper.RunMutipleCache(() =>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
using Senparc.CO2NET.Cache;
using Senparc.CO2NET.Cache.Redis;
using System;
using System.Collections.Generic;
using System.Text;

namespace Senparc.CO2NET.Tests.TestEntities
{
/// <summary>
/// 测试用的扩展缓存策略(默认使用本地缓存,可以修改)
/// </summary>
public class TestExtensionRedisCacheStrategy : IDomainExtensionCacheStrategy
{
#region 单例

///<summary>
/// LocalCacheStrategy的构造函数
///</summary>
TestExtensionRedisCacheStrategy()
{
//向底层缓存注册当前缓存策略
CacheStrategyDomainWarehouse.RegisterCacheStrategyDomain(this);
}

//静态LocalCacheStrategy
public static TestExtensionRedisCacheStrategy Instance
{
get
{
return Nested.instance;//返回Nested类中的静态成员instance
}
}


class Nested
{
static Nested()
{
}
//将instance设为一个初始化的LocalCacheStrategy新实例
internal static readonly TestExtensionRedisCacheStrategy instance = new TestExtensionRedisCacheStrategy();
}


#endregion


//设置此属性用于指定当前扩展缓存所属领域
public ICacheStrategyDomain CacheStrategyDomain => new TestCacheDomain();

//所使用的基础缓存策略(也可以在委托内动态调整,但是不建议。)
public Func<IBaseObjectCacheStrategy> BaseCacheStrategy =>
() => RedisObjectCacheStrategy.Instance;//使用Redis缓存

/// <summary>
/// 扩展一个方法
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public string GetTestCache(string key)
{
return BaseCacheStrategy().Get(key).ToString();
}

public void RegisterCacheStrategyDomain(IDomainExtensionCacheStrategy extensionCacheStrategy)
{
CacheStrategyDomainWarehouse.RegisterCacheStrategyDomain(extensionCacheStrategy);//对于可以重用的方法,可以考虑做一个基类
}
}
}
29 changes: 26 additions & 3 deletions src/Senparc.CO2NET/Helpers/DateTimeHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ and limitations under the License.
修改描述:1、v0.4.3 修改 DateTime 为 DateTimeOffset
2、添加 支持 DateTimeOffset 类型参数的 GetUnixDateTime() 重写方法
修改标识:Senparc - 20181227
修改描述:添加 GetDateTimeOffsetFromXml() 重写方法
----------------------------------------------------------------*/


Expand All @@ -66,17 +69,37 @@ public class DateTimeHelper
/// </summary>
/// <param name="dateTimeFromXml">微信DateTime</param>
/// <returns></returns>
public static DateTimeOffset GetDateTimeFromXml(long dateTimeFromXml)
public static DateTime GetDateTimeFromXml(long dateTimeFromXml)
{
return BaseTime.AddSeconds(dateTimeFromXml).ToLocalTime();
return GetDateTimeOffsetFromXml(dateTimeFromXml).LocalDateTime;
}

/// <summary>
/// 转换微信DateTime时间到C#时间
/// </summary>
/// <param name="dateTimeFromXml">微信DateTime</param>
/// <returns></returns>
public static DateTimeOffset GetDateTimeFromXml(string dateTimeFromXml)
public static DateTime GetDateTimeFromXml(string dateTimeFromXml)
{
return GetDateTimeFromXml(long.Parse(dateTimeFromXml));
}

/// <summary>
/// 转换微信DateTimeOffset时间到C#时间
/// </summary>
/// <param name="dateTimeFromXml">微信DateTime</param>
/// <returns></returns>
public static DateTimeOffset GetDateTimeOffsetFromXml(long dateTimeFromXml)
{
return BaseTime.AddSeconds(dateTimeFromXml).ToLocalTime();
}

/// <summary>
/// 转换微信DateTimeOffset时间到C#时间
/// </summary>
/// <param name="dateTimeFromXml">微信DateTime</param>
/// <returns></returns>
public static DateTimeOffset GetDateTimeOffsetFromXml(string dateTimeFromXml)
{
return GetDateTimeFromXml(long.Parse(dateTimeFromXml));
}
Expand Down
2 changes: 1 addition & 1 deletion src/Senparc.CO2NET/Senparc.CO2NET.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<TargetFrameworks>net35;net40;net45;netstandard2.0</TargetFrameworks>
<Version>0.4.3-preview3</Version>
<Version>0.4.3-preview6</Version>
<AssemblyName>Senparc.CO2NET</AssemblyName>
<RootNamespace>Senparc.CO2NET</RootNamespace>
<GeneratePackageOnBuild Condition=" '$(Configuration)' == 'Release' ">true</GeneratePackageOnBuild>
Expand Down
3 changes: 3 additions & 0 deletions src/Senparc.CO2NET/Utilities/EntityUtility/EntityUtility.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,9 @@ public static void FillSystemType<T>(T entity, PropertyInfo prop, IConvertible v
case "DateTime":
setValue = DateTimeHelper.GetDateTimeFromXml(value.ToString());
break;
case "DateTimeOffset":
setValue = DateTimeHelper.GetDateTimeOffsetFromXml(value.ToString());
break;
case "Int32":
setValue = value.ConvertTo<int>();
break;
Expand Down

0 comments on commit dc7dc11

Please sign in to comment.