1 // ================================================================================================
3 // StringUtilsのテストクラスソース。</summary>
5 // <copyright file="StringUtilsTest.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2010 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Utilities
15 using NUnit.Framework;
18 /// StringUtilsのテストクラスです。
21 public class StringUtilsTest
26 /// DefaultStringメソッドテストケース。
29 public void TestDefaultString()
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以外の文字列"));
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以外の文字列", "初期値"));
49 /// StartsWithメソッドテストケース。
52 public void TestStartsWith()
55 Assert.IsTrue(StringUtils.StartsWith(null, null, 3));
56 Assert.IsFalse(StringUtils.StartsWith(null, "", 2));
57 Assert.IsFalse(StringUtils.StartsWith("", null, 5));
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));
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));
74 /// StartsWithメソッドテストケース(性能試験)。
77 public void TestStartsWithResponse()
79 // テストデータとして適当な、ただしある文字が定期的に出現する長い文字列を生成
80 StringBuilder b = new StringBuilder();
81 int span = 0x7D - 0x20;
82 for (int i = 0; i < 100000; i++)
84 b.Append(Char.ConvertFromUtf32(i % span + 0x20));
87 // 先頭から最後までひたすら実行して時間がかかりすぎないかをチェック
88 string s = b.ToString();
89 for (int i = 0; i < s.Length; i++)
91 StringUtils.StartsWith(s, "a", i);