File: format.cpp

package info (click to toggle)
libfilezilla 0.52.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,492 kB
  • sloc: cpp: 30,965; sh: 4,241; makefile: 375; xml: 37
file content (135 lines) | stat: -rw-r--r-- 6,864 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include "../lib/libfilezilla/format.hpp"

#include "test_utils.hpp"
/*
 * This testsuite asserts the correctness of the
 * string formatting functions
 */

class format_test final : public CppUnit::TestFixture
{
	CPPUNIT_TEST_SUITE(format_test);
	CPPUNIT_TEST(test_sprintf);
	CPPUNIT_TEST_SUITE_END();

public:
	void setUp() {}
	void tearDown() {}

	void test_sprintf();
};

CPPUNIT_TEST_SUITE_REGISTRATION(format_test);

void format_test::test_sprintf()
{
	CPPUNIT_ASSERT_EQUAL(std::string("foo"), fz::sprintf("foo"));
	CPPUNIT_ASSERT_EQUAL(std::string("foo % bar"), fz::sprintf("foo %% bar"));

	CPPUNIT_ASSERT_EQUAL(std::string("foo bar"), fz::sprintf("foo %s", "bar"));
	CPPUNIT_ASSERT_EQUAL(std::string("foo bar"), fz::sprintf("foo %s", L"bar"));
	CPPUNIT_ASSERT_EQUAL(std::string("foo bar"), fz::sprintf("foo %s", std::string("bar")));
	CPPUNIT_ASSERT_EQUAL(std::string("foo bar"), fz::sprintf("foo %s", std::wstring(L"bar")));

	CPPUNIT_ASSERT_EQUAL(std::string("    "), fz::sprintf("%4s", " "));

	CPPUNIT_ASSERT_EQUAL(std::string("0"), fz::sprintf("%d", 0));
	CPPUNIT_ASSERT_EQUAL(std::string("   0"), fz::sprintf("%4d", 0));
	CPPUNIT_ASSERT_EQUAL(std::string("0000"), fz::sprintf("%04d", 0));
	CPPUNIT_ASSERT_EQUAL(std::string("   0"), fz::sprintf("% 4d", 0));
	CPPUNIT_ASSERT_EQUAL(std::string(" 000"), fz::sprintf("% 04d", 0));
	CPPUNIT_ASSERT_EQUAL(std::string(" 000"), fz::sprintf("%0 4d", 0));

	CPPUNIT_ASSERT_EQUAL(std::string("0"), fz::sprintf("%0d", 0));
	CPPUNIT_ASSERT_EQUAL(std::string(" 0"), fz::sprintf("% 0d", 0));
	CPPUNIT_ASSERT_EQUAL(std::string(" 0"), fz::sprintf("% d", 0));

	CPPUNIT_ASSERT_EQUAL(std::string("1"), fz::sprintf("%d", 1));
	CPPUNIT_ASSERT_EQUAL(std::string("   1"), fz::sprintf("%4d", 1));
	CPPUNIT_ASSERT_EQUAL(std::string("0001"), fz::sprintf("%04d", 1));
	CPPUNIT_ASSERT_EQUAL(std::string("   1"), fz::sprintf("% 4d", 1));
	CPPUNIT_ASSERT_EQUAL(std::string(" 001"), fz::sprintf("% 04d", 1));
	CPPUNIT_ASSERT_EQUAL(std::string(" 001"), fz::sprintf("%0 4d", 1));

	CPPUNIT_ASSERT_EQUAL(std::string("123"), fz::sprintf("%d", 123));
	CPPUNIT_ASSERT_EQUAL(std::string(" 123"), fz::sprintf("%4d", 123));
	CPPUNIT_ASSERT_EQUAL(std::string("0123"), fz::sprintf("%04d", 123));
	CPPUNIT_ASSERT_EQUAL(std::string(" 123"), fz::sprintf("% 4d", 123));
	CPPUNIT_ASSERT_EQUAL(std::string(" 123"), fz::sprintf("% 04d", 123));
	CPPUNIT_ASSERT_EQUAL(std::string(" 123"), fz::sprintf("%0 4d", 123));

	CPPUNIT_ASSERT_EQUAL(std::string("1234"), fz::sprintf("%d", 1234));
	CPPUNIT_ASSERT_EQUAL(std::string("1234"), fz::sprintf("%4d", 1234));
	CPPUNIT_ASSERT_EQUAL(std::string("1234"), fz::sprintf("%04d", 1234));
	CPPUNIT_ASSERT_EQUAL(std::string(" 1234"), fz::sprintf("% 4d", 1234));
	CPPUNIT_ASSERT_EQUAL(std::string(" 1234"), fz::sprintf("% 04d", 1234));
	CPPUNIT_ASSERT_EQUAL(std::string(" 1234"), fz::sprintf("%0 4d", 1234));

	CPPUNIT_ASSERT_EQUAL(std::string("12345"), fz::sprintf("%d", 12345));
	CPPUNIT_ASSERT_EQUAL(std::string("12345"), fz::sprintf("%4d", 12345));
	CPPUNIT_ASSERT_EQUAL(std::string("12345"), fz::sprintf("%04d", 12345));
	CPPUNIT_ASSERT_EQUAL(std::string(" 12345"), fz::sprintf("% 4d", 12345));
	CPPUNIT_ASSERT_EQUAL(std::string(" 12345"), fz::sprintf("% 04d", 12345));
	CPPUNIT_ASSERT_EQUAL(std::string(" 12345"), fz::sprintf("%0 4d", 12345));

	CPPUNIT_ASSERT_EQUAL(std::string("-42"), fz::sprintf("%d", -42));
	CPPUNIT_ASSERT_EQUAL(std::string("-42"), fz::sprintf("%d", -42));
	CPPUNIT_ASSERT_EQUAL(std::string("-42"), fz::sprintf("%0d", -42));
	CPPUNIT_ASSERT_EQUAL(std::string("-42"), fz::sprintf("% d", -42));
	CPPUNIT_ASSERT_EQUAL(std::string("-42"), fz::sprintf("% 0d", -42));

	CPPUNIT_ASSERT_EQUAL(std::string(" -42"), fz::sprintf("%4d", -42));
	CPPUNIT_ASSERT_EQUAL(std::string(" -42"), fz::sprintf("%4d", -42));
	CPPUNIT_ASSERT_EQUAL(std::string("-042"), fz::sprintf("%04d", -42));
	CPPUNIT_ASSERT_EQUAL(std::string(" -42"), fz::sprintf("% 4d", -42));
	CPPUNIT_ASSERT_EQUAL(std::string("-042"), fz::sprintf("% 04d", -42));

	CPPUNIT_ASSERT_EQUAL(std::string("foo 7 foo"), fz::sprintf("%2$s %1$d %2$s", 7, "foo"));

	CPPUNIT_ASSERT_EQUAL(std::string("0"), fz::sprintf("%x", 0));
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("%x", 2342666));
	CPPUNIT_ASSERT_EQUAL(std::string("23BF0A"), fz::sprintf("%X", 2342666));
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("%0x", 2342666));
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("% x", 2342666));
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("% 0x", 2342666));
	CPPUNIT_ASSERT_EQUAL(std::string("0a"), fz::sprintf("%02x", 10));

	CPPUNIT_ASSERT_EQUAL(std::string("   0"), fz::sprintf("%4x", 0));
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("%4x", 2342666));
	CPPUNIT_ASSERT_EQUAL(std::string("23BF0A"), fz::sprintf("%4X", 2342666));
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("%04x", 2342666));
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("% 4x", 2342666));
	CPPUNIT_ASSERT_EQUAL(std::string("23bf0a"), fz::sprintf("% 04x", 2342666));

	CPPUNIT_ASSERT_EQUAL(std::string("77     "), fz::sprintf("%-7d", 77));
	CPPUNIT_ASSERT_EQUAL(std::string("-77    "), fz::sprintf("%-7d", -77));
	CPPUNIT_ASSERT_EQUAL(std::string(" 77    "), fz::sprintf("% -7d", 77));
	CPPUNIT_ASSERT_EQUAL(std::string("-77    "), fz::sprintf("% -7d", -77));
	CPPUNIT_ASSERT_EQUAL(std::string(" 77    "), fz::sprintf("%- 7d", 77));
	CPPUNIT_ASSERT_EQUAL(std::string("-77    "), fz::sprintf("%- 7d", -77));
	CPPUNIT_ASSERT_EQUAL(std::string("ok     "), fz::sprintf("%- 7s", "ok"));
	CPPUNIT_ASSERT_EQUAL(std::string("hello"), fz::sprintf("%-3s", "hello"));

	CPPUNIT_ASSERT_EQUAL(std::string("    +77"), fz::sprintf("%+7d", 77));
	CPPUNIT_ASSERT_EQUAL(std::string("    -77"), fz::sprintf("%+7d", -77));
	CPPUNIT_ASSERT_EQUAL(std::string("+77    "), fz::sprintf("%+-7d", 77));
	CPPUNIT_ASSERT_EQUAL(std::string("-77    "), fz::sprintf("%+-7d", -77));

	CPPUNIT_ASSERT_EQUAL(std::string("x"), fz::sprintf("%c", char('x')));
	CPPUNIT_ASSERT_EQUAL(std::string("x"), fz::sprintf("%c", int('x')));

	CPPUNIT_ASSERT_EQUAL(std::string("x"), fz::sprintf("%s", std::string_view("x", 1)));
	CPPUNIT_ASSERT_EQUAL(std::string("x"), fz::sprintf("%s", std::wstring_view(L"x", 1)));
	//CPPUNIT_ASSERT_EQUAL(std::wstring(L"x"), fz::sprintf(L"%s", std::string_view("x", 1)));
	//CPPUNIT_ASSERT_EQUAL(std::wstring(L"x"), fz::sprintf(L"%s", std::wstring_view(L"x", 1)));

	CPPUNIT_ASSERT_EQUAL(std::string("1"), fz::sprintf("%d", true));
	CPPUNIT_ASSERT_EQUAL(std::string("0"), fz::sprintf("%d", false));

	int16_t const neg16 = -42;
	CPPUNIT_ASSERT_EQUAL(std::string("ffd6"), fz::sprintf("%x", neg16));
	int32_t const neg32 = -42;
	CPPUNIT_ASSERT_EQUAL(std::string("ffffffd6"), fz::sprintf("%x", neg32));
	int64_t const neg64 = -42;
	CPPUNIT_ASSERT_EQUAL(std::string("ffffffffffffffd6"), fz::sprintf("%x", neg64));
}