コード例 #1
0
        public void ListViewInsertionMark_Index_SetWithHandle_GetReturnsExpected(int value)
        {
            using var control = new ListView();
            Assert.NotEqual(IntPtr.Zero, control.Handle);
            int invalidatedCallCount = 0;

            control.Invalidated += (sender, e) => invalidatedCallCount++;
            int styleChangedCallCount = 0;

            control.StyleChanged += (sender, e) => styleChangedCallCount++;
            int createdCallCount = 0;

            control.HandleCreated += (sender, e) => createdCallCount++;

            ListViewInsertionMark insertionMark = control.InsertionMark;

            insertionMark.Index = value;
            Assert.Equal(value, insertionMark.Index);
            Assert.True(control.IsHandleCreated);
            Assert.Equal(0, invalidatedCallCount);
            Assert.Equal(0, styleChangedCallCount);
            Assert.Equal(0, createdCallCount);

            // Set again.
            insertionMark.Index = value;
            Assert.True(control.IsHandleCreated);
            Assert.Equal(0, invalidatedCallCount);
            Assert.Equal(0, styleChangedCallCount);
            Assert.Equal(0, createdCallCount);
            Assert.Equal(value, insertionMark.Index);
        }
コード例 #2
0
        public void ListViewInsertionMark_Index_Get_ReturnsExpected()
        {
            var listView = new ListView();
            ListViewInsertionMark insertionMark = listView.InsertionMark;

            Assert.Equal(0, insertionMark.Index);
        }
コード例 #3
0
        public void ListViewInsertionMark_Color_Get_ReturnsExpected()
        {
            var listView = new ListView();
            ListViewInsertionMark insertionMark = listView.InsertionMark;

            Assert.NotEqual(Color.Empty, insertionMark.Color);
        }
コード例 #4
0
        public void ListViewInsertionMark_AppearsAfterItem_Get_ReturnsExpected()
        {
            var listView = new ListView();
            ListViewInsertionMark insertionMark = listView.InsertionMark;

            Assert.False(insertionMark.AppearsAfterItem);
        }
コード例 #5
0
        public void ListViewInsertionMark_NearestIndex_NoSuchPoint_ReturnsInvalid()
        {
            var listView = new ListView();
            ListViewInsertionMark insertionMark = listView.InsertionMark;

            Assert.True(insertionMark.NearestIndex(new Point(-10, -11)) >= -1);
        }
コード例 #6
0
        public void ListViewInsertionMark_Color_Get_ReturnsEqual()
        {
            var listView = new ListView();
            ListViewInsertionMark insertionMark = listView.InsertionMark;

            Assert.Equal(insertionMark.Bounds, insertionMark.Bounds);
        }
コード例 #7
0
        public void ListViewInsertionMark_Index_Get_ReturnsExpected()
        {
            using var control = new ListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            Assert.Equal(0, insertionMark.Index);
            Assert.False(control.IsHandleCreated);
        }
コード例 #8
0
        public void ListViewInsertionMark_AppearsAfterItem_Get_ReturnsExpected()
        {
            using var control = new ListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            Assert.False(insertionMark.AppearsAfterItem);
            Assert.False(control.IsHandleCreated);
        }
コード例 #9
0
        public void ListViewInsertionMark_NearestIndex_NoSuchPointWithoutHandle_ReturnsInvalid()
        {
            using var control = new ListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            Assert.True(insertionMark.NearestIndex(new Point(-10, -11)) >= -1);
            Assert.True(control.IsHandleCreated);
        }
コード例 #10
0
        public void ListViewInsertionMark_Color_GetWithoutHandle_ReturnsExpected()
        {
            using var control = new ListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            Assert.NotEqual(Color.Empty, insertionMark.Color);
            Assert.Equal(insertionMark.Color, insertionMark.Color);
            Assert.True(control.IsHandleCreated);
        }
コード例 #11
0
        public void ListViewInsertionMark_Bounds_GetWithoutHandle_ReturnsEqual()
        {
            using var control = new ListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            Assert.Equal(Rectangle.Empty, insertionMark.Bounds);
            Assert.Equal(insertionMark.Bounds, insertionMark.Bounds);
            Assert.True(control.IsHandleCreated);
        }
コード例 #12
0
        public void ListViewInsertionMark_Bounds_GetInvalidGetInsertMarkRect_ReturnsExpected()
        {
            using var control = new InvalidGetInsertMarkRectListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            Assert.NotEqual(IntPtr.Zero, control.Handle);

            control.MakeInvalid = true;
            Assert.Equal(new Rectangle(1, 2, 2, 2), insertionMark.Bounds);
        }
コード例 #13
0
        public void ListViewInsertionMark_NearestIndex_InvokeCustomInsertMarkHitTest_ReturnsExpected(int result)
        {
            using var control = new CustomInsertMarkHitTestListView
                  {
                      InsertMarkHitTestResult = result
                  };
            ListViewInsertionMark insertionMark = control.InsertionMark;

            Assert.Equal(result, insertionMark.NearestIndex(new Point(1, 2)));
        }
コード例 #14
0
        public void ListViewInsertionMark_Bounds_GetCustomGetInsertMarkRect_ReturnsExpected(object getInsertMarkRectResult, Rectangle expected)
        {
            using var control = new CustomGetInsertMarkRectListView
                  {
                      GetInsertMarkRectResult = (RECT)getInsertMarkRectResult
                  };
            ListViewInsertionMark insertionMark = control.InsertionMark;

            Assert.NotEqual(IntPtr.Zero, control.Handle);
            Assert.Equal(expected, insertionMark.Bounds);
        }
コード例 #15
0
        public void ListViewInsertionMark_Index_SetWithoutHandle_GetReturnsExpected(int value)
        {
            var listView = new ListView();
            ListViewInsertionMark insertionMark = listView.InsertionMark;

            insertionMark.Index = value;
            Assert.Equal(value, insertionMark.Index);

            // Set again to test caching behaviour.
            insertionMark.Index = value;
            Assert.Equal(value, insertionMark.Index);
        }
コード例 #16
0
        public void ListViewInsertionMark_Color_SetWithoutHandle_ReturnsExpected(Color value)
        {
            var listView = new ListView();
            ListViewInsertionMark insertionMark = listView.InsertionMark;

            insertionMark.Color = value;
            Assert.Equal(value, insertionMark.Color);

            // Set again to test caching behaviour.
            insertionMark.Color = value;
            Assert.Equal(value, insertionMark.Color);
        }
コード例 #17
0
        public unsafe void ListViewInsertionMark_Index_GetInsertMarkWithColor_Success(int indexParam)
        {
            // Run this from another thread as we call Application.EnableVisualStyles.
            RemoteExecutor.Invoke((indexString) =>
            {
                int index = int.Parse(indexString);
                Application.EnableVisualStyles();

                using var control = new ListView();
                ListViewInsertionMark insertionMark = control.InsertionMark;
                insertionMark.Color = Color.FromArgb(0x12, 0x34, 0x56, 0x78);

                // Set same.
                Assert.NotEqual(IntPtr.Zero, control.Handle);
                control.InsertionMark.Index = 0;
                var insertMark = new ComCtl32.LVINSERTMARK
                {
                    cbSize = (uint)sizeof(ComCtl32.LVINSERTMARK)
                };
                Assert.Equal((IntPtr)0, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARK, IntPtr.Zero, ref insertMark));
                Assert.Equal(0x80000000, (uint)insertMark.dwFlags);
                Assert.Equal(-1, insertMark.iItem);
                Assert.Equal(0u, insertMark.dwReserved);
                Assert.Equal((IntPtr)0, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARKCOLOR, IntPtr.Zero, IntPtr.Zero));

                // Set negative one.
                Assert.NotEqual(IntPtr.Zero, control.Handle);
                control.InsertionMark.Index = -1;
                insertMark = new ComCtl32.LVINSERTMARK
                {
                    cbSize = (uint)sizeof(ComCtl32.LVINSERTMARK)
                };
                Assert.Equal((IntPtr)0, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARK, IntPtr.Zero, ref insertMark));
                Assert.Equal(0x80000000, (uint)insertMark.dwFlags);
                Assert.Equal(-1, insertMark.iItem);
                Assert.Equal(0u, insertMark.dwReserved);
                Assert.Equal((IntPtr)0x785634, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARKCOLOR, IntPtr.Zero, IntPtr.Zero));

                // Set different.
                control.InsertionMark.Index = index;
                insertMark = new ComCtl32.LVINSERTMARK
                {
                    cbSize = (uint)sizeof(ComCtl32.LVINSERTMARK)
                };
                Assert.Equal((IntPtr)1, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARK, IntPtr.Zero, ref insertMark));
                Assert.Equal(0x80000000, (uint)insertMark.dwFlags);
                Assert.Equal(index, insertMark.iItem);
                Assert.Equal(0u, insertMark.dwReserved);
                Assert.Equal((IntPtr)0x785634, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARKCOLOR, IntPtr.Zero, IntPtr.Zero));
            }, indexParam.ToString()).Dispose();
        }
コード例 #18
0
        public void ListViewInsertionMark_Color_SetWithoutHandle_ReturnsExpected(Color value)
        {
            using var control = new ListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            insertionMark.Color = value;
            Assert.Equal(value, insertionMark.Color);
            Assert.False(control.IsHandleCreated);

            // Set again.
            insertionMark.Color = value;
            Assert.Equal(value, insertionMark.Color);
            Assert.False(control.IsHandleCreated);
        }
コード例 #19
0
        public void ListViewInsertionMark_Index_SetWithoutHandle_GetReturnsExpected(int value)
        {
            using var control = new ListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            insertionMark.Index = value;
            Assert.Equal(value, insertionMark.Index);
            Assert.False(control.IsHandleCreated);

            // Set again.
            insertionMark.Index = value;
            Assert.Equal(value, insertionMark.Index);
            Assert.False(control.IsHandleCreated);
        }
コード例 #20
0
        public unsafe void ListViewInsertionMark_AppearsAfterItem_GetInsertMarkWithColor_Success()
        {
            // Run this from another thread as we call Application.EnableVisualStyles.
            RemoteExecutor.Invoke(() =>
            {
                Application.EnableVisualStyles();

                using var control = new ListView();
                ListViewInsertionMark insertionMark = control.InsertionMark;
                control.InsertionMark.Color         = Color.FromArgb(0x12, 0x34, 0x56, 0x78);

                // Set same.
                Assert.NotEqual(IntPtr.Zero, control.Handle);
                control.InsertionMark.AppearsAfterItem = false;
                var insertMark = new ComCtl32.LVINSERTMARK
                {
                    cbSize = (uint)sizeof(ComCtl32.LVINSERTMARK)
                };
                Assert.Equal((IntPtr)0, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARK, IntPtr.Zero, ref insertMark));
                Assert.Equal(0x80000000, (uint)insertMark.dwFlags);
                Assert.Equal(-1, insertMark.iItem);
                Assert.Equal(0u, insertMark.dwReserved);
                Assert.Equal((IntPtr)0, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARKCOLOR, IntPtr.Zero, IntPtr.Zero));

                // Set true.
                control.InsertionMark.AppearsAfterItem = true;
                insertMark = new ComCtl32.LVINSERTMARK
                {
                    cbSize = (uint)sizeof(ComCtl32.LVINSERTMARK)
                };
                Assert.Equal((IntPtr)1, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARK, IntPtr.Zero, ref insertMark));
                Assert.Equal(0x80000001, (uint)insertMark.dwFlags);
                Assert.Equal(0, insertMark.iItem);
                Assert.Equal(0u, insertMark.dwReserved);
                Assert.Equal((IntPtr)0x785634, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARKCOLOR, IntPtr.Zero, IntPtr.Zero));

                // Set false.
                control.InsertionMark.AppearsAfterItem = false;
                insertMark = new ComCtl32.LVINSERTMARK
                {
                    cbSize = (uint)sizeof(ComCtl32.LVINSERTMARK)
                };
                Assert.Equal((IntPtr)1, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARK, IntPtr.Zero, ref insertMark));
                Assert.Equal(0x80000000, (uint)insertMark.dwFlags);
                Assert.Equal(0, insertMark.iItem);
                Assert.Equal(0u, insertMark.dwReserved);
                Assert.Equal((IntPtr)0x785634, User32.SendMessageW(control.Handle, (User32.WM)ComCtl32.LVM.GETINSERTMARKCOLOR, IntPtr.Zero, IntPtr.Zero));
            }).Dispose();
        }
コード例 #21
0
        public void ListViewInsertionMark_AppearsAfterItem_SetWithoutHandle_ReturnsExpected()
        {
            var listView = new ListView();
            ListViewInsertionMark insertionMark = listView.InsertionMark;

            // Set true.
            insertionMark.AppearsAfterItem = true;
            Assert.True(insertionMark.AppearsAfterItem);

            // Set again to test caching behaviour.
            insertionMark.AppearsAfterItem = true;
            Assert.True(insertionMark.AppearsAfterItem);

            // Set false.
            insertionMark.AppearsAfterItem = false;
            Assert.False(insertionMark.AppearsAfterItem);
        }
コード例 #22
0
        public void ListViewInsertionMark_AppearsAfterItem_Set_GetReturnsExpected(bool value)
        {
            using var control = new ListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            insertionMark.AppearsAfterItem = value;
            Assert.Equal(value, insertionMark.AppearsAfterItem);
            Assert.False(control.IsHandleCreated);

            // Set same.
            insertionMark.AppearsAfterItem = value;
            Assert.Equal(value, insertionMark.AppearsAfterItem);
            Assert.False(control.IsHandleCreated);

            // Set different.
            insertionMark.AppearsAfterItem = !value;
            Assert.Equal(!value, insertionMark.AppearsAfterItem);
            Assert.False(control.IsHandleCreated);
        }
コード例 #23
0
        public void ListViewInsertionMark_AppearsAfterItem_SetWithHandle_GetReturnsExpected(bool value)
        {
            using var control = new ListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            Assert.NotEqual(IntPtr.Zero, control.Handle);
            int invalidatedCallCount = 0;

            control.Invalidated += (sender, e) => invalidatedCallCount++;
            int styleChangedCallCount = 0;

            control.StyleChanged += (sender, e) => styleChangedCallCount++;
            int createdCallCount = 0;

            control.HandleCreated += (sender, e) => createdCallCount++;

            insertionMark.AppearsAfterItem = value;
            Assert.Equal(value, insertionMark.AppearsAfterItem);
            Assert.True(control.IsHandleCreated);
            Assert.Equal(0, invalidatedCallCount);
            Assert.Equal(0, styleChangedCallCount);
            Assert.Equal(0, createdCallCount);

            // Set same.
            insertionMark.AppearsAfterItem = value;
            Assert.Equal(value, insertionMark.AppearsAfterItem);
            Assert.True(control.IsHandleCreated);
            Assert.Equal(0, invalidatedCallCount);
            Assert.Equal(0, styleChangedCallCount);
            Assert.Equal(0, createdCallCount);

            // Set different.
            insertionMark.AppearsAfterItem = !value;
            Assert.Equal(!value, insertionMark.AppearsAfterItem);
            Assert.True(control.IsHandleCreated);
            Assert.Equal(0, invalidatedCallCount);
            Assert.Equal(0, styleChangedCallCount);
            Assert.Equal(0, createdCallCount);
        }
コード例 #24
0
        public void ListViewInsertionMark_NearestIndex_NoSuchPointWithHandle_ReturnsInvalid()
        {
            using var control = new ListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            Assert.NotEqual(IntPtr.Zero, control.Handle);
            int invalidatedCallCount = 0;

            control.Invalidated += (sender, e) => invalidatedCallCount++;
            int styleChangedCallCount = 0;

            control.StyleChanged += (sender, e) => styleChangedCallCount++;
            int createdCallCount = 0;

            control.HandleCreated += (sender, e) => createdCallCount++;

            Assert.True(insertionMark.NearestIndex(new Point(-10, -11)) >= -1);
            Assert.True(control.IsHandleCreated);
            Assert.Equal(0, invalidatedCallCount);
            Assert.Equal(0, styleChangedCallCount);
            Assert.Equal(0, createdCallCount);
        }
コード例 #25
0
        public void ListViewInsertionMark_Bounds_GetWithHandle_ReturnsEqual()
        {
            using var control = new ListView();
            ListViewInsertionMark insertionMark = control.InsertionMark;

            Assert.NotEqual(IntPtr.Zero, control.Handle);
            int invalidatedCallCount = 0;

            control.Invalidated += (sender, e) => invalidatedCallCount++;
            int styleChangedCallCount = 0;

            control.StyleChanged += (sender, e) => styleChangedCallCount++;
            int createdCallCount = 0;

            control.HandleCreated += (sender, e) => createdCallCount++;

            Assert.Equal(Rectangle.Empty, insertionMark.Bounds);
            Assert.Equal(insertionMark.Bounds, insertionMark.Bounds);
            Assert.True(control.IsHandleCreated);
            Assert.Equal(0, invalidatedCallCount);
            Assert.Equal(0, styleChangedCallCount);
            Assert.Equal(0, createdCallCount);
        }
コード例 #26
0
        public void ListViewInsertionMark_AppearsAfterItem_SetWithHandle_ReturnsExpected()
        {
            var listView = new ListView();

            Assert.NotEqual(IntPtr.Zero, listView.Handle);
            ListViewInsertionMark insertionMark = listView.InsertionMark;

            // Set true.
            insertionMark.AppearsAfterItem = true;
            Assert.True(insertionMark.AppearsAfterItem);

            // Set again to test caching behaviour.
            insertionMark.AppearsAfterItem = true;
            Assert.True(insertionMark.AppearsAfterItem);

            // Set false.
            insertionMark.AppearsAfterItem = false;
            Assert.False(insertionMark.AppearsAfterItem);

            // Set with color.
            insertionMark.Color            = Color.Blue;
            insertionMark.AppearsAfterItem = true;
            Assert.True(insertionMark.AppearsAfterItem);
        }