From 724429a7c661eeafe3094a049f747267d0496a69 Mon Sep 17 00:00:00 2001 From: Neil Date: Mon, 8 Dec 2025 14:38:07 +1100 Subject: Bug [#2488]. Fix SCI_SETSELECTIONNSTART and SCI_SETSELECTIONNEND. --- test/simpleTests.py | 22 +++++++++++ test/unit/testSelection.cxx | 90 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) (limited to 'test') diff --git a/test/simpleTests.py b/test/simpleTests.py index 020b72e99..4e6a51d59 100644 --- a/test/simpleTests.py +++ b/test/simpleTests.py @@ -1967,6 +1967,28 @@ class TestMultiSelection(unittest.TestCase): self.assertEqual(self.ed.GetSelectionNStart(0), 2) self.assertEqual(self.ed.GetSelectionNEnd(0), 3) + self.ed.SetSelectionNStart(0, 1) + self.assertEqual(self.ed.GetSelectionNAnchor(0), 1) + self.assertEqual(self.ed.GetSelectionNCaret(0), 3) + self.assertEqual(self.ed.GetSelectionNStart(0), 1) + self.assertEqual(self.ed.GetSelectionNEnd(0), 3) + + self.ed.SetSelectionNAnchor(0, 2) + self.ed.SetSelectionNCaret(0, 2) + self.ed.SetSelectionNStart(0, 9) + self.assertEqual(self.ed.GetSelectionNAnchor(0), 9) + self.assertEqual(self.ed.GetSelectionNCaret(0), 9) + self.assertEqual(self.ed.GetSelectionNStart(0), 9) + self.assertEqual(self.ed.GetSelectionNEnd(0), 9) + + self.ed.SetSelectionNAnchor(0, 2) + self.ed.SetSelectionNCaret(0, 3) + self.ed.SetSelectionNStart(0, 9) + self.assertEqual(self.ed.GetSelectionNAnchor(0), 9) + self.assertEqual(self.ed.GetSelectionNCaret(0), 9) + self.assertEqual(self.ed.GetSelectionNStart(0), 9) + self.assertEqual(self.ed.GetSelectionNEnd(0), 9) + def test2Selections(self): self.ed.SetSelection(1, 2) self.ed.AddSelection(4, 5) diff --git a/test/unit/testSelection.cxx b/test/unit/testSelection.cxx index ab0065624..76eebca21 100644 --- a/test/unit/testSelection.cxx +++ b/test/unit/testSelection.cxx @@ -198,6 +198,96 @@ TEST_CASE("SelectionRange") { REQUIRE(thin == single); } + SECTION("StartEndSet") { + { + SelectionRange range; + + range.StartSet(SelectionPosition(2)); + range.EndSet(SelectionPosition(3)); + REQUIRE(range.Start() == SelectionPosition(2)); + REQUIRE(range.End() == SelectionPosition(3)); + REQUIRE(range == SelectionRange(3, 2)); + + range.StartSet(SelectionPosition(1)); + REQUIRE(range.Start() == SelectionPosition(1)); + REQUIRE(range.End() == SelectionPosition(3)); + REQUIRE(range == SelectionRange(3, 1)); + } + + { + // Outside after + SelectionRange range(2, 1); + range.StartSet(SelectionPosition(3)); + REQUIRE(range.Start() == SelectionPosition(3)); + REQUIRE(range.End() == SelectionPosition(3)); + REQUIRE(range == SelectionRange(3, 3)); + } + + { + // Outside after + SelectionRange range(2, 1); + range.EndSet(SelectionPosition(3)); + REQUIRE(range.Start() == SelectionPosition(1)); + REQUIRE(range.End() == SelectionPosition(3)); + REQUIRE(range == SelectionRange(3, 1)); + } + + { + // Outside before + SelectionRange range(2, 1); + range.StartSet(SelectionPosition(0)); + REQUIRE(range.Start() == SelectionPosition(0)); + REQUIRE(range.End() == SelectionPosition(2)); + REQUIRE(range == SelectionRange(2, 0)); + } + + { + // Outside before + SelectionRange range(2, 1); + range.EndSet(SelectionPosition(0)); + REQUIRE(range.Start() == SelectionPosition(0)); + REQUIRE(range.End() == SelectionPosition(0)); + REQUIRE(range == SelectionRange(0, 0)); + } + + { + // Inside + SelectionRange range(3, 1); + range.EndSet(SelectionPosition(2)); + REQUIRE(range.Start() == SelectionPosition(1)); + REQUIRE(range.End() == SelectionPosition(2)); + REQUIRE(range == SelectionRange(2, 1)); + } + + { + // Inside + SelectionRange range(3, 1); + range.StartSet(SelectionPosition(2)); + REQUIRE(range.Start() == SelectionPosition(2)); + REQUIRE(range.End() == SelectionPosition(3)); + REQUIRE(range == SelectionRange(3, 2)); + } + + { + // Empty then outside + SelectionRange range(2); + range.StartSet(SelectionPosition(9)); + REQUIRE(range.Start() == SelectionPosition(9)); + REQUIRE(range.End() == SelectionPosition(9)); + REQUIRE(range == SelectionRange(9, 9)); + } + + { + // Empty then outside + SelectionRange range(2); + range.StartSet(SelectionPosition(0)); + REQUIRE(range.Start() == SelectionPosition(0)); + REQUIRE(range.End() == SelectionPosition(2)); + REQUIRE(range == SelectionRange(2, 0)); + } + + } + } TEST_CASE("Selection") { -- cgit v1.2.3