xaizek / vifm (License: GPLv2+) (since 2018-12-07)
Vifm is a file manager with curses interface, which provides Vi[m]-like environment for managing objects within file systems, extended with some useful ideas from mutt.
<root> / tests / bmarks / set.c (5d356b900ae0119f82b9d2190490a19c0f3c9799) (1,695B) (mode 100644) [raw]
#include <stic.h>

#include "../../src/bmarks.h"

#include "utils.h"

TEST(lonely_empty_tag_is_rejected)
{
	assert_failure(bmarks_set("lonely/empty/tag/is/rejected", ""));
	assert_string_equal(NULL, get_tags("lonely/empty/tag/is/rejected"));
}

TEST(empty_tag_is_rejected_in_any_form)
{
	assert_failure(bmarks_set("empty/tag/is/rejected", ","));
	assert_string_equal(NULL, get_tags("empty/tag/is/rejected"));

	assert_failure(bmarks_set("empty/tag/is/rejected", ",,"));
	assert_string_equal(NULL, get_tags("empty/tag/is/rejected"));

	assert_failure(bmarks_set("empty/tag/is/rejected", "abc,,"));
	assert_string_equal(NULL, get_tags("empty/tag/is/rejected"));

	assert_failure(bmarks_set("empty/tag/is/rejected", ",xz,de"));
	assert_string_equal(NULL, get_tags("empty/tag/is/rejected"));

	assert_failure(bmarks_set("empty/tag/is/rejected", "abc,,de"));
	assert_string_equal(NULL, get_tags("empty/tag/is/rejected"));
}

TEST(single_tag_is_set)
{
	assert_success(bmarks_set("single/tag/is/set", "tag"));
	assert_string_equal("tag", get_tags("single/tag/is/set"));
}

TEST(tag_is_overwritten)
{
	assert_success(bmarks_set("tag/is/overwritten", "old-tag"));
	assert_success(bmarks_set("tag/is/overwritten", "new-tag"));
	assert_string_equal("new-tag", get_tags("tag/is/overwritten"));
}

TEST(path_is_canonicalized)
{
	assert_success(bmarks_set("parent/../dir", "tag"));
	assert_string_equal("tag", get_tags("dir"));
}

TEST(canonicalization_preserves_trailing_slash)
{
	assert_success(bmarks_set("parent/../dir/", "tag"));
	assert_string_equal("tag", get_tags("dir/"));
}

/* vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 : */
/* vim: set cinoptions+=t0 filetype=c : */
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master