OSDN Git Service

Merge branch 'develop'
[strokestylet/CsWin10Desktop3.git] / FDK24Tests / UtilitiesTests.cs
1 using Microsoft.VisualStudio.TestTools.UnitTesting;
2 using FDK;
3 using System;
4 using System.Collections.Generic;
5 using System.Linq;
6
7 namespace FDK.Tests
8 {
9         [TestClass()]
10         public class UtilityTests
11         {
12                 // 例外検証用メソッド
13                 private void 例外が出れば成功( Action action )
14                 {
15                         try
16                         {
17                                 action();
18                                 Assert.Fail();  // ここに来るということは、action() で例外がでなかったということ。
19                         }
20                         catch( AssertFailedException )
21                         {
22                                 throw;  // 失敗。
23                         }
24                         catch
25                         {
26                                 // 成功。
27                         }
28                 }
29
30                 // テスト用クラス
31                 class DisposeTest : IDisposable
32                 {
33                         public bool Dispose済み = false;
34                         public void Dispose()
35                         {
36                                 this.Dispose済み = true;
37                         }
38                 }
39
40                 [TestMethod()]
41                 public void 解放するTest()
42                 {
43                         DisposeTest test = null;
44
45                         #region " ref あり Dispose → Dispose して null にする。"
46
47                         test = new DisposeTest();
48                         Assert.IsFalse( test.Dispose済み );    // まだ Dispose されていない
49
50                         FDK.Utilities.解放する( ref test );
51                         Assert.IsNull( test );  // obj が解放された
52
53                         #endregion
54                 }
55
56                 [TestMethod()]
57                 public void 最大公約数を返すTest()
58                 {
59                         int 結果 = 0;
60
61                         // 正常系。
62
63                         Assert.AreEqual( actual: FDK.Utilities.最大公約数を返す( 1, 1 ), expected: 1 );
64                         Assert.AreEqual( actual: FDK.Utilities.最大公約数を返す( 1, 2 ), expected: 1 );
65                         Assert.AreEqual( actual: FDK.Utilities.最大公約数を返す( 3, 1 ), expected: 1 );
66                         Assert.AreEqual( actual: FDK.Utilities.最大公約数を返す( 630, 300 ), expected: 30 );
67
68                         // 準正常系。
69
70                         例外が出れば成功( () => { 結果 = FDK.Utilities.最大公約数を返す( 1, 0 ); } );   // 0 の指定はダメ
71                         例外が出れば成功( () => { 結果 = FDK.Utilities.最大公約数を返す( 1, -1 ); } );   // 負数の指定もダメ
72                 }
73
74                 [TestMethod()]
75                 public void 最小公倍数を返すTest()
76                 {
77                         int 結果 = 0;
78
79                         // 正常系。
80
81                         Assert.AreEqual( actual: FDK.Utilities.最小公倍数を返す( 1, 1 ), expected: 1 );
82                         Assert.AreEqual( actual: FDK.Utilities.最小公倍数を返す( 1, 2 ), expected: 2 );
83                         Assert.AreEqual( actual: FDK.Utilities.最小公倍数を返す( 3, 1 ), expected: 3 );
84                         Assert.AreEqual( actual: FDK.Utilities.最小公倍数を返す( 630, 300 ), expected: 6300 );
85
86                         // 準正常系。
87
88                         例外が出れば成功( () => { 結果 = FDK.Utilities.最小公倍数を返す( 1, 0 ); } );   // 0 の指定はダメ
89                         例外が出れば成功( () => { 結果 = FDK.Utilities.最小公倍数を返す( 1, -1 ); } );   // 負数の指定もダメ
90                 }
91
92                 [TestMethod()]
93                 public void 現在のメソッド名Test()
94                 {
95                         Assert.AreEqual(
96                                 actual: FDK.Utilities.現在のメソッド名,
97                                 expected: typeof( UtilityTests ).ToString() + @"." + nameof( 現在のメソッド名Test ) + @"()",
98                                 ignoreCase: false );
99                 }
100         }
101 }