}
+ string
+ format_qgroup(qgroup_t qgroup)
+ {
+ std::ostringstream ret;
+ classic(ret);
+ ret << (qgroup >> 48) << "/" << (qgroup & ((1LLU << 48) - 1));
+ return ret.str();
+ }
+
+
void
qgroup_create(int fd, qgroup_t qgroup)
{
qgroup_t calc_qgroup(uint64_t level, subvolid_t id);
qgroup_t parse_qgroup(const string& str);
+ string format_qgroup(qgroup_t qgroup);
void qgroup_create(int fd, qgroup_t qgroup);
void qgroup_destroy(int fd, qgroup_t qgroup);
LDADD = ../snapper/libsnapper.la ../dbus/libdbus.la -lboost_unit_test_framework
check_PROGRAMS = sysconfig-get1.test dirname1.test basename1.test \
- equal-date.test dbus-escape.test cmp-lt.test
+ equal-date.test dbus-escape.test cmp-lt.test qgroup1.test
TESTS = $(check_PROGRAMS)
--- /dev/null
+
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE qgroup1
+
+#include <boost/test/unit_test.hpp>
+
+#include <snapper/BtrfsUtils.h>
+
+using namespace snapper;
+using namespace BtrfsUtils;
+
+
+BOOST_AUTO_TEST_CASE(parse)
+{
+ BOOST_CHECK_EQUAL(parse_qgroup("0/0"), 0);
+ BOOST_CHECK_EQUAL(parse_qgroup("0/2"), 2);
+ BOOST_CHECK_EQUAL(parse_qgroup("1/0"), 1LLU << 48);
+ BOOST_CHECK_EQUAL(parse_qgroup("1/2"), (1LLU << 48) + 2);
+}
+
+
+BOOST_AUTO_TEST_CASE(format)
+{
+ BOOST_CHECK_EQUAL(format_qgroup(0), "0/0");
+ BOOST_CHECK_EQUAL(format_qgroup(2), "0/2");
+ BOOST_CHECK_EQUAL(format_qgroup(1LLU << 48), "1/0");
+ BOOST_CHECK_EQUAL(format_qgroup((1LLU << 48) + 2), "1/2");
+}