{ "description": "Test `_txt` for `~*` regex queries to validate correct escape pattern as applied in the `QueryEngine`", "setup": [ { "namespace": "SMW_NS_PROPERTY", "page": "Has FirstRegexBlobSearchProperty", "contents": "[[Has type::Text]]" }, { "namespace": "SMW_NS_PROPERTY", "page": "Has SecondRegexBlobSearchProperty", "contents": "[[Has type::Text]]" }, { "namespace": "NS_MAIN", "page": "RegexTextAnnotationForCharactersThatRequireSpecialEscapePattern", "contents": "[[Has FirstRegexBlobSearchProperty::{(+*. \\;)}]]" }, { "namespace": "NS_MAIN", "page": "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern", "contents": "{{#set:|Has FirstRegexBlobSearchProperty=[(*. \\=^)\"]}} {{#subobject:|Has SecondRegexBlobSearchProperty=[(+. \\:)]-|}}" }, { "namespace": "NS_MAIN", "page": "RequiresSuperSpecialEscapePattern", "contents": "{{#set:|Has FirstRegexBlobSearchProperty=Foo(\"#^$&-/)-|}}" } ], "tests": [ { "type": "query", "about": "#0 Left curly brackets", "condition": "[[Has FirstRegexBlobSearchProperty::~*{*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexTextAnnotationForCharactersThatRequireSpecialEscapePattern#0##" ], "count": "1" } }, { "type": "query", "about": "#1 Right curly brackets", "condition": "[[Has FirstRegexBlobSearchProperty::~*}*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexTextAnnotationForCharactersThatRequireSpecialEscapePattern#0##" ], "count": "1" } }, { "type": "query", "about": "#2 Left parenthesis", "condition": "[[Has FirstRegexBlobSearchProperty::~*(*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexTextAnnotationForCharactersThatRequireSpecialEscapePattern#0##", "RequiresSuperSpecialEscapePattern#0##", "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern#0##" ], "count": "3" } }, { "type": "query", "about": "#3 Disjunctive left parenthesis", "condition": "[[Has FirstRegexBlobSearchProperty::~*(*]] OR [[Has SecondRegexBlobSearchProperty::~*(*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexTextAnnotationForCharactersThatRequireSpecialEscapePattern#0##", "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern#0##", "RequiresSuperSpecialEscapePattern#0##", "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern#0##_4726701f0e7d838d922ac6b9414558dc" ], "count": "4" } }, { "type": "query", "about": "#4 Right parenthesis", "condition": "[[Has FirstRegexBlobSearchProperty::~*)*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexTextAnnotationForCharactersThatRequireSpecialEscapePattern#0##", "RequiresSuperSpecialEscapePattern#0##", "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern#0##" ], "count": "3" } }, { "type": "query", "about": "#5 Disjunctive right parenthesis", "condition": "[[Has FirstRegexBlobSearchProperty::~*)*]] OR [[Has SecondRegexBlobSearchProperty::~*)*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexTextAnnotationForCharactersThatRequireSpecialEscapePattern#0##", "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern#0##", "RequiresSuperSpecialEscapePattern#0##", "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern#0##_4726701f0e7d838d922ac6b9414558dc" ], "count": "4" } }, { "type": "query", "about": "#6 Left square brackets", "condition": "[[Has FirstRegexBlobSearchProperty::~*[*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern#0##" ], "count": "1" } }, { "type": "query", "about": "#7 Right square brackets", "condition": "[[Has FirstRegexBlobSearchProperty::~*]*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern#0##" ], "count": "1" } }, { "type": "query", "about": "#8", "condition": "[[Has FirstRegexBlobSearchProperty::~*;?}]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexTextAnnotationForCharactersThatRequireSpecialEscapePattern#0##" ], "count": "1" } }, { "type": "query", "about": "#9", "condition": "[[Has SecondRegexBlobSearchProperty::~*+.*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern#0##_4726701f0e7d838d922ac6b9414558dc" ], "count": "1" } }, { "type": "query", "about": "#10", "condition": "[[Has FirstRegexBlobSearchProperty::~*=^*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern#0##" ], "count": "1" } }, { "type": "query", "about": "#11 Composite regex search", "condition": "[[Has FirstRegexBlobSearchProperty::~*{*]][[Has FirstRegexBlobSearchProperty::~*}*]][[Has FirstRegexBlobSearchProperty::~*)*]] OR [[Has SecondRegexBlobSearchProperty::~*)*]] OR [[Has FirstRegexBlobSearchProperty::~*=^*]][[Has SecondRegexBlobSearchProperty::~*+.*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RegexTextAnnotationForCharactersThatRequireSpecialEscapePattern#0##", "RegexParserAnnotationForCharactersThatRequireSpecialEscapePattern#0##_4726701f0e7d838d922ac6b9414558dc" ], "count": "2" } }, { "type": "query", "about": "#12 Pipe regex", "condition": "[[Has FirstRegexBlobSearchProperty::~*-|*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RequiresSuperSpecialEscapePattern#0##" ], "count": "1" } }, { "type": "query", "about": "#13 Requires special escaping effort", "skip-on": { "elastic": "`/` would require escaping but at the same would make it invisible to be used as subpage Foo/Boo divider on other searches" }, "condition": "[[Has FirstRegexBlobSearchProperty::~*Foo(\"#^$&-/)-|*]]", "printouts": [], "parameters": { "limit": "10" }, "assert-queryresult": { "results": [ "RequiresSuperSpecialEscapePattern#0##" ], "count": "1" } } ], "settings": { "smwgQMaxSize": "25" }, "meta": { "version": "2", "is-incomplete": false } }