OSDN Git Service

Wikipedia翻訳支援ツール Ver1.01時点のソース
[wptscs/wpts.git] / WptscsTest / Utilities / StringUtilsTest.cs
1 // ================================================================================================
2 // <summary>
3 //      StringUtilsのテストクラスソース。</summary>
4 //
5 // <copyright file="StringUtilsTest.cs" company="honeplusのメモ帳">
6 //      Copyright (C) 2010 Honeplus. All rights reserved.</copyright>
7 // <author>
8 //      Honeplus</author>
9 // ================================================================================================
10
11 namespace Honememo.Utilities
12 {
13     using System;
14     using System.Text;
15     using NUnit.Framework;
16
17     /// <summary>
18     /// StringUtilsのテストクラスです。
19     /// </summary>
20     [TestFixture]
21     public class StringUtilsTest
22     {
23         #region 初期化メソッドテストケース
24
25         /// <summary>
26         /// DefaultStringメソッドテストケース。
27         /// </summary>
28         [Test]
29         public void TestDefaultString()
30         {
31             // 引数一つ
32             Assert.AreEqual(String.Empty, StringUtils.DefaultString(null));
33             Assert.AreEqual(String.Empty, StringUtils.DefaultString(String.Empty));
34             Assert.AreEqual(" ", StringUtils.DefaultString(" "));
35             Assert.AreEqual("null以外の文字列", StringUtils.DefaultString("null以外の文字列"));
36
37             // 引数二つ
38             Assert.AreEqual("初期値", StringUtils.DefaultString(null, "初期値"));
39             Assert.AreEqual(String.Empty, StringUtils.DefaultString(String.Empty, "初期値"));
40             Assert.AreEqual(" ", StringUtils.DefaultString(" ", "初期値"));
41             Assert.AreEqual("null以外の文字列", StringUtils.DefaultString("null以外の文字列", "初期値"));
42         }
43
44         #endregion
45
46         #region 文字列チェックテストケース
47
48         /// <summary>
49         /// StartsWithメソッドテストケース。
50         /// </summary>
51         [Test]
52         public void TestStartsWith()
53         {
54             // null
55             Assert.IsTrue(StringUtils.StartsWith(null, null, 3));
56             Assert.IsFalse(StringUtils.StartsWith(null, "", 2));
57             Assert.IsFalse(StringUtils.StartsWith("", null, 5));
58
59             // 空、文字数
60             Assert.IsFalse(StringUtils.StartsWith("", "", 0));
61             Assert.IsTrue(StringUtils.StartsWith("a", "", 0));
62             Assert.IsTrue(StringUtils.StartsWith("abcedf0123あいうえお", "", 14));
63             Assert.IsFalse(StringUtils.StartsWith("abcedf0123あいうえお", "", 15));
64             Assert.IsFalse(StringUtils.StartsWith("abcedf0123あいうえお", "", -1));
65
66             // 通常
67             Assert.IsTrue(StringUtils.StartsWith("abcedf0123あいうえお", "bc", 1));
68             Assert.IsFalse(StringUtils.StartsWith("abcedf0123あいうえお", "ab", 1));
69             Assert.IsTrue(StringUtils.StartsWith("abcedf0123あいうえお", "あいうえお", 10));
70             Assert.IsFalse(StringUtils.StartsWith("abcedf0123あいうえお", "あいうえおか", 10));
71         }
72
73         /// <summary>
74         /// StartsWithメソッドテストケース(性能試験)。
75         /// </summary>
76         [Test, Timeout(1500)]
77         public void TestStartsWithResponse()
78         {
79             // テストデータとして適当な、ただしある文字が定期的に出現する長い文字列を生成
80             StringBuilder b = new StringBuilder();
81             int span = 0x7D - 0x20;
82             for (int i = 0; i < 100000; i++)
83             {
84                 b.Append(Char.ConvertFromUtf32(i % span + 0x20));
85             }
86
87             // 先頭から最後までひたすら実行して時間がかかりすぎないかをチェック
88             string s = b.ToString();
89             for (int i = 0; i < s.Length; i++)
90             {
91                 StringUtils.StartsWith(s, "a", i);
92             }
93         }
94
95         #endregion
96     }
97 }