diff --git a/src/System.Windows.Forms.Primitives/src/Interop/ComCtl32/Interop.ImageList.Duplicate.cs b/src/System.Windows.Forms.Primitives/src/Interop/ComCtl32/Interop.ImageList.Duplicate.cs
index cb0fb51068a..1df9a4bc3e5 100644
--- a/src/System.Windows.Forms.Primitives/src/Interop/ComCtl32/Interop.ImageList.Duplicate.cs
+++ b/src/System.Windows.Forms.Primitives/src/Interop/ComCtl32/Interop.ImageList.Duplicate.cs
@@ -14,13 +14,6 @@ public static partial class ImageList
{
[DllImport(Libraries.Comctl32, ExactSpelling = true, EntryPoint = "ImageList_Duplicate")]
public static extern IntPtr Duplicate(IntPtr himl);
-
- public static IntPtr Duplicate(IHandle himl)
- {
- IntPtr result = Duplicate(himl.Handle);
- GC.KeepAlive(himl);
- return result;
- }
}
}
}
diff --git a/src/System.Windows.Forms/src/Resources/SR.resx b/src/System.Windows.Forms/src/Resources/SR.resx
index 42be0c9949d..c5fbf9d390c 100644
--- a/src/System.Windows.Forms/src/Resources/SR.resx
+++ b/src/System.Windows.Forms/src/Resources/SR.resx
@@ -3344,6 +3344,9 @@ Stack trace where the illegal operation occurred was:
Creation of the ImageList handle did not succeed.
+
+ Duplication of the ImageList handle did not succeed.
+
Image added to an ImageList must either derive from Image or be an Icon.
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.cs.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.cs.xlf
index cc04b50c7a5..68f5f2e99a2 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.cs.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.cs.xlf
@@ -5556,6 +5556,11 @@ Trasování zásobníku, kde došlo k neplatné operaci:
Vytvoření popisovače ImageList se nezdařilo.
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
Obrázek přidaný do seznamu ImageList musí být buď odvozen od objektu Image, nebo musí být objektem Icon.
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.de.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.de.xlf
index f32f3c7be40..facfb331d2a 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.de.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.de.xlf
@@ -5556,6 +5556,11 @@ Stapelüberwachung, in der der unzulässige Vorgang auftrat:
Fehler beim Erstellen des ImageList-Handles.
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
Das zu einer ImageList hinzugefügte Bild muss von "Image" abgeleitet oder ein Symbol sein.
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.es.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.es.xlf
index 134b53aedcc..efd4f88e895 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.es.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.es.xlf
@@ -5556,6 +5556,11 @@ El seguimiento de la pila donde tuvo lugar la operación no válida fue:
Error al crear el identificador de ImageList.
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
Las imágenes que se agreguen a ImageList deben derivar de una imagen o ser un icono.
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.fr.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.fr.xlf
index 768d5b43365..be215a39a61 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.fr.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.fr.xlf
@@ -5556,6 +5556,11 @@ Cette opération non conforme s'est produite sur la trace de la pile :
Échec de la création du handle ImageList.
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
Une image ajoutée à ImageList doit dériver de Image ou être un Icon.
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.it.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.it.xlf
index 99aeecebabd..62312959e36 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.it.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.it.xlf
@@ -5556,6 +5556,11 @@ Traccia dello stack da cui si è verificata l'operazione non valida:
Creazione dell'handle di ImageList non riuscita.
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
Un'immagine aggiunta a ImageList deve essere un'icona o derivare da Image.
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.ja.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.ja.xlf
index 59b228039e1..e5c6c0ad9bf 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.ja.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.ja.xlf
@@ -5556,6 +5556,11 @@ Stack trace where the illegal operation occurred was:
ImageList ハンドルを作成できませんでした。
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
ImageList に追加されるイメージは Image から派生しているか、またはアイコンでなければなりません。
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.ko.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.ko.xlf
index 7dc97859f0c..d8c9a19787e 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.ko.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.ko.xlf
@@ -5556,6 +5556,11 @@ Stack trace where the illegal operation occurred was:
ImageList 핸들을 만들지 못했습니다.
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
ImageList에 추가하는 이미지는 이미지에서 파생되거나 아이콘이어야 합니다.
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.pl.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.pl.xlf
index 03af4a98a00..d28bd8d7e9d 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.pl.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.pl.xlf
@@ -5556,6 +5556,11 @@ Stos śledzenia, w którym wystąpiła zabroniona operacja:
Nie można utworzyć uchwytu elementu ImageList.
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
Obraz dodany do listy ImageList musi dziedziczyć po elemencie Image lub musi być elementem Icon.
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.pt-BR.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.pt-BR.xlf
index b91b8f1b8ff..2088be8a9d0 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.pt-BR.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.pt-BR.xlf
@@ -5556,6 +5556,11 @@ Rastreamento de pilha em que a operação ilegal ocorreu:
A criação do identificador de ImageList não teve êxito.
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
A imagem adicionada a ImageList deve derivar de Image ou ser um Ícone.
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.ru.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.ru.xlf
index 17d5313b6ef..3f8ddb9dd89 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.ru.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.ru.xlf
@@ -5557,6 +5557,11 @@ Stack trace where the illegal operation occurred was:
Не удалось создать дескриптор ImageList.
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
Изображение, добавляемое к ImageList, должно иметь тип, производный от Image, либо тип Icon.
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.tr.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.tr.xlf
index 20e3aeacfcb..3ee1c5aa2ec 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.tr.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.tr.xlf
@@ -5556,6 +5556,11 @@ Geçersiz işlemin gerçekleştiği yığın izi:
ImageList işleyicisi oluşturulamadı.
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
ImageList'e eklenen resim Image'den türetilmeli veya Icon olmalıdır.
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.zh-Hans.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.zh-Hans.xlf
index c22c400c61c..e61df6af22a 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.zh-Hans.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.zh-Hans.xlf
@@ -5556,6 +5556,11 @@ Stack trace where the illegal operation occurred was:
创建 ImageList 句柄失败。
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
添加到 ImageList 的图像必须从 Image 派生或者为 Icon。
diff --git a/src/System.Windows.Forms/src/Resources/xlf/SR.zh-Hant.xlf b/src/System.Windows.Forms/src/Resources/xlf/SR.zh-Hant.xlf
index 51d16d07887..8b4121f208d 100644
--- a/src/System.Windows.Forms/src/Resources/xlf/SR.zh-Hant.xlf
+++ b/src/System.Windows.Forms/src/Resources/xlf/SR.zh-Hant.xlf
@@ -5556,6 +5556,11 @@ Stack trace where the illegal operation occurred was:
建立 ImageList 控制代碼失敗。
+
+ Duplication of the ImageList handle did not succeed.
+ Duplication of the ImageList handle did not succeed.
+
+
Image added to an ImageList must either derive from Image or be an Icon.
只有衍生自 Image 或本身為 Icon 的影像才可以加入至 ImageList 中。
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/ImageList.NativeImageList.cs b/src/System.Windows.Forms/src/System/Windows/Forms/ImageList.NativeImageList.cs
index 713ba71c2ba..800304c3e41 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/ImageList.NativeImageList.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/ImageList.NativeImageList.cs
@@ -1,10 +1,11 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
-#nullable disable
-
+using System.Diagnostics;
+using System.Drawing;
using static Interop;
+using static Interop.ComCtl32;
namespace System.Windows.Forms
{
@@ -12,37 +13,100 @@ public sealed partial class ImageList
{
internal class NativeImageList : IDisposable, IHandle
{
- private IntPtr _himl;
-#if DEBUG
- private readonly string _callStack;
-#endif
+ private const int GrowBy = 4;
+ private const int InitialCapacity = 4;
+
+ private static readonly object s_syncLock = new object();
+
+ public NativeImageList(Ole32.IStream pstm)
+ {
+ IntPtr himl;
+ lock (s_syncLock)
+ {
+ himl = ComCtl32.ImageList.Read(pstm);
+ Init(himl);
+ }
+ }
- internal NativeImageList(IntPtr himl)
+ public NativeImageList(Size imageSize, ILC flags)
{
- _himl = himl;
+ IntPtr himl;
+ lock (s_syncLock)
+ {
+ himl = ComCtl32.ImageList.Create(imageSize.Width, imageSize.Height, flags, InitialCapacity, GrowBy);
+ Init(himl);
+ }
+ }
+
+ private NativeImageList(IntPtr himl)
+ {
+ Handle = himl;
+ }
+
+ private void Init(IntPtr himl)
+ {
+ if (himl != IntPtr.Zero)
+ {
+ Handle = himl;
+ return;
+ }
+
#if DEBUG
- _callStack = Environment.StackTrace;
+ Debug.Fail($"{nameof(NativeImageList)} could not be created. Originating stack:\n{_callStack}");
#endif
+ throw new InvalidOperationException(SR.ImageListCreateFailed);
}
- public IntPtr Handle => _himl;
+ public IntPtr Handle { get; private set; }
public void Dispose()
{
- Dispose(true);
+ lock (s_syncLock)
+ {
+ if (Handle == IntPtr.Zero)
+ {
+ return;
+ }
+
+ ComCtl32.ImageList.Destroy(Handle);
+ Handle = IntPtr.Zero;
+ }
+
+#if DEBUG
GC.SuppressFinalize(this);
+#endif
+ }
+
+#if DEBUG
+ private readonly string _callStack = new StackTrace().ToString();
+
+ ~NativeImageList()
+ {
+ Debug.Fail($"{nameof(NativeImageList)} was not disposed properly. Originating stack:\n{_callStack}");
+
+ // We can't do anything with the fields when we're on the finalizer as they're all classes. If any of
+ // them become structs they'll be a part of this instance and possible to clean up. Ideally we fix
+ // the leaks and never come in on the finalizer.
+ return;
}
+#endif
- public void Dispose(bool disposing)
+ internal NativeImageList Duplicate()
{
- if (_himl != IntPtr.Zero)
+ lock (s_syncLock)
{
- ComCtl32.ImageList.Destroy(_himl);
- _himl = IntPtr.Zero;
+ IntPtr himl = ComCtl32.ImageList.Duplicate(Handle);
+ if (himl != IntPtr.Zero)
+ {
+ return new NativeImageList(himl);
+ }
}
- }
- ~NativeImageList() => Dispose(false);
+#if DEBUG
+ Debug.Fail($"{nameof(NativeImageList)} could not be duplicated. Originating stack:\n{_callStack}");
+#endif
+ throw new InvalidOperationException(SR.ImageListDuplicateFailed);
+ }
}
}
}
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/ImageList.cs b/src/System.Windows.Forms/src/System/Windows/Forms/ImageList.cs
index 10d606c96a0..1af4f2ed3f3 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/ImageList.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/ImageList.cs
@@ -33,9 +33,6 @@ public sealed partial class ImageList : Component, IHandle
private static readonly Color s_fakeTransparencyColor = Color.FromArgb(0x0d, 0x0b, 0x0c);
private static readonly Size s_defaultImageSize = new Size(16, 16);
- private const int InitialCapacity = 4;
- private const int GrowBy = 4;
-
private const int MaxDimension = 256;
private static int s_maxImageWidth = MaxDimension;
private static int s_maxImageHeight = MaxDimension;
@@ -235,7 +232,7 @@ public ImageListStreamer ImageStream
bool recreatingHandle = HandleCreated; // We only need to fire RecreateHandle if there was a previous handle
DestroyHandle();
_originals = null;
- _nativeImageList = new NativeImageList(ComCtl32.ImageList.Duplicate(himl));
+ _nativeImageList = himl.Duplicate();
if (ComCtl32.ImageList.GetIconSize(new HandleRef(this, _nativeImageList.Handle), out int x, out int y).IsTrue())
{
_imageSize = new Size(x, y);
@@ -460,18 +457,20 @@ private void CreateHandle()
try
{
ComCtl32.InitCommonControls();
- _nativeImageList = new NativeImageList(ComCtl32.ImageList.Create(_imageSize.Width, _imageSize.Height, flags, InitialCapacity, GrowBy));
+
+ if (_nativeImageList != null)
+ {
+ _nativeImageList.Dispose();
+ _nativeImageList = null;
+ }
+
+ _nativeImageList = new NativeImageList(_imageSize, flags);
}
finally
{
ThemingScope.Deactivate(userCookie);
}
- if (Handle == IntPtr.Zero)
- {
- throw new InvalidOperationException(SR.ImageListCreateFailed);
- }
-
ComCtl32.ImageList.SetBkColor(this, ComCtl32.CLR.NONE);
Debug.Assert(_originals != null, "Handle not yet created, yet original images are gone");
@@ -532,6 +531,8 @@ protected override void Dispose(bool disposing)
}
}
+ ImageStream?.Dispose();
+
DestroyHandle();
}
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/ImageListStreamer.cs b/src/System.Windows.Forms/src/System/Windows/Forms/ImageListStreamer.cs
index 469a681f392..eefff909e35 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/ImageListStreamer.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/ImageListStreamer.cs
@@ -54,12 +54,11 @@ private ImageListStreamer(SerializationInfo info, StreamingContext context)
try
{
- MemoryStream ms = new MemoryStream(Decompress(dat));
-
+ using MemoryStream ms = new MemoryStream(Decompress(dat));
lock (internalSyncObject)
{
ComCtl32.InitCommonControls();
- nativeImageList = new ImageList.NativeImageList(ComCtl32.ImageList.Read(new Ole32.GPStream(ms)));
+ nativeImageList = new ImageList.NativeImageList(new Ole32.GPStream(ms));
}
}
finally
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/ToolStripItem.cs b/src/System.Windows.Forms/src/System/Windows/Forms/ToolStripItem.cs
index 50ca0194c88..28300ffd4ba 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/ToolStripItem.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/ToolStripItem.cs
@@ -1018,9 +1018,10 @@ public virtual Image Image
get
{
Image image = (Image)Properties.GetObject(s_imageProperty);
- if (image == null && (Owner != null) && (Owner.ImageList != null) && ImageIndexer.ActualIndex >= 0)
+ if (image == null && Owner?.ImageList != null && ImageIndexer.ActualIndex >= 0)
{
- if (ImageIndexer.ActualIndex < Owner.ImageList.Images.Count)
+ bool disposing = _state[s_stateDisposing];
+ if (!disposing && ImageIndexer.ActualIndex < Owner.ImageList.Images.Count)
{
// CACHE (by design). If we fetched out of the image list every time it would dramatically hit perf.
image = Owner.ImageList.Images[ImageIndexer.ActualIndex];
@@ -1036,28 +1037,32 @@ public virtual Image Image
}
set
{
- if (Image != value)
+ if (Image == value)
{
- StopAnimate();
- if (value is Bitmap bmp && ImageTransparentColor != Color.Empty)
- {
- if (bmp.RawFormat.Guid != ImageFormat.Icon.Guid && !ImageAnimator.CanAnimate(bmp))
- {
- bmp.MakeTransparent(ImageTransparentColor);
- }
+ return;
+ }
- value = bmp;
- }
- if (value != null)
+ StopAnimate();
+
+ if (value is Bitmap bmp && ImageTransparentColor != Color.Empty)
+ {
+ if (bmp.RawFormat.Guid != ImageFormat.Icon.Guid && !ImageAnimator.CanAnimate(bmp))
{
- ImageIndex = ImageList.Indexer.DefaultIndex;
+ bmp.MakeTransparent(ImageTransparentColor);
}
- Properties.SetObject(s_imageProperty, value);
- _state[s_stateInvalidMirroredImage] = true;
- Animate();
- InvalidateItemLayout(PropertyNames.Image);
+ value = bmp;
}
+ if (value != null)
+ {
+ ImageIndex = ImageList.Indexer.DefaultIndex;
+ }
+
+ Properties.SetObject(s_imageProperty, value);
+ _state[s_stateInvalidMirroredImage] = true;
+
+ Animate();
+ InvalidateItemLayout(PropertyNames.Image);
}
}
@@ -2056,25 +2061,27 @@ private void Animate()
private void Animate(bool animate)
{
- if (animate != _state[s_stateCurrentlyAnimatingImage])
+ if (animate == _state[s_stateCurrentlyAnimatingImage])
{
- if (animate)
- {
- if (Image != null)
- {
- ImageAnimator.Animate(Image, new EventHandler(OnAnimationFrameChanged));
- _state[s_stateCurrentlyAnimatingImage] = animate;
- }
- }
- else
- {
- if (Image != null)
- {
- ImageAnimator.StopAnimate(Image, new EventHandler(OnAnimationFrameChanged));
- _state[s_stateCurrentlyAnimatingImage] = animate;
- }
- }
+ return;
+ }
+
+ Image image = Image;
+ if (image == null)
+ {
+ return;
+ }
+
+ if (animate)
+ {
+ ImageAnimator.Animate(image, new EventHandler(OnAnimationFrameChanged));
}
+ else
+ {
+ ImageAnimator.StopAnimate(image, new EventHandler(OnAnimationFrameChanged));
+ }
+
+ _state[s_stateCurrentlyAnimatingImage] = animate;
}
internal bool BeginDragForItemReorder()
diff --git a/src/System.Windows.Forms/tests/UnitTests/SerializableTypesTests.cs b/src/System.Windows.Forms/tests/UnitTests/SerializableTypesTests.cs
index cf5bfd9409d..eb5cc4fd9ed 100644
--- a/src/System.Windows.Forms/tests/UnitTests/SerializableTypesTests.cs
+++ b/src/System.Windows.Forms/tests/UnitTests/SerializableTypesTests.cs
@@ -92,8 +92,7 @@ public void ImageListStreamer_RoundTripAndExchangeWithNet()
void ValidateResult(string blob)
{
- ImageListStreamer result = BinarySerialization.EnsureDeserialize(blob);
-
+ using ImageListStreamer result = BinarySerialization.EnsureDeserialize(blob);
using (NativeImageList nativeImageList = result.GetNativeImageList())
{
Assert.True(ComCtl32.ImageList.GetIconSize(new HandleRef(this, nativeImageList.Handle), out int x, out int y).IsTrue());
diff --git a/src/System.Windows.Forms/tests/UnitTests/System/Windows/Forms/ListViewTests.cs b/src/System.Windows.Forms/tests/UnitTests/System/Windows/Forms/ListViewTests.cs
index 6fa6b9b76ce..bff8da7edfb 100644
--- a/src/System.Windows.Forms/tests/UnitTests/System/Windows/Forms/ListViewTests.cs
+++ b/src/System.Windows.Forms/tests/UnitTests/System/Windows/Forms/ListViewTests.cs
@@ -1521,9 +1521,6 @@ public void ListView_GridLines_SetWithHandle_GetReturnsExpected(bool value, int
public static IEnumerable GroupImageList_Set_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
foreach (bool autoArrange in new bool[] { true, false })
{
foreach (bool virtualMode in new bool[] { true, false })
@@ -1532,13 +1529,13 @@ public static IEnumerable GroupImageList_Set_GetReturnsExpected()
{
yield return new object[] { autoArrange, virtualMode, view, null };
yield return new object[] { autoArrange, virtualMode, view, new ImageList() };
- yield return new object[] { autoArrange, virtualMode, view, nonEmptyImageList };
+ yield return new object[] { autoArrange, virtualMode, view, CreateNonEmpty() };
}
}
yield return new object[] { autoArrange, false, View.Tile, null };
yield return new object[] { autoArrange, false, View.Tile, new ImageList() };
- yield return new object[] { autoArrange, false, View.Tile, nonEmptyImageList };
+ yield return new object[] { autoArrange, false, View.Tile, CreateNonEmpty() };
}
}
@@ -1588,56 +1585,53 @@ public void ListView_GroupImageList_SetWithNonNullOldValue_GetReturnsExpected(bo
public static IEnumerable GroupImageList_SetWithHandle_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
yield return new object[] { true, false, View.Details, null };
yield return new object[] { true, false, View.Details, new ImageList() };
- yield return new object[] { true, false, View.Details, nonEmptyImageList };
+ yield return new object[] { true, false, View.Details, CreateNonEmpty() };
yield return new object[] { true, false, View.LargeIcon, null };
yield return new object[] { true, false, View.LargeIcon, new ImageList() };
- yield return new object[] { true, false, View.LargeIcon, nonEmptyImageList };
+ yield return new object[] { true, false, View.LargeIcon, CreateNonEmpty() };
yield return new object[] { true, false, View.List, null };
yield return new object[] { true, false, View.List, new ImageList() };
- yield return new object[] { true, false, View.List, nonEmptyImageList };
+ yield return new object[] { true, false, View.List, CreateNonEmpty() };
yield return new object[] { true, false, View.SmallIcon, null };
yield return new object[] { true, false, View.SmallIcon, new ImageList() };
- yield return new object[] { true, false, View.SmallIcon, nonEmptyImageList };
+ yield return new object[] { true, false, View.SmallIcon, CreateNonEmpty() };
yield return new object[] { true, false, View.Tile, null };
yield return new object[] { true, false, View.Tile, new ImageList() };
- yield return new object[] { true, false, View.Tile, nonEmptyImageList };
+ yield return new object[] { true, false, View.Tile, CreateNonEmpty() };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { autoArrange, true, View.Details, null };
yield return new object[] { autoArrange, true, View.Details, new ImageList() };
- yield return new object[] { autoArrange, true, View.Details, nonEmptyImageList };
+ yield return new object[] { autoArrange, true, View.Details, CreateNonEmpty() };
yield return new object[] { autoArrange, true, View.LargeIcon, null };
yield return new object[] { autoArrange, true, View.LargeIcon, new ImageList() };
- yield return new object[] { autoArrange, true, View.LargeIcon, nonEmptyImageList };
+ yield return new object[] { autoArrange, true, View.LargeIcon, CreateNonEmpty() };
yield return new object[] { autoArrange, true, View.List, null };
yield return new object[] { autoArrange, true, View.List, new ImageList() };
- yield return new object[] { autoArrange, true, View.List, nonEmptyImageList };
+ yield return new object[] { autoArrange, true, View.List, CreateNonEmpty() };
yield return new object[] { autoArrange, true, View.SmallIcon, null };
yield return new object[] { autoArrange, true, View.SmallIcon, new ImageList() };
- yield return new object[] { autoArrange, true, View.SmallIcon, nonEmptyImageList };
+ yield return new object[] { autoArrange, true, View.SmallIcon, CreateNonEmpty() };
}
yield return new object[] { false, false, View.Details, null };
yield return new object[] { false, false, View.Details, new ImageList() };
- yield return new object[] { false, false, View.Details, nonEmptyImageList };
+ yield return new object[] { false, false, View.Details, CreateNonEmpty() };
yield return new object[] { false, false, View.LargeIcon, null };
yield return new object[] { false, false, View.LargeIcon, new ImageList() };
- yield return new object[] { false, false, View.LargeIcon, nonEmptyImageList };
+ yield return new object[] { false, false, View.LargeIcon, CreateNonEmpty() };
yield return new object[] { false, false, View.List, null };
yield return new object[] { false, false, View.List, new ImageList() };
- yield return new object[] { false, false, View.List, nonEmptyImageList };
+ yield return new object[] { false, false, View.List, CreateNonEmpty() };
yield return new object[] { false, false, View.SmallIcon, null };
yield return new object[] { false, false, View.SmallIcon, new ImageList() };
- yield return new object[] { false, false, View.SmallIcon, nonEmptyImageList };
+ yield return new object[] { false, false, View.SmallIcon, CreateNonEmpty() };
yield return new object[] { false, false, View.Tile, null };
yield return new object[] { false, false, View.Tile, new ImageList() };
- yield return new object[] { false, false, View.Tile, nonEmptyImageList };
+ yield return new object[] { false, false, View.Tile, CreateNonEmpty() };
}
[WinFormsTheory]
@@ -1677,56 +1671,53 @@ public void ListView_GroupImageList_SetWithHandle_GetReturnsExpected(bool autoAr
public static IEnumerable GroupImageList_SetWithHandleWithNonNullOldValue_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
yield return new object[] { true, false, View.Details, null };
yield return new object[] { true, false, View.Details, new ImageList() };
- yield return new object[] { true, false, View.Details, nonEmptyImageList };
+ yield return new object[] { true, false, View.Details, CreateNonEmpty() };
yield return new object[] { true, false, View.LargeIcon, null };
yield return new object[] { true, false, View.LargeIcon, new ImageList() };
- yield return new object[] { true, false, View.LargeIcon, nonEmptyImageList };
+ yield return new object[] { true, false, View.LargeIcon, CreateNonEmpty() };
yield return new object[] { true, false, View.List, null };
yield return new object[] { true, false, View.List, new ImageList() };
- yield return new object[] { true, false, View.List, nonEmptyImageList };
+ yield return new object[] { true, false, View.List, CreateNonEmpty() };
yield return new object[] { true, false, View.SmallIcon, null };
yield return new object[] { true, false, View.SmallIcon, new ImageList() };
- yield return new object[] { true, false, View.SmallIcon, nonEmptyImageList };
+ yield return new object[] { true, false, View.SmallIcon, CreateNonEmpty() };
yield return new object[] { true, false, View.Tile, null };
yield return new object[] { true, false, View.Tile, new ImageList() };
- yield return new object[] { true, false, View.Tile, nonEmptyImageList };
+ yield return new object[] { true, false, View.Tile, CreateNonEmpty() };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { autoArrange, true, View.Details, null };
yield return new object[] { autoArrange, true, View.Details, new ImageList() };
- yield return new object[] { autoArrange, true, View.Details, nonEmptyImageList };
+ yield return new object[] { autoArrange, true, View.Details, CreateNonEmpty() };
yield return new object[] { autoArrange, true, View.LargeIcon, null };
yield return new object[] { autoArrange, true, View.LargeIcon, new ImageList() };
- yield return new object[] { autoArrange, true, View.LargeIcon, nonEmptyImageList };
+ yield return new object[] { autoArrange, true, View.LargeIcon, CreateNonEmpty() };
yield return new object[] { autoArrange, true, View.List, null };
yield return new object[] { autoArrange, true, View.List, new ImageList() };
- yield return new object[] { autoArrange, true, View.List, nonEmptyImageList };
+ yield return new object[] { autoArrange, true, View.List, CreateNonEmpty() };
yield return new object[] { autoArrange, true, View.SmallIcon, null };
yield return new object[] { autoArrange, true, View.SmallIcon, new ImageList() };
- yield return new object[] { autoArrange, true, View.SmallIcon, nonEmptyImageList };
+ yield return new object[] { autoArrange, true, View.SmallIcon, CreateNonEmpty() };
}
yield return new object[] { false, false, View.Details, null };
yield return new object[] { false, false, View.Details, new ImageList() };
- yield return new object[] { false, false, View.Details, nonEmptyImageList };
+ yield return new object[] { false, false, View.Details, CreateNonEmpty() };
yield return new object[] { false, false, View.LargeIcon, null };
yield return new object[] { false, false, View.LargeIcon, new ImageList() };
- yield return new object[] { false, false, View.LargeIcon, nonEmptyImageList };
+ yield return new object[] { false, false, View.LargeIcon, CreateNonEmpty() };
yield return new object[] { false, false, View.List, null };
yield return new object[] { false, false, View.List, new ImageList() };
- yield return new object[] { false, false, View.List, nonEmptyImageList };
+ yield return new object[] { false, false, View.List, CreateNonEmpty() };
yield return new object[] { false, false, View.SmallIcon, null };
yield return new object[] { false, false, View.SmallIcon, new ImageList() };
- yield return new object[] { false, false, View.SmallIcon, nonEmptyImageList };
+ yield return new object[] { false, false, View.SmallIcon, CreateNonEmpty() };
yield return new object[] { false, false, View.Tile, null };
yield return new object[] { false, false, View.Tile, new ImageList() };
- yield return new object[] { false, false, View.Tile, nonEmptyImageList };
+ yield return new object[] { false, false, View.Tile, CreateNonEmpty() };
}
[WinFormsTheory]
@@ -1738,7 +1729,6 @@ public void ListView_GroupImageList_SetWithHandleWithNonNullOldValue_GetReturnsE
AutoArrange = autoArrange,
VirtualMode = virtualMode,
View = view,
- GroupImageList = new ImageList()
};
Assert.NotEqual(IntPtr.Zero, listView.Handle);
@@ -2473,9 +2463,6 @@ public void ListView_LabelWrap_SetWithHandle_GetReturnsExpected(bool value, int
public static IEnumerable LargeImageList_Set_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
foreach (bool autoArrange in new bool[] { true, false })
{
foreach (bool virtualMode in new bool[] { true, false })
@@ -2484,13 +2471,13 @@ public static IEnumerable LargeImageList_Set_GetReturnsExpected()
{
yield return new object[] { autoArrange, virtualMode, view, null };
yield return new object[] { autoArrange, virtualMode, view, new ImageList() };
- yield return new object[] { autoArrange, virtualMode, view, nonEmptyImageList };
+ yield return new object[] { autoArrange, virtualMode, view, CreateNonEmpty() };
}
}
yield return new object[] { autoArrange, false, View.Tile, null };
yield return new object[] { autoArrange, false, View.Tile, new ImageList() };
- yield return new object[] { autoArrange, false, View.Tile, nonEmptyImageList };
+ yield return new object[] { autoArrange, false, View.Tile, CreateNonEmpty() };
}
}
@@ -2539,56 +2526,53 @@ public void ListView_LargeImageList_SetWithNonNullOldValue_GetReturnsExpected(bo
public static IEnumerable LargeImageList_SetWithHandle_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
yield return new object[] { true, false, View.Details, null, 0 };
yield return new object[] { true, false, View.Details, new ImageList(), 0 };
- yield return new object[] { true, false, View.Details, nonEmptyImageList, 0 };
+ yield return new object[] { true, false, View.Details, CreateNonEmpty(), 0 };
yield return new object[] { true, false, View.LargeIcon, null, 0 };
yield return new object[] { true, false, View.LargeIcon, new ImageList(), 1 };
- yield return new object[] { true, false, View.LargeIcon, nonEmptyImageList, 1 };
+ yield return new object[] { true, false, View.LargeIcon, CreateNonEmpty(), 1 };
yield return new object[] { true, false, View.List, null, 0 };
yield return new object[] { true, false, View.List, new ImageList(), 0 };
- yield return new object[] { true, false, View.List, nonEmptyImageList, 0 };
+ yield return new object[] { true, false, View.List, CreateNonEmpty(), 0 };
yield return new object[] { true, false, View.SmallIcon, null, 0 };
yield return new object[] { true, false, View.SmallIcon, new ImageList(), 1 };
- yield return new object[] { true, false, View.SmallIcon, nonEmptyImageList, 1 };
+ yield return new object[] { true, false, View.SmallIcon, CreateNonEmpty(), 1 };
yield return new object[] { true, false, View.Tile, null, 0 };
yield return new object[] { true, false, View.Tile, new ImageList(), 0 };
- yield return new object[] { true, false, View.Tile, nonEmptyImageList, 0 };
+ yield return new object[] { true, false, View.Tile, CreateNonEmpty(), 0 };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { autoArrange, true, View.Details, null, 0 };
yield return new object[] { autoArrange, true, View.Details, new ImageList(), 0 };
- yield return new object[] { autoArrange, true, View.Details, nonEmptyImageList, 0 };
+ yield return new object[] { autoArrange, true, View.Details, CreateNonEmpty(), 0 };
yield return new object[] { autoArrange, true, View.LargeIcon, null, 0 };
yield return new object[] { autoArrange, true, View.LargeIcon, new ImageList(), 0 };
- yield return new object[] { autoArrange, true, View.LargeIcon, nonEmptyImageList, 0 };
+ yield return new object[] { autoArrange, true, View.LargeIcon, CreateNonEmpty(), 0 };
yield return new object[] { autoArrange, true, View.List, null, 0 };
yield return new object[] { autoArrange, true, View.List, new ImageList(), 0 };
- yield return new object[] { autoArrange, true, View.List, nonEmptyImageList, 0 };
+ yield return new object[] { autoArrange, true, View.List, CreateNonEmpty(), 0 };
yield return new object[] { autoArrange, true, View.SmallIcon, null, 0 };
yield return new object[] { autoArrange, true, View.SmallIcon, new ImageList(), 0 };
- yield return new object[] { autoArrange, true, View.SmallIcon, nonEmptyImageList, 0 };
+ yield return new object[] { autoArrange, true, View.SmallIcon, CreateNonEmpty(), 0 };
}
yield return new object[] { false, false, View.Details, null, 0 };
yield return new object[] { false, false, View.Details, new ImageList(), 0 };
- yield return new object[] { false, false, View.Details, nonEmptyImageList, 0 };
+ yield return new object[] { false, false, View.Details, CreateNonEmpty(), 0 };
yield return new object[] { false, false, View.LargeIcon, null, 0 };
yield return new object[] { false, false, View.LargeIcon, new ImageList(), 0 };
- yield return new object[] { false, false, View.LargeIcon, nonEmptyImageList, 0 };
+ yield return new object[] { false, false, View.LargeIcon, CreateNonEmpty(), 0 };
yield return new object[] { false, false, View.List, null, 0 };
yield return new object[] { false, false, View.List, new ImageList(), 0 };
- yield return new object[] { false, false, View.List, nonEmptyImageList, 0 };
+ yield return new object[] { false, false, View.List, CreateNonEmpty(), 0 };
yield return new object[] { false, false, View.SmallIcon, null, 0 };
yield return new object[] { false, false, View.SmallIcon, new ImageList(), 0 };
- yield return new object[] { false, false, View.SmallIcon, nonEmptyImageList, 0 };
+ yield return new object[] { false, false, View.SmallIcon, CreateNonEmpty(), 0 };
yield return new object[] { false, false, View.Tile, null, 0 };
yield return new object[] { false, false, View.Tile, new ImageList(), 0 };
- yield return new object[] { false, false, View.Tile, nonEmptyImageList, 0 };
+ yield return new object[] { false, false, View.Tile, CreateNonEmpty(), 0 };
}
[WinFormsTheory]
@@ -2627,56 +2611,53 @@ public void ListView_LargeImageList_SetWithHandle_GetReturnsExpected(bool autoAr
public static IEnumerable LargeImageList_SetWithHandleWithNonNullOldValue_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
yield return new object[] { true, false, View.Details, null, 0 };
yield return new object[] { true, false, View.Details, new ImageList(), 0 };
- yield return new object[] { true, false, View.Details, nonEmptyImageList, 0 };
+ yield return new object[] { true, false, View.Details, CreateNonEmpty(), 0 };
yield return new object[] { true, false, View.LargeIcon, null, 1 };
yield return new object[] { true, false, View.LargeIcon, new ImageList(), 1 };
- yield return new object[] { true, false, View.LargeIcon, nonEmptyImageList, 1 };
+ yield return new object[] { true, false, View.LargeIcon, CreateNonEmpty(), 1 };
yield return new object[] { true, false, View.List, null, 0 };
yield return new object[] { true, false, View.List, new ImageList(), 0 };
- yield return new object[] { true, false, View.List, nonEmptyImageList, 0 };
+ yield return new object[] { true, false, View.List, CreateNonEmpty(), 0 };
yield return new object[] { true, false, View.SmallIcon, null, 1 };
yield return new object[] { true, false, View.SmallIcon, new ImageList(), 1 };
- yield return new object[] { true, false, View.SmallIcon, nonEmptyImageList, 1 };
+ yield return new object[] { true, false, View.SmallIcon, CreateNonEmpty(), 1 };
yield return new object[] { true, false, View.Tile, null, 0 };
yield return new object[] { true, false, View.Tile, new ImageList(), 0 };
- yield return new object[] { true, false, View.Tile, nonEmptyImageList, 0 };
+ yield return new object[] { true, false, View.Tile, CreateNonEmpty(), 0 };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { autoArrange, true, View.Details, null, 0 };
yield return new object[] { autoArrange, true, View.Details, new ImageList(), 0 };
- yield return new object[] { autoArrange, true, View.Details, nonEmptyImageList, 0 };
+ yield return new object[] { autoArrange, true, View.Details, CreateNonEmpty(), 0 };
yield return new object[] { autoArrange, true, View.LargeIcon, null, 0 };
yield return new object[] { autoArrange, true, View.LargeIcon, new ImageList(), 0 };
- yield return new object[] { autoArrange, true, View.LargeIcon, nonEmptyImageList, 0 };
+ yield return new object[] { autoArrange, true, View.LargeIcon, CreateNonEmpty(), 0 };
yield return new object[] { autoArrange, true, View.List, null, 0 };
yield return new object[] { autoArrange, true, View.List, new ImageList(), 0 };
- yield return new object[] { autoArrange, true, View.List, nonEmptyImageList, 0 };
+ yield return new object[] { autoArrange, true, View.List, CreateNonEmpty(), 0 };
yield return new object[] { autoArrange, true, View.SmallIcon, null, 0 };
yield return new object[] { autoArrange, true, View.SmallIcon, new ImageList(), 0 };
- yield return new object[] { autoArrange, true, View.SmallIcon, nonEmptyImageList, 0 };
+ yield return new object[] { autoArrange, true, View.SmallIcon, CreateNonEmpty(), 0 };
}
yield return new object[] { false, false, View.Details, null, 0 };
yield return new object[] { false, false, View.Details, new ImageList(), 0 };
- yield return new object[] { false, false, View.Details, nonEmptyImageList, 0 };
+ yield return new object[] { false, false, View.Details, CreateNonEmpty(), 0 };
yield return new object[] { false, false, View.LargeIcon, null, 0 };
yield return new object[] { false, false, View.LargeIcon, new ImageList(), 0 };
- yield return new object[] { false, false, View.LargeIcon, nonEmptyImageList, 0 };
+ yield return new object[] { false, false, View.LargeIcon, CreateNonEmpty(), 0 };
yield return new object[] { false, false, View.List, null, 0 };
yield return new object[] { false, false, View.List, new ImageList(), 0 };
- yield return new object[] { false, false, View.List, nonEmptyImageList, 0 };
+ yield return new object[] { false, false, View.List, CreateNonEmpty(), 0 };
yield return new object[] { false, false, View.SmallIcon, null, 0 };
yield return new object[] { false, false, View.SmallIcon, new ImageList(), 0 };
- yield return new object[] { false, false, View.SmallIcon, nonEmptyImageList, 0 };
+ yield return new object[] { false, false, View.SmallIcon, CreateNonEmpty(), 0 };
yield return new object[] { false, false, View.Tile, null, 0 };
yield return new object[] { false, false, View.Tile, new ImageList(), 0 };
- yield return new object[] { false, false, View.Tile, nonEmptyImageList, 0 };
+ yield return new object[] { false, false, View.Tile, CreateNonEmpty(), 0 };
}
[WinFormsTheory]
@@ -3082,9 +3063,6 @@ public void ListView_ShowItemToolTips_SetWithHandle_GetReturnsExpected(bool valu
public static IEnumerable SmallImageList_Set_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
foreach (bool autoArrange in new bool[] { true, false })
{
foreach (bool virtualMode in new bool[] { true, false })
@@ -3093,13 +3071,13 @@ public static IEnumerable SmallImageList_Set_GetReturnsExpected()
{
yield return new object[] { autoArrange, virtualMode, view, null };
yield return new object[] { autoArrange, virtualMode, view, new ImageList() };
- yield return new object[] { autoArrange, virtualMode, view, nonEmptyImageList };
+ yield return new object[] { autoArrange, virtualMode, view, CreateNonEmpty() };
}
}
yield return new object[] { autoArrange, false, View.Tile, null };
yield return new object[] { autoArrange, false, View.Tile, new ImageList() };
- yield return new object[] { autoArrange, false, View.Tile, nonEmptyImageList };
+ yield return new object[] { autoArrange, false, View.Tile, CreateNonEmpty() };
}
}
@@ -3148,56 +3126,53 @@ public void ListView_SmallImageList_SetWithNonNullOldValue_GetReturnsExpected(bo
public static IEnumerable SmallImageList_SetWithHandle_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
yield return new object[] { true, false, View.Details, null, 0, 0 };
yield return new object[] { true, false, View.Details, new ImageList(), 1, 0 };
- yield return new object[] { true, false, View.Details, nonEmptyImageList, 1, 0 };
+ yield return new object[] { true, false, View.Details, CreateNonEmpty(), 1, 0 };
yield return new object[] { true, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { true, false, View.LargeIcon, new ImageList(), 1, 0 };
- yield return new object[] { true, false, View.LargeIcon, nonEmptyImageList, 1, 0 };
+ yield return new object[] { true, false, View.LargeIcon, CreateNonEmpty(), 1, 0 };
yield return new object[] { true, false, View.List, null, 0, 0 };
yield return new object[] { true, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { true, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, false, View.SmallIcon, null, 0, 0 };
yield return new object[] { true, false, View.SmallIcon, new ImageList(), 4, 2 };
- yield return new object[] { true, false, View.SmallIcon, nonEmptyImageList, 4, 2 };
+ yield return new object[] { true, false, View.SmallIcon, CreateNonEmpty(), 4, 2 };
yield return new object[] { true, false, View.Tile, null, 0, 0 };
yield return new object[] { true, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { true, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, false, View.Tile, CreateNonEmpty(), 0, 0 };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { autoArrange, true, View.Details, null, 0, 0 };
yield return new object[] { autoArrange, true, View.Details, new ImageList(), 1, 0 };
- yield return new object[] { autoArrange, true, View.Details, nonEmptyImageList, 1, 0 };
+ yield return new object[] { autoArrange, true, View.Details, CreateNonEmpty(), 1, 0 };
yield return new object[] { autoArrange, true, View.LargeIcon, null, 0, 0 };
yield return new object[] { autoArrange, true, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { autoArrange, true, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { autoArrange, true, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { autoArrange, true, View.List, null, 0, 0 };
yield return new object[] { autoArrange, true, View.List, new ImageList(), 0, 0 };
- yield return new object[] { autoArrange, true, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { autoArrange, true, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { autoArrange, true, View.SmallIcon, null, 0, 0 };
yield return new object[] { autoArrange, true, View.SmallIcon, new ImageList(), 2, 2 };
- yield return new object[] { autoArrange, true, View.SmallIcon, nonEmptyImageList, 2, 2 };
+ yield return new object[] { autoArrange, true, View.SmallIcon, CreateNonEmpty(), 2, 2 };
}
yield return new object[] { false, false, View.Details, null, 0, 0 };
yield return new object[] { false, false, View.Details, new ImageList(), 1, 0 };
- yield return new object[] { false, false, View.Details, nonEmptyImageList, 1, 0 };
+ yield return new object[] { false, false, View.Details, CreateNonEmpty(), 1, 0 };
yield return new object[] { false, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { false, false, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { false, false, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, View.List, null, 0, 0 };
yield return new object[] { false, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { false, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, View.SmallIcon, null, 0, 0 };
yield return new object[] { false, false, View.SmallIcon, new ImageList(), 2, 2 };
- yield return new object[] { false, false, View.SmallIcon, nonEmptyImageList, 2, 2 };
+ yield return new object[] { false, false, View.SmallIcon, CreateNonEmpty(), 2, 2 };
yield return new object[] { false, false, View.Tile, null, 0, 0 };
yield return new object[] { false, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { false, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, View.Tile, CreateNonEmpty(), 0, 0 };
}
[WinFormsTheory]
@@ -3236,56 +3211,53 @@ public void ListView_SmallImageList_SetWithHandle_GetReturnsExpected(bool autoAr
public static IEnumerable SmallImageList_SetWithHandleWithNonNullOldValue_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
yield return new object[] { true, false, View.Details, null, 1, 0 };
yield return new object[] { true, false, View.Details, new ImageList(), 1, 0 };
- yield return new object[] { true, false, View.Details, nonEmptyImageList, 1, 0 };
+ yield return new object[] { true, false, View.Details, CreateNonEmpty(), 1, 0 };
yield return new object[] { true, false, View.LargeIcon, null, 1, 0 };
yield return new object[] { true, false, View.LargeIcon, new ImageList(), 1, 0 };
- yield return new object[] { true, false, View.LargeIcon, nonEmptyImageList, 1, 0 };
+ yield return new object[] { true, false, View.LargeIcon, CreateNonEmpty(), 1, 0 };
yield return new object[] { true, false, View.List, null, 0, 0 };
yield return new object[] { true, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { true, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, false, View.SmallIcon, null, 4, 2 };
yield return new object[] { true, false, View.SmallIcon, new ImageList(), 4, 2 };
- yield return new object[] { true, false, View.SmallIcon, nonEmptyImageList, 4, 2 };
+ yield return new object[] { true, false, View.SmallIcon, CreateNonEmpty(), 4, 2 };
yield return new object[] { true, false, View.Tile, null, 0, 0 };
yield return new object[] { true, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { true, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, false, View.Tile, CreateNonEmpty(), 0, 0 };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { autoArrange, true, View.Details, null, 1, 0 };
yield return new object[] { autoArrange, true, View.Details, new ImageList(), 1, 0 };
- yield return new object[] { autoArrange, true, View.Details, nonEmptyImageList, 1, 0 };
+ yield return new object[] { autoArrange, true, View.Details, CreateNonEmpty(), 1, 0 };
yield return new object[] { autoArrange, true, View.LargeIcon, null, 0, 0 };
yield return new object[] { autoArrange, true, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { autoArrange, true, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { autoArrange, true, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { autoArrange, true, View.List, null, 0, 0 };
yield return new object[] { autoArrange, true, View.List, new ImageList(), 0, 0 };
- yield return new object[] { autoArrange, true, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { autoArrange, true, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { autoArrange, true, View.SmallIcon, null, 2, 2 };
yield return new object[] { autoArrange, true, View.SmallIcon, new ImageList(), 2, 2 };
- yield return new object[] { autoArrange, true, View.SmallIcon, nonEmptyImageList, 2, 2 };
+ yield return new object[] { autoArrange, true, View.SmallIcon, CreateNonEmpty(), 2, 2 };
}
yield return new object[] { false, false, View.Details, null, 1, 0 };
yield return new object[] { false, false, View.Details, new ImageList(), 1, 0 };
- yield return new object[] { false, false, View.Details, nonEmptyImageList, 1, 0 };
+ yield return new object[] { false, false, View.Details, CreateNonEmpty(), 1, 0 };
yield return new object[] { false, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { false, false, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { false, false, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, View.List, null, 0, 0 };
yield return new object[] { false, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { false, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, View.SmallIcon, null, 2, 2 };
yield return new object[] { false, false, View.SmallIcon, new ImageList(), 2, 2 };
- yield return new object[] { false, false, View.SmallIcon, nonEmptyImageList, 2, 2 };
+ yield return new object[] { false, false, View.SmallIcon, CreateNonEmpty(), 2, 2 };
yield return new object[] { false, false, View.Tile, null, 0, 0 };
yield return new object[] { false, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { false, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, View.Tile, CreateNonEmpty(), 0, 0 };
}
[WinFormsTheory]
@@ -3392,9 +3364,6 @@ public void ListView_SmallImageList_DisposeWithHandle_DetachesFromListView(bool
public static IEnumerable StateImageList_Set_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
foreach (bool useCompatibleStateImageBehavior in new bool[] { true, false })
{
foreach (bool checkBoxes in new bool[] { true, false })
@@ -3407,7 +3376,7 @@ public static IEnumerable StateImageList_Set_GetReturnsExpected()
{
yield return new object[] { useCompatibleStateImageBehavior, checkBoxes, autoArrange, virtualMode, view, null };
yield return new object[] { useCompatibleStateImageBehavior, checkBoxes, autoArrange, virtualMode, view, new ImageList() };
- yield return new object[] { useCompatibleStateImageBehavior, checkBoxes, autoArrange, virtualMode, view, nonEmptyImageList };
+ yield return new object[] { useCompatibleStateImageBehavior, checkBoxes, autoArrange, virtualMode, view, CreateNonEmpty() };
}
}
}
@@ -3415,11 +3384,11 @@ public static IEnumerable StateImageList_Set_GetReturnsExpected()
yield return new object[] { useCompatibleStateImageBehavior, false, true, false, View.Tile, null };
yield return new object[] { useCompatibleStateImageBehavior, false, true, false, View.Tile, new ImageList() };
- yield return new object[] { useCompatibleStateImageBehavior, false, true, false, View.Tile, nonEmptyImageList };
+ yield return new object[] { useCompatibleStateImageBehavior, false, true, false, View.Tile, CreateNonEmpty() };
yield return new object[] { useCompatibleStateImageBehavior, false, false, false, View.Tile, null };
yield return new object[] { useCompatibleStateImageBehavior, false, false, false, View.Tile, new ImageList() };
- yield return new object[] { useCompatibleStateImageBehavior, false, false, false, View.Tile, nonEmptyImageList };
+ yield return new object[] { useCompatibleStateImageBehavior, false, false, false, View.Tile, CreateNonEmpty() };
}
}
@@ -3472,154 +3441,151 @@ public void ListView_StateImageList_SetWithNonNullOldValue_GetReturnsExpected(bo
public static IEnumerable StateImageList_SetWithHandle_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
// UseCompatibleStateImageBehavior true
foreach (bool checkBoxes in new bool[] { true, false })
{
yield return new object[] { true, checkBoxes, true, false, View.Details, null, 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, true, false, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, true, false, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, true, false, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, true, false, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.List, null, 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, true, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, true, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.SmallIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.SmallIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, true, false, View.SmallIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, true, false, View.SmallIcon, CreateNonEmpty(), 0, 0 };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { true, checkBoxes, autoArrange, true, View.Details, null, 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, autoArrange, true, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, autoArrange, true, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.LargeIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, autoArrange, true, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, autoArrange, true, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.List, null, 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.List, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, autoArrange, true, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, autoArrange, true, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.SmallIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.SmallIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, autoArrange, true, View.SmallIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, autoArrange, true, View.SmallIcon, CreateNonEmpty(), 0, 0 };
}
yield return new object[] { true, checkBoxes, false, false, View.Details, null, 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, false, false, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, false, false, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, false, false, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, false, false, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.List, null, 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, false, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, false, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.SmallIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.SmallIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, false, false, View.SmallIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, false, false, View.SmallIcon, CreateNonEmpty(), 0, 0 };
}
yield return new object[] { true, false, true, false, View.Tile, null, 0, 0 };
yield return new object[] { true, false, true, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { true, false, true, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, false, true, false, View.Tile, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, false, false, false, View.Tile, null, 0, 0 };
yield return new object[] { true, false, false, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { true, false, false, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, false, false, false, View.Tile, CreateNonEmpty(), 0, 0 };
// UseCompatibleStateImageBehavior false, CheckBoxes true
yield return new object[] { false, true, true, false, View.Details, null, 0, 0 };
yield return new object[] { false, true, true, false, View.Details, new ImageList(), 1, 1 };
- yield return new object[] { false, true, true, false, View.Details, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, true, false, View.Details, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, true, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { false, true, true, false, View.LargeIcon, new ImageList(), 3, 1 };
- yield return new object[] { false, true, true, false, View.LargeIcon, nonEmptyImageList, 3, 1 };
+ yield return new object[] { false, true, true, false, View.LargeIcon, CreateNonEmpty(), 3, 1 };
yield return new object[] { false, true, true, false, View.List, null, 0, 0 };
yield return new object[] { false, true, true, false, View.List, new ImageList(), 1, 1 };
- yield return new object[] { false, true, true, false, View.List, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, true, false, View.List, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, true, false, View.SmallIcon, null, 0, 0 };
yield return new object[] { false, true, true, false, View.SmallIcon, new ImageList(), 3, 1 };
- yield return new object[] { false, true, true, false, View.SmallIcon, nonEmptyImageList, 3, 1 };
+ yield return new object[] { false, true, true, false, View.SmallIcon, CreateNonEmpty(), 3, 1 };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { false, true, autoArrange, true, View.Details, null, 0, 0 };
yield return new object[] { false, true, autoArrange, true, View.Details, new ImageList(), 1, 1 };
- yield return new object[] { false, true, autoArrange, true, View.Details, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, autoArrange, true, View.Details, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, autoArrange, true, View.LargeIcon, null, 0, 0 };
yield return new object[] { false, true, autoArrange, true, View.LargeIcon, new ImageList(), 1, 1 };
- yield return new object[] { false, true, autoArrange, true, View.LargeIcon, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, autoArrange, true, View.LargeIcon, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, autoArrange, true, View.List, null, 0, 0 };
yield return new object[] { false, true, autoArrange, true, View.List, new ImageList(), 1, 1 };
- yield return new object[] { false, true, autoArrange, true, View.List, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, autoArrange, true, View.List, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, autoArrange, true, View.SmallIcon, null, 0, 0 };
yield return new object[] { false, true, autoArrange, true, View.SmallIcon, new ImageList(), 1, 1 };
- yield return new object[] { false, true, autoArrange, true, View.SmallIcon, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, autoArrange, true, View.SmallIcon, CreateNonEmpty(), 1, 1 };
}
yield return new object[] { false, true, false, false, View.Details, null, 0, 0 };
yield return new object[] { false, true, false, false, View.Details, new ImageList(), 1, 1 };
- yield return new object[] { false, true, false, false, View.Details, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, false, false, View.Details, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, false, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { false, true, false, false, View.LargeIcon, new ImageList(), 1, 1 };
- yield return new object[] { false, true, false, false, View.LargeIcon, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, false, false, View.LargeIcon, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, false, false, View.List, null, 0, 0 };
yield return new object[] { false, true, false, false, View.List, new ImageList(), 1, 1 };
- yield return new object[] { false, true, false, false, View.List, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, false, false, View.List, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, false, false, View.SmallIcon, null, 0, 0 };
yield return new object[] { false, true, false, false, View.SmallIcon, new ImageList(), 1, 1 };
- yield return new object[] { false, true, false, false, View.SmallIcon, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, false, false, View.SmallIcon, CreateNonEmpty(), 1, 1 };
// UseCompatibleStateImageBehavior false, CheckBoxes false
yield return new object[] { false, false, true, false, View.Details, null, 0, 0 };
yield return new object[] { false, false, true, false, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { false, false, true, false, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, true, false, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, true, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { false, false, true, false, View.LargeIcon, new ImageList(), 1, 0 };
- yield return new object[] { false, false, true, false, View.LargeIcon, nonEmptyImageList, 1, 0 };
+ yield return new object[] { false, false, true, false, View.LargeIcon, CreateNonEmpty(), 1, 0 };
yield return new object[] { false, false, true, false, View.List, null, 0, 0 };
yield return new object[] { false, false, true, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { false, false, true, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, true, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, true, false, View.SmallIcon, null, 0, 0 };
yield return new object[] { false, false, true, false, View.SmallIcon, new ImageList(), 1, 0 };
- yield return new object[] { false, false, true, false, View.SmallIcon, nonEmptyImageList, 1, 0 };
+ yield return new object[] { false, false, true, false, View.SmallIcon, CreateNonEmpty(), 1, 0 };
yield return new object[] { false, false, true, false, View.Tile, null, 0, 0 };
yield return new object[] { false, false, true, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { false, false, true, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, true, false, View.Tile, CreateNonEmpty(), 0, 0 };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { false, false, autoArrange, true, View.Details, null, 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { false, false, autoArrange, true, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, autoArrange, true, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.LargeIcon, null, 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { false, false, autoArrange, true, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, autoArrange, true, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.List, null, 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.List, new ImageList(), 0, 0 };
- yield return new object[] { false, false, autoArrange, true, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, autoArrange, true, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.SmallIcon, null, 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.SmallIcon, new ImageList(), 0, 0 };
- yield return new object[] { false, false, autoArrange, true, View.SmallIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, autoArrange, true, View.SmallIcon, CreateNonEmpty(), 0, 0 };
}
yield return new object[] { false, false, false, false, View.Details, null, 0, 0 };
yield return new object[] { false, false, false, false, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { false, false, false, false, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, false, false, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, false, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { false, false, false, false, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { false, false, false, false, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, false, false, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, false, false, View.List, null, 0, 0 };
yield return new object[] { false, false, false, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { false, false, false, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, false, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, false, false, View.SmallIcon, null, 0, 0 };
yield return new object[] { false, false, false, false, View.SmallIcon, new ImageList(), 0, 0 };
- yield return new object[] { false, false, false, false, View.SmallIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, false, false, View.SmallIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, false, false, View.Tile, null, 0, 0 };
yield return new object[] { false, false, false, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { false, false, false, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, false, false, View.Tile, CreateNonEmpty(), 0, 0 };
}
[WinFormsTheory]
@@ -3660,154 +3626,151 @@ public void ListView_StateImageList_SetWithHandle_GetReturnsExpected(bool useCom
public static IEnumerable StateImageList_SetWithHandleWithNonNullOldValue_GetReturnsExpected()
{
- var nonEmptyImageList = new ImageList();
- nonEmptyImageList.Images.Add(new Bitmap(10, 10));
-
// UseCompatibleStateImageBehavior true
foreach (bool checkBoxes in new bool[] { true, false })
{
yield return new object[] { true, checkBoxes, true, false, View.Details, null, 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, true, false, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, true, false, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, true, false, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, true, false, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.List, null, 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, true, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, true, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.SmallIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, true, false, View.SmallIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, true, false, View.SmallIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, true, false, View.SmallIcon, CreateNonEmpty(), 0, 0 };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { true, checkBoxes, autoArrange, true, View.Details, null, 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, autoArrange, true, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, autoArrange, true, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.LargeIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, autoArrange, true, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, autoArrange, true, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.List, null, 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.List, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, autoArrange, true, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, autoArrange, true, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.SmallIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, autoArrange, true, View.SmallIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, autoArrange, true, View.SmallIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, autoArrange, true, View.SmallIcon, CreateNonEmpty(), 0, 0 };
}
yield return new object[] { true, checkBoxes, false, false, View.Details, null, 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, false, false, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, false, false, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, false, false, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, false, false, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.List, null, 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, false, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, false, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.SmallIcon, null, 0, 0 };
yield return new object[] { true, checkBoxes, false, false, View.SmallIcon, new ImageList(), 0, 0 };
- yield return new object[] { true, checkBoxes, false, false, View.SmallIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, checkBoxes, false, false, View.SmallIcon, CreateNonEmpty(), 0, 0 };
}
yield return new object[] { true, false, true, false, View.Tile, null, 0, 0 };
yield return new object[] { true, false, true, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { true, false, true, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, false, true, false, View.Tile, CreateNonEmpty(), 0, 0 };
yield return new object[] { true, false, false, false, View.Tile, null, 0, 0 };
yield return new object[] { true, false, false, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { true, false, false, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { true, false, false, false, View.Tile, CreateNonEmpty(), 0, 0 };
// UseCompatibleStateImageBehavior false, CheckBoxes true
yield return new object[] { false, true, true, false, View.Details, null, 1, 1 };
yield return new object[] { false, true, true, false, View.Details, new ImageList(), 1, 1 };
- yield return new object[] { false, true, true, false, View.Details, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, true, false, View.Details, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, true, false, View.LargeIcon, null, 3, 1 };
yield return new object[] { false, true, true, false, View.LargeIcon, new ImageList(), 3, 1 };
- yield return new object[] { false, true, true, false, View.LargeIcon, nonEmptyImageList, 3, 1 };
+ yield return new object[] { false, true, true, false, View.LargeIcon, CreateNonEmpty(), 3, 1 };
yield return new object[] { false, true, true, false, View.List, null, 1, 1 };
yield return new object[] { false, true, true, false, View.List, new ImageList(), 1, 1 };
- yield return new object[] { false, true, true, false, View.List, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, true, false, View.List, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, true, false, View.SmallIcon, null, 3, 1 };
yield return new object[] { false, true, true, false, View.SmallIcon, new ImageList(), 3, 1 };
- yield return new object[] { false, true, true, false, View.SmallIcon, nonEmptyImageList, 3, 1 };
+ yield return new object[] { false, true, true, false, View.SmallIcon, CreateNonEmpty(), 3, 1 };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { false, true, autoArrange, true, View.Details, null, 1, 1 };
yield return new object[] { false, true, autoArrange, true, View.Details, new ImageList(), 1, 1 };
- yield return new object[] { false, true, autoArrange, true, View.Details, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, autoArrange, true, View.Details, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, autoArrange, true, View.LargeIcon, null, 1, 1 };
yield return new object[] { false, true, autoArrange, true, View.LargeIcon, new ImageList(), 1, 1 };
- yield return new object[] { false, true, autoArrange, true, View.LargeIcon, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, autoArrange, true, View.LargeIcon, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, autoArrange, true, View.List, null, 1, 1 };
yield return new object[] { false, true, autoArrange, true, View.List, new ImageList(), 1, 1 };
- yield return new object[] { false, true, autoArrange, true, View.List, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, autoArrange, true, View.List, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, autoArrange, true, View.SmallIcon, null, 1, 1 };
yield return new object[] { false, true, autoArrange, true, View.SmallIcon, new ImageList(), 1, 1 };
- yield return new object[] { false, true, autoArrange, true, View.SmallIcon, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, autoArrange, true, View.SmallIcon, CreateNonEmpty(), 1, 1 };
}
yield return new object[] { false, true, false, false, View.Details, null, 1, 1 };
yield return new object[] { false, true, false, false, View.Details, new ImageList(), 1, 1 };
- yield return new object[] { false, true, false, false, View.Details, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, false, false, View.Details, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, false, false, View.LargeIcon, null, 1, 1 };
yield return new object[] { false, true, false, false, View.LargeIcon, new ImageList(), 1, 1 };
- yield return new object[] { false, true, false, false, View.LargeIcon, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, false, false, View.LargeIcon, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, false, false, View.List, null, 1, 1 };
yield return new object[] { false, true, false, false, View.List, new ImageList(), 1, 1 };
- yield return new object[] { false, true, false, false, View.List, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, false, false, View.List, CreateNonEmpty(), 1, 1 };
yield return new object[] { false, true, false, false, View.SmallIcon, null, 1, 1 };
yield return new object[] { false, true, false, false, View.SmallIcon, new ImageList(), 1, 1 };
- yield return new object[] { false, true, false, false, View.SmallIcon, nonEmptyImageList, 1, 1 };
+ yield return new object[] { false, true, false, false, View.SmallIcon, CreateNonEmpty(), 1, 1 };
// UseCompatibleStateImageBehavior false, CheckBoxes false
yield return new object[] { false, false, true, false, View.Details, null, 0, 0 };
yield return new object[] { false, false, true, false, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { false, false, true, false, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, true, false, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, true, false, View.LargeIcon, null, 1, 0 };
yield return new object[] { false, false, true, false, View.LargeIcon, new ImageList(), 1, 0 };
- yield return new object[] { false, false, true, false, View.LargeIcon, nonEmptyImageList, 1, 0 };
+ yield return new object[] { false, false, true, false, View.LargeIcon, CreateNonEmpty(), 1, 0 };
yield return new object[] { false, false, true, false, View.List, null, 0, 0 };
yield return new object[] { false, false, true, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { false, false, true, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, true, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, true, false, View.SmallIcon, null, 1, 0 };
yield return new object[] { false, false, true, false, View.SmallIcon, new ImageList(), 1, 0 };
- yield return new object[] { false, false, true, false, View.SmallIcon, nonEmptyImageList, 1, 0 };
+ yield return new object[] { false, false, true, false, View.SmallIcon, CreateNonEmpty(), 1, 0 };
yield return new object[] { false, false, true, false, View.Tile, null, 0, 0 };
yield return new object[] { false, false, true, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { false, false, true, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, true, false, View.Tile, CreateNonEmpty(), 0, 0 };
foreach (bool autoArrange in new bool[] { true, false })
{
yield return new object[] { false, false, autoArrange, true, View.Details, null, 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { false, false, autoArrange, true, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, autoArrange, true, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.LargeIcon, null, 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { false, false, autoArrange, true, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, autoArrange, true, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.List, null, 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.List, new ImageList(), 0, 0 };
- yield return new object[] { false, false, autoArrange, true, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, autoArrange, true, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.SmallIcon, null, 0, 0 };
yield return new object[] { false, false, autoArrange, true, View.SmallIcon, new ImageList(), 0, 0 };
- yield return new object[] { false, false, autoArrange, true, View.SmallIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, autoArrange, true, View.SmallIcon, CreateNonEmpty(), 0, 0 };
}
yield return new object[] { false, false, false, false, View.Details, null, 0, 0 };
yield return new object[] { false, false, false, false, View.Details, new ImageList(), 0, 0 };
- yield return new object[] { false, false, false, false, View.Details, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, false, false, View.Details, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, false, false, View.LargeIcon, null, 0, 0 };
yield return new object[] { false, false, false, false, View.LargeIcon, new ImageList(), 0, 0 };
- yield return new object[] { false, false, false, false, View.LargeIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, false, false, View.LargeIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, false, false, View.List, null, 0, 0 };
yield return new object[] { false, false, false, false, View.List, new ImageList(), 0, 0 };
- yield return new object[] { false, false, false, false, View.List, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, false, false, View.List, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, false, false, View.SmallIcon, null, 0, 0 };
yield return new object[] { false, false, false, false, View.SmallIcon, new ImageList(), 0, 0 };
- yield return new object[] { false, false, false, false, View.SmallIcon, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, false, false, View.SmallIcon, CreateNonEmpty(), 0, 0 };
yield return new object[] { false, false, false, false, View.Tile, null, 0, 0 };
yield return new object[] { false, false, false, false, View.Tile, new ImageList(), 0, 0 };
- yield return new object[] { false, false, false, false, View.Tile, nonEmptyImageList, 0, 0 };
+ yield return new object[] { false, false, false, false, View.Tile, CreateNonEmpty(), 0, 0 };
}
[WinFormsTheory]
@@ -3822,8 +3785,10 @@ public void ListView_StateImageList_SetWithHandleWithNonNullOldValue_GetReturnsE
AutoArrange = autoArrange,
VirtualMode = virtualMode,
View = view,
- StateImageList = imageList
};
+
+ listView.StateImageList = imageList;
+
Assert.NotEqual(IntPtr.Zero, listView.Handle);
int invalidatedCallCount = 0;
listView.Invalidated += (sender, e) => invalidatedCallCount++;
@@ -4189,6 +4154,13 @@ public void ListView_GetTopLevel_Invoke_ReturnsExpected()
Assert.False(control.GetTopLevel());
}
+ private static ImageList CreateNonEmpty()
+ {
+ var nonEmptyImageList = new ImageList();
+ nonEmptyImageList.Images.Add(new Bitmap(10, 10));
+ return nonEmptyImageList;
+ }
+
private class SubListView : ListView
{
public new bool CanEnableIme => base.CanEnableIme;