OSDN Git Service

na-get-lib,FunctionalSubTaskのジェネリック化
authorttp <ttp@users.sourceforge.jp>
Sun, 12 Jun 2011 15:16:43 +0000 (00:16 +0900)
committerttp <ttp@users.sourceforge.jp>
Sun, 12 Jun 2011 15:16:43 +0000 (00:16 +0900)
na-get-lib/NaGet.SubCommands.SubTask/FunctionalSubTask.cs
na-get-lib/NaGet.SubCommands/NaGetInstall2.cs
na-get-lib/NaGet.SubCommands/NaGetUninstall2.cs
na-get-lib/NaGet.SubCommands/NaGetUpdate2.cs
test-na-get-lib/FunctionalSubTaskTest.cs
test-na-get-lib/NaGetTaskSet2Test.cs

index e26f3f1..fc86c1f 100644 (file)
@@ -7,18 +7,18 @@ namespace NaGet.SubCommands.SubTask
        /// <summary>
        /// 関数をサブタスク化
        /// </summary>
-       public class FunctionalSubTask : NaGetSubTask
+       public class FunctionalSubTask<T> : NaGetSubTask
        {
-               private Action<object> func = null;
+               private Action<T> func = null;
                
-               private object arg = null;
+               private T arg = default(T);
                
                /// <summary>
                /// コンストラクタ
                /// </summary>
                /// <param name="func">関数</param>
                /// <param name="arg">関数への引数</param>
-               public FunctionalSubTask(Action<object> func, object arg)
+               public FunctionalSubTask(Action<T> func, T arg)
                {
                        this.func = func;
                        this.arg = arg;
index 7cf9cbe..3ee6de0 100644 (file)
@@ -74,7 +74,7 @@ namespace NaGet.SubCommands
                                                           inst.ToString(),
                                                           (isSilentInstall)? " (サイレントインストール)" : string.Empty);
                                registSubTask(msg,
-                                             new FunctionalSubTask(runInstall, inst));
+                                             new FunctionalSubTask<Installation>(runInstall, inst));
                        }
                        registSubTask("インストール済みのソフトリスト更新",
                                      new LocalUpdateSubTask(pkgListMan));
@@ -168,10 +168,8 @@ namespace NaGet.SubCommands
                        return ret;
                }
                
-               private void runInstall(object uninstObj)
+               private void runInstall(Installation inst)
                {
-                       Installation inst = (Installation) uninstObj;
-                       
                        if (! inst.IsInstallablePackage()) {
                                string msg = string.Format("{0}はインストールすることができません", inst.ToString());
                                throw new ApplicationException(msg);
index fcbf1a3..3e8d2e2 100644 (file)
@@ -27,7 +27,7 @@ namespace NaGet.SubCommands
                        initSubTask();
                        foreach (Uninstallation uninst in uninsts) {
                                registSubTask(string.Format("アンインストール: {0}", uninst.ToString()),
-                                             new FunctionalSubTask(runUninstall, uninst));
+                                             new FunctionalSubTask<Uninstallation>(runUninstall, uninst));
                        }
                        registSubTask("インストール済みのソフトリスト更新",
                                      new LocalUpdateSubTask(pkgMan));
@@ -65,10 +65,8 @@ namespace NaGet.SubCommands
                        }
                }
                
-               private void runUninstall(object uninstObj)
+               private void runUninstall(Uninstallation uninst)
                {
-                       Uninstallation uninst = (Uninstallation) uninstObj;
-                       
                        if (uninst.Installed) {
                                try {
                                        uninst.OutputDataReceived += this.ReceivedOutputData;
index 8de79ac..43f8a74 100644 (file)
@@ -54,7 +54,7 @@ namespace NaGet.SubCommands
                                                      new DownloadSubTask(repo.Url.Href, filepath));
                                }
                                registSubTask(string.Format("リスト更新: {0}", NaGet.Env.PackageListFile),
-                                             new FunctionalSubTask(runUpdatePackageListFile, null));
+                                             new FunctionalSubTask<object>(runUpdatePackageListFile, null));
                        }
                        registSubTask("インストール済みのソフトリスト更新",
                                      new LocalUpdateSubTask(this.pkgListMan));
index 39bf9ba..2e90f6e 100644 (file)
@@ -12,14 +12,14 @@ namespace test_na_get_lib
                [Test]
                public void UseProgress()
                {
-                       FunctionalSubTask subtask = new FunctionalSubTask(null, null);
+                       FunctionalSubTask<object> subtask = new FunctionalSubTask<object>(null, null);
                        Assert.IsFalse(subtask.UseProgress);
                }
                
                [Test]
                public void Cancelable()
                {
-                       FunctionalSubTask subtask = new FunctionalSubTask(null, null);
+                       FunctionalSubTask<object> subtask = new FunctionalSubTask<object>(null, null);
                        Assert.IsFalse(subtask.Cancelable);
                }
                
@@ -28,7 +28,7 @@ namespace test_na_get_lib
                {
                        object arg = new object();
                        bool passBlock = false;
-                       FunctionalSubTask subtask = null;
+                       FunctionalSubTask<object> subtask = null;
                        
                        // 正常動作
                        
@@ -38,7 +38,7 @@ namespace test_na_get_lib
                                Assert.IsFalse(subtask.Done);
                                Assert.AreEqual(arg, argv);
                        };
-                       subtask = new FunctionalSubTask(func1, arg);
+                       subtask = new FunctionalSubTask<object>(func1, arg);
                        passBlock = false;
                        subtask.Run();
                        Assert.IsFalse(subtask.Running);
@@ -54,7 +54,7 @@ namespace test_na_get_lib
                                throw new TestException("foobar");
                        };
                        passBlock = false;
-                       subtask = new FunctionalSubTask(func2, null);
+                       subtask = new FunctionalSubTask<object>(func2, null);
                        try {
                                subtask.Run();
                                Assert.IsTrue(passBlock);
@@ -70,7 +70,7 @@ namespace test_na_get_lib
                        
                        // 異常設定
                        
-                       subtask = new FunctionalSubTask(null, null);
+                       subtask = new FunctionalSubTask<object>(null, null);
                        passBlock = false;
                        try {
                                subtask.Run();
index f2350b0..ec0751c 100644 (file)
@@ -17,9 +17,9 @@ namespace test_na_get_lib
                {
                        IList<string> subTaskMsgs = new string[]{"0", "1", "2"};
                        IList<NaGetSubTask> subTasks = new NaGetSubTask[] {
-                               new FunctionalSubTask(null, null),
-                               new FunctionalSubTask(null, null),
-                               new FunctionalSubTask(null, null),
+                               new FunctionalSubTask<object>(null, null),
+                               new FunctionalSubTask<object>(null, null),
+                               new FunctionalSubTask<object>(null, null),
                        };
                        ATaskSetForTest task = new ATaskSetForTest(subTaskMsgs, subTasks);
                        
@@ -57,9 +57,9 @@ namespace test_na_get_lib
                                }
                        };
                        subTasks = new NaGetSubTask[] {
-                               new FunctionalSubTask(funcs[0], null),
-                               new FunctionalSubTask(funcs[1], null),
-                               new FunctionalSubTask(funcs[2], null),
+                               new FunctionalSubTask<object>(funcs[0], null),
+                               new FunctionalSubTask<object>(funcs[1], null),
+                               new FunctionalSubTask<object>(funcs[2], null),
                        };
                        task = new ATaskSetForTest(subTaskMsgs, subTasks);
                        blockCount = 0;
@@ -99,8 +99,8 @@ namespace test_na_get_lib
                                }
                        };
                        subTasks = new NaGetSubTask[] {
-                               new FunctionalSubTask(funcs[0], null),
-                               new FunctionalSubTask(funcs[1], null),
+                               new FunctionalSubTask<object>(funcs[0], null),
+                               new FunctionalSubTask<object>(funcs[1], null),
                        };
                        task = new ATaskSetForTest(subTaskMsgs, subTasks);
                        blockPass.Clear();
@@ -288,7 +288,7 @@ namespace test_na_get_lib
                                blockPassed = true;
                        };
                        subTasks = new NaGetSubTask[] {
-                               new FunctionalSubTask(subTaskBody, null),
+                               new FunctionalSubTask<object>(subTaskBody, null),
                        };
                        task = new ATaskSetForTest(subTaskMsgs, subTasks);
                        task.Run();
@@ -306,7 +306,7 @@ namespace test_na_get_lib
                                blockPassed = true;
                        };
                        subTasks = new NaGetSubTask[] {
-                               new FunctionalSubTask(subTaskBody, null),
+                               new FunctionalSubTask<object>(subTaskBody, null),
                        };
                        task = new ATaskSetForTest(subTaskMsgs, subTasks);
                        task.TaskQueryRaised += delegate (object sender, NaGetTaskQueryArgs e) {