1 // ================================================================================================
3 // LockObjectのテストクラスソース。</summary>
5 // <copyright file="LockObjectTest.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Utilities
14 using System.Threading.Tasks;
15 using Microsoft.VisualStudio.TestTools.UnitTesting;
18 /// <see cref="LockObject"/>のテストクラスです。
21 public class LockObjectTest
23 #region パラメータ単位のロック用メソッドテストケース
26 /// <see cref="LockObject.GetObject"/>メソッドテストケース(正常系)。
29 public void TestGetObject()
31 // 同じ入力に同じオブジェクトが、違う入力には違うオブジェクトが返ること
32 // ※ 厳密にはハッシュ単位なので一致することもありえるが
33 LockObject lockObject = new LockObject();
34 object obj = lockObject.GetObject("test");
35 Assert.IsNotNull(obj);
36 Assert.AreNotSame(obj, lockObject.GetObject("test2"));
37 Assert.AreSame(obj, lockObject.GetObject("test"));
41 /// <see cref="LockObject.GetObject"/>メソッドテストケース(並列実行)。
43 [TestMethod, Timeout(1500)]
44 public void TestGetObjectParallel()
47 LockObject lockObject = new LockObject();
55 object obj = lockObject.GetObject(key);
56 Assert.IsNotNull(obj);
57 Assert.AreSame(obj, lockObject.GetObject(key));
62 /// <see cref="LockObject.GetObject"/>メソッドテストケース(null)。
65 [ExpectedException(typeof(ArgumentNullException))]
66 public void TestGetObjectNull()
68 new LockObject().GetObject(null);