parent
210ae7e1d3
commit
9cd6e6513f
6
PowerEditor/Test/UrlDetection/plugins/Config/startup.lua
Normal file
6
PowerEditor/Test/UrlDetection/plugins/Config/startup.lua
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
-- Startup script for URL detection verification test
|
||||||
|
endNppAfterUrlTest = 1
|
||||||
|
local nppDir = npp:GetNppDirectory()
|
||||||
|
local verifyUrlDetection = loadfile(nppDir .."\\" .. "..\\Test\\UrlDetection\\verifyUrlDetection.lua")
|
||||||
|
pcall(verifyUrlDetection)
|
||||||
|
|
BIN
PowerEditor/Test/UrlDetection/plugins/LuaScript/Lua.dll
Normal file
BIN
PowerEditor/Test/UrlDetection/plugins/LuaScript/Lua.dll
Normal file
Binary file not shown.
BIN
PowerEditor/Test/UrlDetection/plugins/LuaScript/LuaScript.dll
Normal file
BIN
PowerEditor/Test/UrlDetection/plugins/LuaScript/LuaScript.dll
Normal file
Binary file not shown.
70
PowerEditor/Test/UrlDetection/readMe.txt
Normal file
70
PowerEditor/Test/UrlDetection/readMe.txt
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
What is the URL detection test
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
The URL detection test is designed to check,
|
||||||
|
whether the clickable detection works as expected or not.
|
||||||
|
|
||||||
|
It uses text files as input. These text files contain a pair of
|
||||||
|
lines for each URL to test. The first line contains the URL, the
|
||||||
|
second line contains a sequence of characters, which are a mask,
|
||||||
|
consisting of '0' or '1' characters, describing whether this
|
||||||
|
position in the line should be detected as URL.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
u http://dot.com u
|
||||||
|
m 11111111111111 m
|
||||||
|
|
||||||
|
As can be seen, the URL is enclosed in "u " and " u", the mask
|
||||||
|
is enclosed in "m " and " m". The mask line must follow the URL
|
||||||
|
line immediately. A '1' in the mask line says, that this position
|
||||||
|
should be detected as URL, a '0' says the opposite.
|
||||||
|
|
||||||
|
It is possible, to put arbitrary text between the pairs of test
|
||||||
|
lines, to comment the test cases. Obviously, none of the comment
|
||||||
|
lines should start and end with a single 'u' or 'm' character.
|
||||||
|
|
||||||
|
The test files can also be regarded as living document about what
|
||||||
|
is currently detected as URL and what not.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
How to conduct the URL detection test
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
Since the URL detection only takes place in the visible part of
|
||||||
|
the edit windows, the test can only be run from inside an opened
|
||||||
|
Notepad++ with a visible edit window.
|
||||||
|
|
||||||
|
Since the test script is written in Lua, a prerequisite to conduct
|
||||||
|
the test is, that the Lua plugin is installed. The plugin can be found
|
||||||
|
at https://github.com/dail8859/LuaScript/releases.
|
||||||
|
|
||||||
|
To conduct the test:
|
||||||
|
|
||||||
|
1. Open the verifyUrlDetection.lua with Notepad++.
|
||||||
|
2. Display the Lua console window (Plugins --> LuaScript --> Show Console)
|
||||||
|
3. Execute the opened script file (Plugins --> LuaScript --> Execute Current File)
|
||||||
|
|
||||||
|
The test results will be displayed in the Lua console window.
|
||||||
|
|
||||||
|
!!! Please be aware, that there should NO keyboard or mouse or whatever
|
||||||
|
input be applied to Notepad++ while this test is running.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
How to extend the URL detection test
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
It is possible to add test files to the URL detection test
|
||||||
|
by copying the new files into this directory and include the filenames
|
||||||
|
in the testFiles list at the beginning of verifyUrlDetection.lua.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Automated version of the URL detection test
|
||||||
|
-------------------------------------------
|
||||||
|
|
||||||
|
An automated version of the test can be conducted by running verifyUrlDetection.ps1.
|
||||||
|
This is mainly to run the test in Appveyor.
|
197
PowerEditor/Test/UrlDetection/verifyUrlDetection.lua
Normal file
197
PowerEditor/Test/UrlDetection/verifyUrlDetection.lua
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
local testFiles = {"verifyUrlDetection_1a",
|
||||||
|
"verifyUrlDetection_1b"}
|
||||||
|
local URL_INDIC = 8
|
||||||
|
local timerInterval = 10
|
||||||
|
|
||||||
|
local function verifyUrlDetection()
|
||||||
|
|
||||||
|
local curPos = 0
|
||||||
|
local task = -1
|
||||||
|
local uFrom = 0
|
||||||
|
local uTo = 0
|
||||||
|
local mFrom = 0
|
||||||
|
local mTo = 0
|
||||||
|
local OKorKO = "OK"
|
||||||
|
local nFile = 1
|
||||||
|
local testResults = {}
|
||||||
|
local outFile = nil
|
||||||
|
|
||||||
|
local function Summary()
|
||||||
|
local resLine = ""
|
||||||
|
local i = 1
|
||||||
|
while testFiles[i] ~= nil do
|
||||||
|
if testResults[i] == nil then
|
||||||
|
testResults[i] = 'KO'
|
||||||
|
end
|
||||||
|
print(testFiles[i] .. ": " .. testResults[i])
|
||||||
|
i = i + 1
|
||||||
|
end
|
||||||
|
print(resLine)
|
||||||
|
if endNppAfterUrlTest ~= nil then
|
||||||
|
print("good bye")
|
||||||
|
npp:MenuCommand(IDM_FILE_EXIT)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function nextFile()
|
||||||
|
local fileAvail = false
|
||||||
|
if outFile ~= nil then
|
||||||
|
io.close(outFile)
|
||||||
|
end
|
||||||
|
while (not fileAvail) and (testFiles[nFile] ~= nil) do
|
||||||
|
local fileName = npp:GetNppDirectory() .. "\\..\\Test\\UrlDetection\\" .. testFiles[nFile]
|
||||||
|
fileAvail = npp:SwitchToFile(fileName)
|
||||||
|
if not fileAvail then
|
||||||
|
local f = io.open(fileName,"r")
|
||||||
|
if f~=nil then
|
||||||
|
io.close(f)
|
||||||
|
fileAvail = npp:DoOpen(fileName)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- print("Verifying " .. testFiles[nFile] .. " ...")
|
||||||
|
print("Verifying " .. npp:GetFileName() .. " ...")
|
||||||
|
if fileAvail then
|
||||||
|
local outFileName = fileName .. ".result"
|
||||||
|
outFile = io.open(outFileName,"w")
|
||||||
|
if outFile == nil then
|
||||||
|
testResults[nFile] = "KO"
|
||||||
|
print("KO", "Cannot open output file \""..fileName.."\"")
|
||||||
|
print()
|
||||||
|
nFile = nFile + 1;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
testResults[nFile] = "KO"
|
||||||
|
print("KO", "Cannot open file \""..fileName.."\"")
|
||||||
|
print()
|
||||||
|
nFile = nFile + 1;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return fileAvail
|
||||||
|
end
|
||||||
|
|
||||||
|
local function scrollToNextURL()
|
||||||
|
editor.TargetStart = curPos
|
||||||
|
editor.TargetEnd = editor.Length
|
||||||
|
editor.SearchFlags = SCFIND_REGEXP
|
||||||
|
local iRes = editor:SearchInTarget("^u .+ u$")
|
||||||
|
if iRes >= 0 then
|
||||||
|
uFrom = editor.TargetStart
|
||||||
|
uTo = editor.TargetEnd
|
||||||
|
editor.TargetStart = uFrom
|
||||||
|
editor.TargetEnd = editor.Length
|
||||||
|
iRes = editor:SearchInTarget("^m .+ m$")
|
||||||
|
if iRes >= 0 then
|
||||||
|
mFrom = editor.TargetStart
|
||||||
|
mTo = editor.TargetEnd
|
||||||
|
local ln1 = editor:LineFromPosition(uFrom)
|
||||||
|
local ln2 = editor:LineFromPosition(mFrom)
|
||||||
|
if (ln1+1) == ln2 then
|
||||||
|
editor:ScrollRange(mTo, uFrom)
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
editor:GotoPos(mFrom)
|
||||||
|
OKorKO = "KO"
|
||||||
|
print("KO", "Mask line not following immediately after URL line")
|
||||||
|
return -1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
OKorKO = "KO"
|
||||||
|
print ("KO", "Mask line not found")
|
||||||
|
return -1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function verifyURL()
|
||||||
|
local mMsk = editor:textrange(mFrom, mTo)
|
||||||
|
editor:GotoPos(uFrom + 2)
|
||||||
|
local uMsk = "m "
|
||||||
|
local limit = mTo - mFrom -- if something goes wrong, edit.CurrentPos may never reach (uTo - 2).
|
||||||
|
while (editor.CurrentPos < uTo - 2) and (limit >= 0) do
|
||||||
|
if editor:IndicatorValueAt(URL_INDIC, editor.CurrentPos) == 0 then
|
||||||
|
uMsk = uMsk .. "0"
|
||||||
|
else
|
||||||
|
uMsk = uMsk .. "1"
|
||||||
|
end
|
||||||
|
editor:CharRight()
|
||||||
|
limit = limit - 1
|
||||||
|
end
|
||||||
|
local Res = 0
|
||||||
|
if limit >= 0 then
|
||||||
|
if editor:textrange(editor.CurrentPos, editor.CurrentPos + 2) == " u" then
|
||||||
|
uMsk = uMsk .. " m"
|
||||||
|
if uMsk == mMsk then
|
||||||
|
outFile:write("OK", "\t", editor:textrange(uFrom, uTo), "\n")
|
||||||
|
Res = 1
|
||||||
|
else
|
||||||
|
outFile:write("KO", "\t", editor:textrange(uFrom, uTo), "\n")
|
||||||
|
outFile:write("ok", "\t", mMsk, "\n")
|
||||||
|
outFile:write("ko", "\t", uMsk, "\n")
|
||||||
|
OKorKO = "KO"
|
||||||
|
Res = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
outFile:write("KO", "\t", "internal error", "\n")
|
||||||
|
OKorKO = "KO"
|
||||||
|
end
|
||||||
|
return Res
|
||||||
|
end
|
||||||
|
|
||||||
|
local function goForward(timer)
|
||||||
|
if task < 0 then
|
||||||
|
task = task + 1
|
||||||
|
if task == 0 then
|
||||||
|
if not nextFile() then
|
||||||
|
npp.StopTimer(timer)
|
||||||
|
Summary()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elseif task == 0 then
|
||||||
|
local urlAvail = scrollToNextURL()
|
||||||
|
if urlAvail == 1 then
|
||||||
|
task = 1
|
||||||
|
else
|
||||||
|
npp.StopTimer(timer)
|
||||||
|
print(OKorKO)
|
||||||
|
print()
|
||||||
|
testResults[nFile] = OKorKO
|
||||||
|
if urlAvail == 0 then
|
||||||
|
nFile = nFile + 1
|
||||||
|
if nextFile() then
|
||||||
|
task = 0
|
||||||
|
curPos = 0
|
||||||
|
OKorKO = "OK"
|
||||||
|
npp.StartTimer(timerInterval, goForward)
|
||||||
|
else
|
||||||
|
Summary()
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Summary()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elseif task == 1 then
|
||||||
|
if verifyURL() == 0 then
|
||||||
|
npp.StopTimer(timer)
|
||||||
|
print()
|
||||||
|
Summary()
|
||||||
|
else
|
||||||
|
curPos = mTo
|
||||||
|
task = 0
|
||||||
|
end
|
||||||
|
else
|
||||||
|
npp.stopTimer(timer)
|
||||||
|
print("KO---", "Internal impossibility")
|
||||||
|
print()
|
||||||
|
Summary()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
npp.StartTimer(timerInterval, goForward)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
npp.ClearConsole()
|
||||||
|
verifyUrlDetection()
|
57
PowerEditor/Test/UrlDetection/verifyUrlDetection.ps1
Normal file
57
PowerEditor/Test/UrlDetection/verifyUrlDetection.ps1
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
try {
|
||||||
|
if (Test-Path -Path '..\..\Bin\plugins' -PathType Container)
|
||||||
|
{
|
||||||
|
if (Test-Path -Path '..\..\Bin\plugins_save' -PathType Container)
|
||||||
|
{
|
||||||
|
"Backup for plugins directory already exists"
|
||||||
|
exit -1
|
||||||
|
}
|
||||||
|
"Backing up plugin directory ..."
|
||||||
|
Move-Item ..\..\Bin\plugins ..\..\bin\plugins_save
|
||||||
|
}
|
||||||
|
"Installing Lua plugin for testing ..."
|
||||||
|
Copy-Item -Path .\plugins -Destination ..\..\bin -Recurse
|
||||||
|
|
||||||
|
"Testing ..."
|
||||||
|
..\..\bin\notepad++.exe | Out-Null
|
||||||
|
|
||||||
|
if (Test-Path -Path '..\..\Bin\plugins_save' -PathType Container)
|
||||||
|
{
|
||||||
|
"Removing Lua plugin ..."
|
||||||
|
Remove-Item -Path ..\..\Bin\plugins -Recurse -Force
|
||||||
|
"Restoring plugin directory ..."
|
||||||
|
Move-Item ..\..\Bin\plugins_save ..\..\bin\plugins
|
||||||
|
}
|
||||||
|
|
||||||
|
$expectedRes = Get-Content .\verifyUrlDetection_1a.expected.result
|
||||||
|
$generatedRes = Get-Content .\verifyUrlDetection_1a.result
|
||||||
|
|
||||||
|
if (Compare-Object -ReferenceObject $expectedRes -DifferenceObject $generatedRes)
|
||||||
|
{
|
||||||
|
"Unexpected test results for verifyUrlDetection_1a"
|
||||||
|
exit -1
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Remove-Item .\verifyUrlDetection_1a.result
|
||||||
|
$expectedRes = Get-Content .\verifyUrlDetection_1b.expected.result
|
||||||
|
$generatedRes = Get-Content .\verifyUrlDetection_1b.result
|
||||||
|
if (Compare-Object -ReferenceObject $expectedRes -DifferenceObject $generatedRes)
|
||||||
|
{
|
||||||
|
"Unexpected test results for verifyUrlDetection_1b"
|
||||||
|
exit -1
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Remove-Item .\verifyUrlDetection_1b.result
|
||||||
|
"URL detection test OK"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
"Unexpected behavior while URL detection test"
|
||||||
|
exit -1
|
||||||
|
}
|
||||||
|
|
284
PowerEditor/Test/UrlDetection/verifyUrlDetection_1a
Normal file
284
PowerEditor/Test/UrlDetection/verifyUrlDetection_1a
Normal file
@ -0,0 +1,284 @@
|
|||||||
|
=== URLs which are handled OK so far ===
|
||||||
|
|
||||||
|
u http://test.com u
|
||||||
|
m 111111111111111 m
|
||||||
|
|
||||||
|
u HTTP://UPCASE.UP u
|
||||||
|
m 1111111111111111 m
|
||||||
|
|
||||||
|
u http: u
|
||||||
|
m 00000 m
|
||||||
|
|
||||||
|
u mailto: u
|
||||||
|
m 0000000 m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Preceding none-whitespace characters:
|
||||||
|
|
||||||
|
u !http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u "http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u #http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u $http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u %http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u &http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u 'http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u (http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u )http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u *http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u +http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u ,http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u -http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u .http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u /http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u 1http://test.com u
|
||||||
|
m 0000000000000000 m
|
||||||
|
|
||||||
|
u 9http://test.com u
|
||||||
|
m 0000000000000000 m
|
||||||
|
|
||||||
|
u :http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u ;http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u <http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u >http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u ?http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u @http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u Ahttp://test.com u
|
||||||
|
m 0000000000000000 m
|
||||||
|
|
||||||
|
u Zhttp://test.com u
|
||||||
|
m 0000000000000000 m
|
||||||
|
|
||||||
|
u [http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u \http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u ]http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u ^http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u _http://test.com u
|
||||||
|
m 0000000000000000 m
|
||||||
|
|
||||||
|
u `http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u ahttp://test.com u
|
||||||
|
m 0000000000000000 m
|
||||||
|
|
||||||
|
u zhttp://test.com u
|
||||||
|
m 0000000000000000 m
|
||||||
|
|
||||||
|
u {http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u |http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u }http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
u ~http://test.com u
|
||||||
|
m 0111111111111111 m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Query parsing:
|
||||||
|
|
||||||
|
u https://duckduckgo.com/?q=windows+delete+"GameBarPresenceWriter.exe" u
|
||||||
|
m 11111111111111111111111111111111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
u "https://duckduckgo.com/?q=windows+delete+"GameBarPresenceWriter.exe"" u
|
||||||
|
m 0111111111111111111111111111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u "https://duckduckgo.com/?q=windows+delete+"GameBarPresenceWriter.exe" u
|
||||||
|
m 011111111111111111111111111111111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
u "https://duckduckgo/com/?q=windows+delete+GameBarPresenceWriter.exe" u
|
||||||
|
m 01111111111111111111111111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u "https://duckduckgo.com/?q=windows+delete+""GameBarPresenceWriter.exe" u
|
||||||
|
m 0111111111111111111111111111111111111111111100000000000000000000000000 m
|
||||||
|
|
||||||
|
u https://www.youtube.com/watch?v=VmcftreqQ6E&list=PnQIRE5O5JpiLL&index=xxx u
|
||||||
|
m 1111111111111111111111111111111111111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Space detection:
|
||||||
|
|
||||||
|
u "http://github.com/notepad-plus-plus/notepad-plus-plus" u
|
||||||
|
m 0111111111111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u "https://github.com /notepad-plus-plus/notepad-plus-plus" u
|
||||||
|
m 011111111111111111100000000000000000000000000000000000000 m
|
||||||
|
|
||||||
|
u "https://github.com/notepad plus plus/notepad-plus-plus" u
|
||||||
|
m 01111111111111111111111111100000000000000000000000000000 m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Unwanted trailing character removal:
|
||||||
|
|
||||||
|
u (https://github.com/notepad-plus-plus/notepad-plus-plus) u
|
||||||
|
m 01111111111111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u https://github.com/notepad-plus-plus/notepad-plus-plus; u
|
||||||
|
m 1111111111111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u https://github.com/notepad-plus-plus/notepad-plus-plus? u
|
||||||
|
m 1111111111111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u https://github.com/notepad-plus-plus/notepad-plus-plus! u
|
||||||
|
m 1111111111111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u https://github.com/notepad-plus-plus/notepad-plus-plus# u
|
||||||
|
m 1111111111111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u http://github.com/notepad-plus-plus/notepad-plus-plus#fragment u
|
||||||
|
m 11111111111111111111111111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
u (e.g., https://en.wikipedia.org/wiki/Saw_(2003_film))? u
|
||||||
|
m 000000011111111111111111111111111111111111111111111100 m
|
||||||
|
|
||||||
|
u (https://en.wikipedia.org/wiki/Saw_(2003_film)) u
|
||||||
|
m 01111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u (https://en.wikipedia.org/wiki/Saw_2003_film) u
|
||||||
|
m 011111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
International characters:
|
||||||
|
|
||||||
|
u https://apache-windows.ru/как-установить-сервер-apache-c-php-mysql-и-phpmyadmin-на-windows/ u
|
||||||
|
m 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
u https://www.rnids.rs/национални-домени/регистрација-националних-домена u
|
||||||
|
m 1111111111111111111111111111111111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
u https://www.morfix.co.il/שלום u
|
||||||
|
m 11111111111111111111111111111 m
|
||||||
|
|
||||||
|
u https://www.amazon.fr/GRÜNTEK-Ebrancheur-Cisailles-crémaillère-SATISFAIT/dp/B01COZUA4E/ u
|
||||||
|
m 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
u https://www.amazon.fr/Gardena-coupe-branches-TeleCut-520-670-télescopiques/dp/B07JLJ4N44/ u
|
||||||
|
m 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Instagram links:
|
||||||
|
|
||||||
|
u https://ig.com/?query=c761&vars={"id":"0815","first":100} u
|
||||||
|
m 111111111111111111111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
u {https://ig.com/?query=c761&vars={"id":"0815","first":100}} u
|
||||||
|
m 01111111111111111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u [https://ig.com/?query=c761&vars={"id":"0815","first":100}] u
|
||||||
|
m 01111111111111111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u "https://ig.com/?query=c761&vars={"id":"0815","first":100}" u
|
||||||
|
m 01111111111111111111111111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Links in LaTeX:
|
||||||
|
|
||||||
|
u \href{https://weblink.com/}{click me} u
|
||||||
|
m 0000001111111111111111111100000000000 m
|
||||||
|
|
||||||
|
u \href{https://ig.com/?query=c761&vars={"id":"0815","first":100}}{click me} u
|
||||||
|
m 00000011111111111111111111111111111111111111111111111111111111100000000000 m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Mail:
|
||||||
|
|
||||||
|
u mailto:don.h@free.fr u
|
||||||
|
m 11111111111111111111 m
|
||||||
|
|
||||||
|
u <don.h@free.fr> u
|
||||||
|
m 000000000000000 m
|
||||||
|
|
||||||
|
u <mailto:don.h@free.fr> u
|
||||||
|
m 0111111111111111111110 m
|
||||||
|
|
||||||
|
u http:don.h@free.fr u
|
||||||
|
m 000000000000000000 m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FTP:
|
||||||
|
|
||||||
|
u <ftp://ds.internic.net/rfc/rfc977.txt> u
|
||||||
|
m 01111111111111111111111111111111111110 m
|
||||||
|
|
||||||
|
u ftp://host:444/0a_gopher_selector%09%09some_gplus_stuff u
|
||||||
|
m 1111111111111111111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
u ftp://host:abc/0a_gopher_selector%09%09some_gplus_stuff u
|
||||||
|
m 0000000000000000000000000000000000000000000000000000000 m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FILE:
|
||||||
|
|
||||||
|
u file://Hello%20world.txt u
|
||||||
|
m 111111111111111111111111 m
|
||||||
|
|
||||||
|
u "file://Hello%20world.txt" u
|
||||||
|
m 01111111111111111111111110 m
|
||||||
|
|
||||||
|
u "file://Hello world.txt" u
|
||||||
|
m 011111111111100000000000 m
|
||||||
|
|
||||||
|
u file://127.0.0.1/c$/Tools\Npp%20Test%20Data/Test3/3812.pdf u
|
||||||
|
m 1111111111111111111111111111111111111111111111111111111111 m
|
@ -0,0 +1,81 @@
|
|||||||
|
OK u http://test.com u
|
||||||
|
OK u HTTP://UPCASE.UP u
|
||||||
|
OK u http: u
|
||||||
|
OK u mailto: u
|
||||||
|
OK u !http://test.com u
|
||||||
|
OK u "http://test.com u
|
||||||
|
OK u #http://test.com u
|
||||||
|
OK u $http://test.com u
|
||||||
|
OK u %http://test.com u
|
||||||
|
OK u &http://test.com u
|
||||||
|
OK u 'http://test.com u
|
||||||
|
OK u (http://test.com u
|
||||||
|
OK u )http://test.com u
|
||||||
|
OK u *http://test.com u
|
||||||
|
OK u +http://test.com u
|
||||||
|
OK u ,http://test.com u
|
||||||
|
OK u -http://test.com u
|
||||||
|
OK u .http://test.com u
|
||||||
|
OK u /http://test.com u
|
||||||
|
OK u 1http://test.com u
|
||||||
|
OK u 9http://test.com u
|
||||||
|
OK u :http://test.com u
|
||||||
|
OK u ;http://test.com u
|
||||||
|
OK u <http://test.com u
|
||||||
|
OK u >http://test.com u
|
||||||
|
OK u ?http://test.com u
|
||||||
|
OK u @http://test.com u
|
||||||
|
OK u Ahttp://test.com u
|
||||||
|
OK u Zhttp://test.com u
|
||||||
|
OK u [http://test.com u
|
||||||
|
OK u \http://test.com u
|
||||||
|
OK u ]http://test.com u
|
||||||
|
OK u ^http://test.com u
|
||||||
|
OK u _http://test.com u
|
||||||
|
OK u `http://test.com u
|
||||||
|
OK u ahttp://test.com u
|
||||||
|
OK u zhttp://test.com u
|
||||||
|
OK u {http://test.com u
|
||||||
|
OK u |http://test.com u
|
||||||
|
OK u }http://test.com u
|
||||||
|
OK u ~http://test.com u
|
||||||
|
OK u https://duckduckgo.com/?q=windows+delete+"GameBarPresenceWriter.exe" u
|
||||||
|
OK u "https://duckduckgo.com/?q=windows+delete+"GameBarPresenceWriter.exe"" u
|
||||||
|
OK u "https://duckduckgo.com/?q=windows+delete+"GameBarPresenceWriter.exe" u
|
||||||
|
OK u "https://duckduckgo/com/?q=windows+delete+GameBarPresenceWriter.exe" u
|
||||||
|
OK u "https://duckduckgo.com/?q=windows+delete+""GameBarPresenceWriter.exe" u
|
||||||
|
OK u https://www.youtube.com/watch?v=VmcftreqQ6E&list=PnQIRE5O5JpiLL&index=xxx u
|
||||||
|
OK u "http://github.com/notepad-plus-plus/notepad-plus-plus" u
|
||||||
|
OK u "https://github.com /notepad-plus-plus/notepad-plus-plus" u
|
||||||
|
OK u "https://github.com/notepad plus plus/notepad-plus-plus" u
|
||||||
|
OK u (https://github.com/notepad-plus-plus/notepad-plus-plus) u
|
||||||
|
OK u https://github.com/notepad-plus-plus/notepad-plus-plus; u
|
||||||
|
OK u https://github.com/notepad-plus-plus/notepad-plus-plus? u
|
||||||
|
OK u https://github.com/notepad-plus-plus/notepad-plus-plus! u
|
||||||
|
OK u https://github.com/notepad-plus-plus/notepad-plus-plus# u
|
||||||
|
OK u http://github.com/notepad-plus-plus/notepad-plus-plus#fragment u
|
||||||
|
OK u (e.g., https://en.wikipedia.org/wiki/Saw_(2003_film))? u
|
||||||
|
OK u (https://en.wikipedia.org/wiki/Saw_(2003_film)) u
|
||||||
|
OK u (https://en.wikipedia.org/wiki/Saw_2003_film) u
|
||||||
|
OK u https://apache-windows.ru/как-установить-сервер-apache-c-php-mysql-и-phpmyadmin-на-windows/ u
|
||||||
|
OK u https://www.rnids.rs/национални-домени/регистрација-националних-домена u
|
||||||
|
OK u https://www.morfix.co.il/שלום u
|
||||||
|
OK u https://www.amazon.fr/GRÜNTEK-Ebrancheur-Cisailles-crémaillère-SATISFAIT/dp/B01COZUA4E/ u
|
||||||
|
OK u https://www.amazon.fr/Gardena-coupe-branches-TeleCut-520-670-télescopiques/dp/B07JLJ4N44/ u
|
||||||
|
OK u https://ig.com/?query=c761&vars={"id":"0815","first":100} u
|
||||||
|
OK u {https://ig.com/?query=c761&vars={"id":"0815","first":100}} u
|
||||||
|
OK u [https://ig.com/?query=c761&vars={"id":"0815","first":100}] u
|
||||||
|
OK u "https://ig.com/?query=c761&vars={"id":"0815","first":100}" u
|
||||||
|
OK u \href{https://weblink.com/}{click me} u
|
||||||
|
OK u \href{https://ig.com/?query=c761&vars={"id":"0815","first":100}}{click me} u
|
||||||
|
OK u mailto:don.h@free.fr u
|
||||||
|
OK u <don.h@free.fr> u
|
||||||
|
OK u <mailto:don.h@free.fr> u
|
||||||
|
OK u http:don.h@free.fr u
|
||||||
|
OK u <ftp://ds.internic.net/rfc/rfc977.txt> u
|
||||||
|
OK u ftp://host:444/0a_gopher_selector%09%09some_gplus_stuff u
|
||||||
|
OK u ftp://host:abc/0a_gopher_selector%09%09some_gplus_stuff u
|
||||||
|
OK u file://Hello%20world.txt u
|
||||||
|
OK u "file://Hello%20world.txt" u
|
||||||
|
OK u "file://Hello world.txt" u
|
||||||
|
OK u file://127.0.0.1/c$/Tools\Npp%20Test%20Data/Test3/3812.pdf u
|
25
PowerEditor/Test/UrlDetection/verifyUrlDetection_1b
Normal file
25
PowerEditor/Test/UrlDetection/verifyUrlDetection_1b
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
=== URLs which can be handled better ===
|
||||||
|
|
||||||
|
International characters directly before URL:
|
||||||
|
|
||||||
|
u ähttp://test.com u
|
||||||
|
m 0000000000000000 m
|
||||||
|
|
||||||
|
u домhttp://test.com u
|
||||||
|
m 000000000000000000 m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Apostrophes:
|
||||||
|
|
||||||
|
u https://en.wikipedia.org/wiki/Murphy's_law u
|
||||||
|
m 111111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
u http://xxx.xxx/Tom's%20sisters'%20careers u
|
||||||
|
m 11111111111111111111111111111111111111111 m
|
||||||
|
|
||||||
|
u http://xxx.xxx/Tom's%20sisters' u
|
||||||
|
m 1111111111111111111111111111111 m
|
||||||
|
|
||||||
|
u http://xxx.xxx/Tom's%20sisters'' u
|
||||||
|
m 11111111111111111111111111111111 m
|
@ -0,0 +1,18 @@
|
|||||||
|
KO u ähttp://test.com u
|
||||||
|
ok m 0000000000000000 m
|
||||||
|
ko m 0111111111111111 m
|
||||||
|
KO u домhttp://test.com u
|
||||||
|
ok m 000000000000000000 m
|
||||||
|
ko m 000111111111111111 m
|
||||||
|
KO u https://en.wikipedia.org/wiki/Murphy's_law u
|
||||||
|
ok m 111111111111111111111111111111111111111111 m
|
||||||
|
ko m 111111111111111111111111111111111111000000 m
|
||||||
|
KO u http://xxx.xxx/Tom's%20sisters'%20careers u
|
||||||
|
ok m 11111111111111111111111111111111111111111 m
|
||||||
|
ko m 11111111111111111100000000000000000000000 m
|
||||||
|
KO u http://xxx.xxx/Tom's%20sisters' u
|
||||||
|
ok m 1111111111111111111111111111111 m
|
||||||
|
ko m 1111111111111111110000000000000 m
|
||||||
|
KO u http://xxx.xxx/Tom's%20sisters'' u
|
||||||
|
ok m 11111111111111111111111111111111 m
|
||||||
|
ko m 11111111111111111100000000000000 m
|
@ -852,7 +852,7 @@ BOOL Notepad_plus::notify(SCNotification *notification)
|
|||||||
// replacement for obsolete custom SCN_SCROLLED
|
// replacement for obsolete custom SCN_SCROLLED
|
||||||
if (notification->updated & SC_UPDATE_V_SCROLL)
|
if (notification->updated & SC_UPDATE_V_SCROLL)
|
||||||
{
|
{
|
||||||
addHotSpot();
|
addHotSpot(notifyView);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if it's searching/replacing, then do nothing
|
// if it's searching/replacing, then do nothing
|
||||||
|
@ -77,6 +77,8 @@ after_build:
|
|||||||
.\unitTestLauncher.ps1
|
.\unitTestLauncher.ps1
|
||||||
.\unitTestLauncher.ps1
|
.\unitTestLauncher.ps1
|
||||||
#ATTENTION: current working dir is no longer at APPVEYOR_BUILD_FOLDER
|
#ATTENTION: current working dir is no longer at APPVEYOR_BUILD_FOLDER
|
||||||
|
cd ..\UrlDetection
|
||||||
|
.\verifyUrlDetection.ps1
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($env:PLATFORM_INPUT -eq "mingw") {
|
if ($env:PLATFORM_INPUT -eq "mingw") {
|
||||||
|
Loading…
Reference in New Issue
Block a user