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/unit/testSelection.cxx | 90 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) (limited to 'test/unit') 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