Thanks to Tobias Assarsson.
Change-Id: If98891597ac47488a072389d483dba15cf54c520
while spos < slen and tpos < tlen:
if sub[spos] == topic[tpos]:
+ if tpos == tlen-1:
+ # Check for e.g. foo matching foo/#
+ if spos == slen-3 and sub[spos+1] == '/' and sub[spos+2] == '#':
+ result = True
+ multilevel_wildcard = True
+ break
+
spos += 1
tpos += 1
result = False
break
- if tpos == tlen-1:
- # Check for e.g. foo matching foo/#
- if spos == slen-3 and sub[spos+1] == '/' and sub[spos+2] == '#':
- result = True
- multilevel_wildcard = True
- break
-
if not multilevel_wildcard and (tpos < tlen or spos < slen):
result = False
print("ERROR: "+sub+" "+topic)
sys.exit(1)
+do_check("test/6/#", "test/3", True)
+
do_check("foo/bar", "foo/bar", False)
do_check("foo/+", "foo/bar", False)
do_check("foo/+/baz", "foo/bar/baz", False)
do_check("foo/+/#", "foo/bar/baz", False)
+do_check("A/B/+/#", "A/B/B/C", False)
do_check("#", "foo/bar/baz", False)
do_check("foo/bar", "foo", True)
print("ERROR: "+sub+" "+topic)
sys.exit(1)
+do_check("test/6/#", "test/3", True)
+
do_check("foo/bar", "foo/bar", False)
do_check("foo/+", "foo/bar", False)
do_check("foo/+/baz", "foo/bar/baz", False)
do_check("foo/+/#", "foo/bar/baz", False)
+do_check("A/B/+/#", "A/B/B/C", False)
do_check("#", "foo/bar/baz", False)
do_check("foo/bar", "foo", True)