Changeset 7590
- Timestamp:
- 03/06/08 22:13:36 (5 years ago)
- Location:
- lang/powershell/PSCustomProviders/trunk
- Files:
-
- 3 added
- 5 modified
-
buildfile/Dotnet.PowerShell.PSTodo.build (modified) (1 diff)
-
src/Dotnet.PowerShell.PSTodo.Test/Dotnet.PowerShell.PSTodo.Test.2005.csproj (modified) (1 diff)
-
src/Dotnet.PowerShell.PSTodo.Test/PSTodo/PSTodoProvider_Test.cs (modified) (5 diffs)
-
src/Dotnet.PowerShell.PSTodo.Test/TestData/case-4 (added)
-
src/Dotnet.PowerShell.PSTodo.Test/TestData/case-4/100 (added)
-
src/Dotnet.PowerShell.PSTodo.Test/TestData/case-4/200 (added)
-
src/Dotnet.PowerShell.PSTodo/PSTodo/PSTodoItem.cs (modified) (1 diff)
-
src/Dotnet.PowerShell.PSTodo/PSTodo/PSTodoProvider.cs (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/powershell/PSCustomProviders/trunk/buildfile/Dotnet.PowerShell.PSTodo.build
r7573 r7590 60 60 </target> 61 61 62 <target name="release" depends="build, install"> 63 </target> 64 62 65 <target name="debug" description="�\�[�X��ug���[�h�Ńr���h���܂�"> 63 66 <property name="configuration" value="Debug" /> -
lang/powershell/PSCustomProviders/trunk/src/Dotnet.PowerShell.PSTodo.Test/Dotnet.PowerShell.PSTodo.Test.2005.csproj
r7573 r7590 41 41 <None Include="TestData\case-2\300" /> 42 42 <None Include="TestData\case-3\100" /> 43 <None Include="TestData\case-4\100" /> 44 <None Include="TestData\case-4\200" /> 43 45 <None Include="UnitTest.2005.nunit" /> 44 46 </ItemGroup> -
lang/powershell/PSCustomProviders/trunk/src/Dotnet.PowerShell.PSTodo.Test/PSTodo/PSTodoProvider_Test.cs
r7573 r7590 131 131 [Test, Category("Success")] 132 132 public void アイテムを追加できる() { 133 string rootPath = CreateTodoDrive("case-1"); 134 135 rsEngine.Invoke("Set-Location Todo:"); 136 Collection<PSObject> result = rsEngine.Invoke("New-Item Hoge -value HogeHoge"); 133 CreateTodoDrive("case-1"); 134 135 Collection<PSObject> result = rsEngine.Invoke("New-Item Hoge -Description HogeHoge"); 137 136 138 137 Assert.That(result, Has.Property("Count", 1)); 139 Assert.That(Directory.GetFiles(rootPath), Has.Length(1)); 138 139 PSTodoItem item = (PSTodoItem)result[0].BaseObject; 140 141 Assert.That(item.Title, Is.EqualTo("Hoge")); 142 Assert.That(item.Description, Is.EqualTo("HogeHoge")); 143 Assert.That(item.IsComplete, Is.False); 140 144 } 141 145 … … 145 149 [Test, Category("Success")] 146 150 public void アイテム一覧を列挙できる() { 147 string rootPath = CreateTodoDrive("case-2"); 148 149 rsEngine.Invoke("Set-Location Todo:"); 151 CreateTodoDrive("case-2"); 152 150 153 Collection<PSObject> result = rsEngine.Invoke("Get-ChildItem"); 151 154 … … 158 161 [Test, Category("Success")] 159 162 public void アイテムを削除できる() { 160 string rootPath = CreateTodoDrive("case-3"); 161 162 rsEngine.Invoke("Set-Location Todo:"); 163 CreateTodoDrive("case-3"); 164 163 165 rsEngine.Invoke("Remove-Item 100"); 164 166 165 Assert.That(Directory.GetFiles(rootPath), Has.Length(0)); 167 Collection<PSObject> result = rsEngine.Invoke("Get-ChildItem"); 168 169 Assert.That(result, Has.Property("Count", 0)); 170 } 171 172 /// <summary> 173 /// アイテムの情報を編集する(タイトルのみ)。 174 /// </summary> 175 [Test, Category("Success")] 176 public void アイテムの情報を編集できる_ケース1() { 177 CreateTodoDrive("case-4"); 178 179 rsEngine.Invoke("Rename-Item 100 101"); 180 181 Collection<PSObject> result = rsEngine.Invoke("Get-ChildItem"); 182 183 PSTodoItem item = (PSTodoItem)result[0].BaseObject; 184 185 Assert.That(item.Title, Is.EqualTo("101")); 186 } 187 188 /// <summary> 189 /// アイテムの情報を編集する。(詳細、完了フラグ) 190 /// </summary> 191 [Test, Category("Success")] 192 public void アイテムの情報を編集できる_ケース2() { 193 CreateTodoDrive("case-4"); 194 195 rsEngine.Invoke("Set-Item 200 -Description Hello -Complete"); 196 197 Collection<PSObject> result = rsEngine.Invoke("Get-ChildItem"); 198 199 PSTodoItem item = (PSTodoItem)result[1].BaseObject; 200 201 Assert.That(item.Description, Is.EqualTo("Hello")); 202 Assert.That(item.IsComplete, Is.True); 166 203 } 167 204 … … 171 208 172 209 /// <summary> 173 /// 指定したケース名のディレクトリをルートディレクトリとする「Todo」ドライブを作成します。 210 /// 指定したケース名のディレクトリをルートディレクトリとする「Todo」ドライブを作成し、 211 /// そのドライブに対してSet-Locationを行います。 174 212 /// </summary> 175 213 /// <param name="caseName">ケース名</param> … … 181 219 string.Format("New-PSDrive Todo Todo '{0}'", path) 182 220 ); 221 rsEngine.Invoke("Set-Location Todo:"); 222 183 223 return path; 184 224 } -
lang/powershell/PSCustomProviders/trunk/src/Dotnet.PowerShell.PSTodo/PSTodo/PSTodoItem.cs
r7503 r7590 100 100 } 101 101 102 /// <summary> 103 /// タイトルと詳細、完了かどうかを設定するコンストラクタ 104 /// </summary> 105 /// <param name="title">タイトル</param> 106 /// <param name="description">詳細</param> 107 /// <param name="isComplete">完了かどうか</param> 108 /// <exception cref="ArgumentException">引数が不正な時</exception> 109 /// <exception cref="ArgumentNullException">引数がnullの時</exception> 110 public PSTodoItem(string title, string description, bool isComplete) 111 : this(title) { 112 this.description = description; 113 this.isComplete = isComplete; 114 } 115 102 116 #endregion 103 117 -
lang/powershell/PSCustomProviders/trunk/src/Dotnet.PowerShell.PSTodo/PSTodo/PSTodoProvider.cs
r7586 r7590 43 43 public class PSTodoProvider : NavigationCmdletProvider { 44 44 45 #region innerClass 46 47 #region PSTodoItemParameters class 48 49 /// <summary> 50 /// アイテムのパラメータ情報を格納するクラス 51 /// </summary> 52 [Serializable] 53 [DebuggerStepThrough] 54 public sealed class PSTodoItemParameters { 55 56 #region fields 57 58 private string description; 59 private SwitchParameter complete; 60 61 #endregion 62 63 #region properties 64 65 /// <summary> 66 /// 詳細を取得、設定します。 67 /// </summary> 68 [Parameter(Position = 0)] 69 public string Description { 70 get { return description; } 71 set { description = value; } 72 } 73 74 /// <summary> 75 /// 完了したかどうかを取得、設定します。 76 /// </summary> 77 [Parameter(Position = 1)] 78 public SwitchParameter Complete { 79 get { return complete; } 80 set { complete = value; } 81 } 82 83 #endregion 84 85 #region constructors 86 87 /// <summary> 88 /// 標準的なコンストラクタ 89 /// </summary> 90 public PSTodoItemParameters() { 91 } 92 93 #endregion 94 95 } 96 97 #endregion 98 99 #endregion 100 45 101 #region constructors 46 102 … … 58 114 /// 指定したアイテムを指定したファイル名でシリアル化します。 59 115 /// </summary> 60 /// <param name=" todoItem">アイテム</param>116 /// <param name="item">アイテム</param> 61 117 /// <param name="path">ファイル名</param> 62 private void Serialize(PSTodoItem todoItem, string path) {118 private void Serialize(PSTodoItem item, string path) { 63 119 using(FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write)) { 64 120 BinaryFormatter formatter = new BinaryFormatter(); 65 121 66 formatter.Serialize(fs, todoItem);122 formatter.Serialize(fs, item); 67 123 } 68 124 } … … 112 168 113 169 /// <summary> 170 /// <see cref="ContainerCmdletProvider.NewItem(string, string, object)"/> 171 /// </summary> 172 /// <param name="path"></param> 173 /// <param name="itemTypeName"></param> 174 /// <param name="newItemValue"></param> 175 protected override void NewItem(string path, string itemTypeName, object newItemValue) { 176 PSTodoItemParameters itemParams = (PSTodoItemParameters)base.DynamicParameters; 177 178 PSTodoItem item = new PSTodoItem( 179 Path.GetFileName(path), 180 itemParams.Description, itemParams.Complete 181 ); 182 Serialize(item, path); 183 184 if(!base.Stopping) { 185 WriteItemObject(item, path, false); 186 } 187 } 188 189 /// <summary> 190 /// <see cref="ContainerCmdletProvider.NewItemDynamicParameters(string, string, object)"/> 191 /// </summary> 192 /// <param name="path"></param> 193 /// <param name="itemTypeName"></param> 194 /// <param name="newItemValue"></param> 195 /// <returns></returns> 196 protected override object NewItemDynamicParameters(string path, string itemTypeName, object newItemValue) { 197 return new PSTodoItemParameters(); 198 } 199 200 /// <summary> 114 201 /// <see cref="ContainerCmdletProvider.GetChildItems(string, bool)"/> 115 202 /// </summary> … … 127 214 128 215 /// <summary> 216 /// <see cref="ContainerCmdletProvider.RenameItem(string, string)"/> 217 /// </summary> 218 /// <param name="path"></param> 219 /// <param name="newName"></param> 220 protected override void RenameItem(string path, string newName) { 221 string destPath = Path.Combine( 222 Path.GetDirectoryName(path), newName 223 ); 224 File.Move(path, destPath); 225 try { 226 PSTodoItem item = Deserialize(destPath); 227 item.Title = newName; 228 229 Serialize(item, destPath); 230 231 } catch(Exception exp) { 232 File.Move(destPath, path); 233 234 base.ThrowTerminatingError( 235 new ErrorRecord(exp, "001", ErrorCategory.WriteError, path) 236 ); 237 } 238 } 239 240 /// <summary> 241 /// <see cref="ItemCmdletProvider.SetItem(string, object)"/> 242 /// </summary> 243 /// <param name="path"></param> 244 /// <param name="value"></param> 245 protected override void SetItem(string path, object value) { 246 PSTodoItemParameters itemParams = (PSTodoItemParameters)base.DynamicParameters; 247 248 PSTodoItem item = Deserialize(path); 249 if(!string.IsNullOrEmpty(itemParams.Description)) { 250 item.Description = itemParams.Description; 251 } 252 item.IsComplete = itemParams.Complete; 253 254 Serialize(item, path); 255 } 256 257 /// <summary> 258 /// <see cref="ItemCmdletProvider.SetItemDynamicParameters(string, object)"/> 259 /// </summary> 260 /// <param name="path"></param> 261 /// <param name="value"></param> 262 /// <returns></returns> 263 protected override object SetItemDynamicParameters(string path, object value) { 264 return new PSTodoItemParameters(); 265 } 266 267 /// <summary> 129 268 /// <see cref="NavigationCmdletProvider.IsItemContainer"/> 130 269 /// </summary> … … 142 281 protected override bool ItemExists(string path) { 143 282 return Directory.Exists(path) || File.Exists(path); 144 }145 146 /// <summary>147 /// <see cref="ContainerCmdletProvider.NewItem(string, string, object)"/>148 /// </summary>149 /// <param name="path"></param>150 /// <param name="itemTypeName"></param>151 /// <param name="newItemValue"></param>152 protected override void NewItem(string path, string itemTypeName, object newItemValue) {153 PSTodoItem todoItem = new PSTodoItem(Path.GetFileName(path));154 todoItem.Description = newItemValue != null ? newItemValue.ToString() : string.Empty;155 156 Serialize(todoItem, path);157 158 WriteItemObject(todoItem, path, false);159 283 } 160 284
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)