/// <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;
inst.ToString(),
(isSilentInstall)? " (サイレントインストール)" : string.Empty);
registSubTask(msg,
- new FunctionalSubTask(runInstall, inst));
+ new FunctionalSubTask<Installation>(runInstall, inst));
}
registSubTask("インストール済みのソフトリスト更新",
new LocalUpdateSubTask(pkgListMan));
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);
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));
}
}
- private void runUninstall(object uninstObj)
+ private void runUninstall(Uninstallation uninst)
{
- Uninstallation uninst = (Uninstallation) uninstObj;
-
if (uninst.Installed) {
try {
uninst.OutputDataReceived += this.ReceivedOutputData;
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));
[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);
}
{
object arg = new object();
bool passBlock = false;
- FunctionalSubTask subtask = null;
+ FunctionalSubTask<object> subtask = null;
// 正常動作
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);
throw new TestException("foobar");
};
passBlock = false;
- subtask = new FunctionalSubTask(func2, null);
+ subtask = new FunctionalSubTask<object>(func2, null);
try {
subtask.Run();
Assert.IsTrue(passBlock);
// 異常設定
- subtask = new FunctionalSubTask(null, null);
+ subtask = new FunctionalSubTask<object>(null, null);
passBlock = false;
try {
subtask.Run();
{
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);
}
};
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;
}
};
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();
blockPassed = true;
};
subTasks = new NaGetSubTask[] {
- new FunctionalSubTask(subTaskBody, null),
+ new FunctionalSubTask<object>(subTaskBody, null),
};
task = new ATaskSetForTest(subTaskMsgs, subTasks);
task.Run();
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) {