notepad-plus-plus/lexilla/test/unit/testCharacterSet.cxx
Christian Grasser a61b03ea88 Update Scintilla from v4.4.6 to v5.2.1 and add Lexilla v5.1.5
Update with https://www.scintilla.org/scintilla521.zip
            https://www.scintilla.org/lexilla515.zip

- fix setting to bring Scintilla::PositionCR from ScintillaStructures.h inline with Sci_Position.h Sci_PositionCR
- add workaround to enable lexer for searchResult
commented out SCI_SETILEXER call on searchResult to get one result which is correctly handled by the lexer,
added comment about the current problem with property @MarkingsStruct which seems to disappear after call to SCI_SETILEXER or CreateLexer
- corrected usage of ObjC lexer
- removed unnecessary filter stuff
- use own sections for scintilla and lexilla build targets and allow parallel builds
- as libscilex is no longer existing, changed to libscintilla
- adapt makefiles and cmake
- use VS2019
- started simple changes for createlexer adaptations, nullpointercheck missing on return of lexer name from deprecated LexerNameFromID -> undefined behaviour
- movement from id -> lexer name, mostly done via LexerNameFromID + switching off corresponding compiler warning
- changed to SCI_SETILEXER from SCI_SETLEXER, SCI_SETLEXERLANGUAGE needs to be corrected, see Scintilla5Migration.html
- just commented out: SCI_LOADLEXERLIBRARY

Fix #10504, close #11419
2022-03-27 17:12:53 +02:00

141 lines
2.9 KiB
C++

/** @file testCharacterSet.cxx
** Unit Tests for Lexilla internal data structures
**/
#include <cassert>
#include <cstring>
#include "CharacterSet.h"
#include "catch.hpp"
using namespace Lexilla;
// Test CharacterSet.
TEST_CASE("CharacterSet") {
SECTION("IsEmptyInitially") {
CharacterSet cs;
for (int i=0; i<0x80; i++) {
REQUIRE(!cs.Contains(i));
}
}
SECTION("InitialSet") {
CharacterSet cs(CharacterSet::setDigits);
for (int i=0; i<0x80; i++) {
if (i >= '0' && i <= '9')
REQUIRE(cs.Contains(i));
else
REQUIRE(!cs.Contains(i));
}
}
SECTION("Set") {
CharacterSet cs;
cs.Add('a');
for (int i=0; i<0x80; i++) {
if (i == 'a')
REQUIRE(cs.Contains(i));
else
REQUIRE(!cs.Contains(i));
}
}
SECTION("After") {
CharacterSet cs;
REQUIRE(!cs.Contains(0x100));
CharacterSet cs2(CharacterSet::setNone, "", 0x80, true);
REQUIRE(cs2.Contains(0x100));
}
}
TEST_CASE("Functions") {
SECTION("IsASpace") {
REQUIRE(IsASpace(' '));
REQUIRE(!IsASpace('a'));
REQUIRE(IsASpaceOrTab(' '));
REQUIRE(!IsASpaceOrTab('a'));
}
SECTION("IsADigit") {
REQUIRE(!IsADigit(' '));
REQUIRE(!IsADigit('a'));
REQUIRE(IsADigit('7'));
REQUIRE(IsADigit('7', 16));
REQUIRE(IsADigit('A', 16));
REQUIRE(IsADigit('a', 16));
REQUIRE(!IsADigit('8', 8));
}
SECTION("IsASCII") {
REQUIRE(IsASCII(' '));
REQUIRE(IsASCII('a'));
REQUIRE(!IsASCII(-1));
REQUIRE(!IsASCII(128));
}
SECTION("IsUpperOrLowerCase") {
REQUIRE(IsLowerCase('a'));
REQUIRE(!IsLowerCase('A'));
REQUIRE(!IsUpperCase('a'));
REQUIRE(IsUpperCase('A'));
REQUIRE(IsUpperOrLowerCase('a'));
REQUIRE(IsUpperOrLowerCase('A'));
REQUIRE(!IsUpperOrLowerCase('9'));
REQUIRE(IsAlphaNumeric('9'));
REQUIRE(IsAlphaNumeric('a'));
REQUIRE(IsAlphaNumeric('A'));
REQUIRE(!IsAlphaNumeric(' '));
REQUIRE(!IsAlphaNumeric('+'));
}
SECTION("isoperator") {
REQUIRE(isspacechar(' '));
REQUIRE(!isspacechar('a'));
REQUIRE(!iswordchar(' '));
REQUIRE(iswordchar('a'));
REQUIRE(iswordchar('A'));
REQUIRE(iswordchar('.'));
REQUIRE(iswordchar('_'));
REQUIRE(!iswordstart(' '));
REQUIRE(iswordstart('a'));
REQUIRE(iswordstart('A'));
REQUIRE(iswordstart('_'));
REQUIRE(!isoperator('a'));
REQUIRE(isoperator('+'));
}
SECTION("MakeUpperCase") {
REQUIRE(MakeUpperCase(' ') == ' ');
REQUIRE(MakeUpperCase('A') == 'A');
REQUIRE(MakeUpperCase('a') == 'A');
REQUIRE(MakeLowerCase(' ') == ' ');
REQUIRE(MakeLowerCase('A') == 'a');
REQUIRE(MakeLowerCase('a') == 'a');
}
SECTION("CompareCaseInsensitive") {
REQUIRE(CompareCaseInsensitive(" ", " ") == 0);
REQUIRE(CompareCaseInsensitive("A", "A") == 0);
REQUIRE(CompareCaseInsensitive("a", "A") == 0);
REQUIRE(CompareCaseInsensitive("b", "A") != 0);
REQUIRE(CompareCaseInsensitive("aa", "A") != 0);
REQUIRE(CompareNCaseInsensitive(" ", " ", 1) == 0);
REQUIRE(CompareNCaseInsensitive("b", "A", 1) != 0);
REQUIRE(CompareNCaseInsensitive("aa", "A", 1) == 0);
}
}