Skip to content

Commit 9df535c

Browse files
committed
Added IMailFolder.CanOpen property
1 parent 2d7bf76 commit 9df535c

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

MailKit/IMailFolder.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,15 @@ public interface IMailFolder : IEnumerable<MimeMessage>
225225
/// <value><see langword="true" /> if the folder is currently open; otherwise, <see langword="false" />.</value>
226226
bool IsOpen { get; }
227227

228+
/// <summary>
229+
/// Get whether or not the folder can be opened.
230+
/// </summary>
231+
/// <remarks>
232+
/// Gets whether or not the folder can be opened.
233+
/// </remarks>
234+
/// <value><see langword="true" /> if the folder can be opened; otherwise, <see langword="false" />.</value>
235+
bool CanOpen { get; }
236+
228237
/// <summary>
229238
/// Get whether or not the folder exists.
230239
/// </summary>

MailKit/MailFolder.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,17 @@ public abstract bool IsOpen {
296296
get;
297297
}
298298

299+
/// <summary>
300+
/// Get whether or not the folder can be opened.
301+
/// </summary>
302+
/// <remarks>
303+
/// Gets whether or not the folder can be opened.
304+
/// </remarks>
305+
/// <value><see langword="true" /> if the folder can be opened; otherwise, <see langword="false" />.</value>
306+
public bool CanOpen {
307+
get { return (Attributes & (FolderAttributes.NoSelect | FolderAttributes.NonExistent)) == 0; }
308+
}
309+
299310
/// <summary>
300311
/// Get a value indicating whether the folder exists.
301312
/// </summary>

UnitTests/Net/Imap/ImapFolderTests.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1711,6 +1711,7 @@ public void TestCreateRenameDelete ()
17111711
sublevel1.Closed += (o, e) => { sub1Closed++; };
17121712
sublevel2.Closed += (o, e) => { sub2Closed++; };
17131713

1714+
Assert.That (sublevel1.CanOpen, Is.True, "SubLevel1 can be opened");
17141715
sublevel1.Open (FolderAccess.ReadWrite);
17151716
sublevel1.Rename (toplevel2, "SubLevel1");
17161717

@@ -1722,6 +1723,7 @@ public void TestCreateRenameDelete ()
17221723
Assert.That (top1Deleted, Is.EqualTo (1), "TopLevel1 should have received a Deleted event");
17231724
Assert.That (toplevel1.Exists, Is.False, "TopLevel1.Exists");
17241725

1726+
Assert.That (sublevel2.CanOpen, Is.True, "SubLevel2 can be opened");
17251727
sublevel2.Open (FolderAccess.ReadWrite);
17261728
toplevel2.Rename (personal, "TopLevel");
17271729

@@ -1786,6 +1788,7 @@ public async Task TestCreateRenameDeleteAsync ()
17861788
sublevel1.Closed += (o, e) => { sub1Closed++; };
17871789
sublevel2.Closed += (o, e) => { sub2Closed++; };
17881790

1791+
Assert.That (sublevel1.CanOpen, Is.True, "SubLevel1 can be opened");
17891792
await sublevel1.OpenAsync (FolderAccess.ReadWrite);
17901793
await sublevel1.RenameAsync (toplevel2, "SubLevel1");
17911794

@@ -1797,6 +1800,7 @@ public async Task TestCreateRenameDeleteAsync ()
17971800
Assert.That (top1Deleted, Is.EqualTo (1), "TopLevel1 should have received a Deleted event");
17981801
Assert.That (toplevel1.Exists, Is.False, "TopLevel1.Exists");
17991802

1803+
Assert.That (sublevel2.CanOpen, Is.True, "SubLevel2 can be opened");
18001804
await sublevel2.OpenAsync (FolderAccess.ReadWrite);
18011805
await toplevel2.RenameAsync (personal, "TopLevel");
18021806

0 commit comments

Comments
 (0)