VB6のコメントじゃまやー。

VB6のコメントを消すプログラムをC#で作ってるなう。

 

単純にシングルクォート(VB6ではコメントの意味。C#でいうところの//に相当)以降を削除するロジックでは以下の場合にNG

 

<NG例>

s = "---I'm a student.---"

s = "---I

<NG例終わり>

 

で、このNG例対策ができているかテストを書くとこんな感じ。

        [TestMethod]
        public void TestMethod3()
        {
            var actual = Program.DeleteComment("s = \"---I'm a student.---\"");
            var expected = "s = \"---I'm a student.---\"";
            Assert.AreEqual(expected, actual);
        }

 

これでいいのだけども、VB6のコードにわざわざダブルクォーテーションをエスケープするという手間がかかっている。手間をかけるとそこに間違いがないとは言い切れない。できることなら、VB6のコードをコピペで済ませたい。

・・・

そうだ、リソースを使おう。

f:id:turkey_pc:20161104120922p:plain

ここならVB6の生きたコードをそのままコピペできる。あとはユニットテストでこのリソースを拾えばOK。

        [TestMethod]
        public void TestMethod3()
        {
            var s = Properties.Resources.TestMethod3InputValue;

            var actual = Program.DeleteComment(s);
            var expected = Properties.Resources.TestMethod3ExpectedValue;

            Assert.AreEqual(expected, actual);
        }

 

ユニットテストの可読性?それは知らん(をい