From b3bd8c3e8d367975980043e772f7cd78b7f96bc6 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Thu, 22 Oct 2020 16:21:03 +0200 Subject: Feature: support any tag separator So it allows to have multiple words tags. Breaking change: commas ',' are no longer a default separator. Fixes #594 --- tests/bookmark/LinkUtilsTest.php | 124 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 119 insertions(+), 5 deletions(-) (limited to 'tests/bookmark/LinkUtilsTest.php') diff --git a/tests/bookmark/LinkUtilsTest.php b/tests/bookmark/LinkUtilsTest.php index 3321242f..c2f9f930 100644 --- a/tests/bookmark/LinkUtilsTest.php +++ b/tests/bookmark/LinkUtilsTest.php @@ -247,7 +247,8 @@ class LinkUtilsTest extends TestCase $title, $desc, $keywords, - false + false, + ' ' ); $data = [ @@ -297,7 +298,8 @@ class LinkUtilsTest extends TestCase $title, $desc, $keywords, - false + false, + ' ' ); $data = [ @@ -330,7 +332,8 @@ class LinkUtilsTest extends TestCase $title, $desc, $keywords, - false + false, + ' ' ); $data = [ @@ -363,7 +366,8 @@ class LinkUtilsTest extends TestCase $title, $desc, $keywords, - false + false, + ' ' ); $data = [ @@ -428,7 +432,8 @@ class LinkUtilsTest extends TestCase $title, $desc, $keywords, - true + true, + ' ' ); $data = [ 'th=device-width">' @@ -574,6 +579,115 @@ class LinkUtilsTest extends TestCase $this->assertFalse(is_note('https://github.com/shaarli/Shaarli/?hi')); } + /** + * Test tags_str2array with whitespace separator. + */ + public function testTagsStr2ArrayWithSpaceSeparator(): void + { + $separator = ' '; + + static::assertSame(['tag1', 'tag2', 'tag3'], tags_str2array('tag1 tag2 tag3', $separator)); + static::assertSame(['tag1', 'tag2', 'tag3'], tags_str2array('tag1 tag2 tag3', $separator)); + static::assertSame(['tag1', 'tag2', 'tag3'], tags_str2array(' tag1 tag2 tag3 ', $separator)); + static::assertSame(['tag1@', 'tag2,', '.tag3'], tags_str2array(' tag1@ tag2, .tag3 ', $separator)); + static::assertSame([], tags_str2array('', $separator)); + static::assertSame([], tags_str2array(' ', $separator)); + static::assertSame([], tags_str2array(null, $separator)); + } + + /** + * Test tags_str2array with @ separator. + */ + public function testTagsStr2ArrayWithCharSeparator(): void + { + $separator = '@'; + + static::assertSame(['tag1', 'tag2', 'tag3'], tags_str2array('tag1@tag2@tag3', $separator)); + static::assertSame(['tag1', 'tag2', 'tag3'], tags_str2array('tag1@@@@tag2@@@@tag3', $separator)); + static::assertSame(['tag1', 'tag2', 'tag3'], tags_str2array('@@@tag1@@@tag2@@@@tag3@@', $separator)); + static::assertSame( + ['tag1#', 'tag2, and other', '.tag3'], + tags_str2array('@@@ tag1# @@@ tag2, and other @@@@.tag3@@', $separator) + ); + static::assertSame([], tags_str2array('', $separator)); + static::assertSame([], tags_str2array(' ', $separator)); + static::assertSame([], tags_str2array(null, $separator)); + } + + /** + * Test tags_array2str with ' ' separator. + */ + public function testTagsArray2StrWithSpaceSeparator(): void + { + $separator = ' '; + + static::assertSame('tag1 tag2 tag3', tags_array2str(['tag1', 'tag2', 'tag3'], $separator)); + static::assertSame('tag1, tag2@ tag3', tags_array2str(['tag1,', 'tag2@', 'tag3'], $separator)); + static::assertSame('tag1 tag2 tag3', tags_array2str([' tag1 ', 'tag2', 'tag3 '], $separator)); + static::assertSame('tag1 tag2 tag3', tags_array2str([' tag1 ', ' ', 'tag2', ' ', 'tag3 '], $separator)); + static::assertSame('tag1', tags_array2str([' tag1 '], $separator)); + static::assertSame('', tags_array2str([' '], $separator)); + static::assertSame('', tags_array2str([], $separator)); + static::assertSame('', tags_array2str(null, $separator)); + } + + /** + * Test tags_array2str with @ separator. + */ + public function testTagsArray2StrWithCharSeparator(): void + { + $separator = '@'; + + static::assertSame('tag1@tag2@tag3', tags_array2str(['tag1', 'tag2', 'tag3'], $separator)); + static::assertSame('tag1,@tag2@tag3', tags_array2str(['tag1,', 'tag2@', 'tag3'], $separator)); + static::assertSame( + 'tag1@tag2, and other@tag3', + tags_array2str(['@@@@ tag1@@@', ' @tag2, and other @', 'tag3@@@@'], $separator) + ); + static::assertSame('tag1@tag2@tag3', tags_array2str(['@@@tag1@@@', '@', 'tag2', '@@@', 'tag3@@@'], $separator)); + static::assertSame('tag1', tags_array2str(['@@@@tag1@@@@'], $separator)); + static::assertSame('', tags_array2str(['@@@'], $separator)); + static::assertSame('', tags_array2str([], $separator)); + static::assertSame('', tags_array2str(null, $separator)); + } + + /** + * Test tags_array2str with @ separator. + */ + public function testTagsFilterWithSpaceSeparator(): void + { + $separator = ' '; + + static::assertSame(['tag1', 'tag2', 'tag3'], tags_filter(['tag1', 'tag2', 'tag3'], $separator)); + static::assertSame(['tag1,', 'tag2@', 'tag3'], tags_filter(['tag1,', 'tag2@', 'tag3'], $separator)); + static::assertSame(['tag1', 'tag2', 'tag3'], tags_filter([' tag1 ', 'tag2', 'tag3 '], $separator)); + static::assertSame(['tag1', 'tag2', 'tag3'], tags_filter([' tag1 ', ' ', 'tag2', ' ', 'tag3 '], $separator)); + static::assertSame(['tag1'], tags_filter([' tag1 '], $separator)); + static::assertSame([], tags_filter([' '], $separator)); + static::assertSame([], tags_filter([], $separator)); + static::assertSame([], tags_filter(null, $separator)); + } + + /** + * Test tags_array2str with @ separator. + */ + public function testTagsArrayFilterWithSpaceSeparator(): void + { + $separator = '@'; + + static::assertSame(['tag1', 'tag2', 'tag3'], tags_filter(['tag1', 'tag2', 'tag3'], $separator)); + static::assertSame(['tag1,', 'tag2#', 'tag3'], tags_filter(['tag1,', 'tag2#', 'tag3'], $separator)); + static::assertSame( + ['tag1', 'tag2, and other', 'tag3'], + tags_filter(['@@@@ tag1@@@', ' @tag2, and other @', 'tag3@@@@'], $separator) + ); + static::assertSame(['tag1', 'tag2', 'tag3'], tags_filter(['@@@tag1@@@', '@', 'tag2', '@@@', 'tag3@@@'], $separator)); + static::assertSame(['tag1'], tags_filter(['@@@@tag1@@@@'], $separator)); + static::assertSame([], tags_filter(['@@@'], $separator)); + static::assertSame([], tags_filter([], $separator)); + static::assertSame([], tags_filter(null, $separator)); + } + /** * Util function to build an hashtag link. * -- cgit v1.2.3