22
22
#include <algorithm>
25
26
#include <iostream>
27
28
#include "svncxxhl.hpp"
29
#include "../src/private.hpp"
30
32
#include "svn_error.h"
33
void trace(const svn::error::message& msg)
37
std::cout << "test_exception: E"
38
<< std::setw(6) << std::setfill('0') << std::right
39
<< msg.first << ':' << ' ';
40
std::cout << msg.second << std::endl;
43
void traceall(const char *message, const svn::error& err)
45
typedef svn::error::message_list message_list;
46
std::cout << message << std::endl;
47
std::cout << "Traced Messages:" << std::endl;
48
message_list ml = err.traced_messages();
49
std::for_each(ml.begin(), ml.end(), trace);
50
std::cout << "Just Messages:" << std::endl;
52
std::for_each(ml.begin(), ml.end(), trace);
54
} // anonymous namespace
62
err = svn_error_create(SVN_ERR_TEST_FAILED, NULL, "original message");
63
err = svn_error_create(SVN_ERR_BASE, err, "wrapper message");
64
err = svn_error_create(SVN_ERR_CANCELLED, err, NULL);
65
err = svn_error_create(SVN_ERR_CANCELLED, err, NULL);
66
err = svn_error_trace(err);
67
svn::error::throw_svn_error(err);
69
catch (const svn::cancelled& err)
71
traceall("Caught: CANCEL", err);
74
catch (const svn::error& err)
76
traceall("Caught: ERROR", err);
91
err = svn_error_create(SVN_ERR_TEST_FAILED, NULL, "original message");
92
err = svn_error_create(SVN_ERR_BASE, err, "wrapper message");
93
err = svn_error_create(SVN_ERR_CANCELLED, err, NULL);
94
err = svn_error_create(SVN_ERR_CANCELLED, err, NULL);
95
err = svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, err, NULL);
96
err = svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, err, NULL);
97
err = svn_error_trace(err);
98
svn::error::throw_svn_error(err);
100
catch (const svn::cancelled& err)
102
traceall("Caught: CANCEL", err);
105
catch (const svn::error& err)
107
traceall("Caught: ERROR", err);
121
const char *stat = (test_cancel() ? "OK" : "ERROR");
122
std::cerr << "test_cancel .... " << stat << std::endl;
124
stat = (test_error() ? "OK" : "ERROR");
125
std::cerr << "test_error ..... " << stat << std::endl;
36
#include <gmock/gmock.h>
39
svn_error_t* make_error_test_error()
42
err = svn_error_create(SVN_ERR_TEST_FAILED, NULL, "original message");
43
err = svn_error_create(SVN_ERR_BASE, err, "wrapper message");
44
err = svn_error_trace(err);
45
err = svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, err, NULL);
46
err = svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, err, NULL);
47
err = svn_error_trace(err);
50
} // anonymous namespace
52
TEST(Exceptions, CatchError)
56
SVN::detail::checked_call(make_error_test_error());
58
catch (const SVN::Error& err)
60
SVN::Error::MessageList ml = err.messages();
61
EXPECT_EQ(3, ml.size());
62
EXPECT_EQ(SVN_ERR_UNSUPPORTED_FEATURE, ml[0].code());
63
EXPECT_EQ(SVN_ERR_BASE, ml[1].code());
64
EXPECT_EQ(SVN_ERR_TEST_FAILED, ml[2].code());
66
SVN::Error::MessageList tml = err.traced_messages();
68
EXPECT_EQ(8, tml.size());
69
EXPECT_EQ(SVN_ERR_UNSUPPORTED_FEATURE, tml[0].code());
70
EXPECT_EQ(SVN_ERR_UNSUPPORTED_FEATURE, tml[1].code());
71
EXPECT_EQ(SVN_ERR_UNSUPPORTED_FEATURE, tml[2].code());
72
EXPECT_EQ(SVN_ERR_BASE, tml[3].code());
73
EXPECT_EQ(SVN_ERR_BASE, tml[4].code());
74
EXPECT_EQ(SVN_ERR_BASE, tml[5].code());
75
EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[6].code());
76
EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[7].code());
78
EXPECT_EQ(3, tml.size());
79
EXPECT_EQ(SVN_ERR_UNSUPPORTED_FEATURE, tml[0].code());
80
EXPECT_EQ(SVN_ERR_BASE, tml[1].code());
81
EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[2].code());
88
svn_error_t* make_cancel_test_error()
91
err = svn_error_create(SVN_ERR_CANCELLED, NULL, NULL);
92
err = svn_error_create(SVN_ERR_CANCELLED, err, NULL);
93
err = svn_error_trace(err);
94
err = svn_error_create(SVN_ERR_TEST_FAILED, err, "original message");
95
err = svn_error_create(SVN_ERR_BASE, err, "wrapper message");
96
err = svn_error_trace(err);
99
} // anonymous namespace
101
TEST(Exceptions, CatchCancelled)
105
SVN::detail::checked_call(make_cancel_test_error());
107
catch (const SVN::Cancelled& err)
109
SVN::Error::MessageList ml = err.messages();
110
EXPECT_EQ(3, ml.size());
111
EXPECT_EQ(SVN_ERR_BASE, ml[0].code());
112
EXPECT_EQ(SVN_ERR_TEST_FAILED, ml[1].code());
113
EXPECT_EQ(SVN_ERR_CANCELLED, ml[2].code());
115
SVN::Error::MessageList tml = err.traced_messages();
117
EXPECT_EQ(8, tml.size());
118
EXPECT_EQ(SVN_ERR_BASE, tml[0].code());
119
EXPECT_EQ(SVN_ERR_BASE, tml[1].code());
120
EXPECT_EQ(SVN_ERR_BASE, tml[2].code());
121
EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[3].code());
122
EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[4].code());
123
EXPECT_EQ(SVN_ERR_CANCELLED, tml[5].code());
124
EXPECT_EQ(SVN_ERR_CANCELLED, tml[6].code());
125
EXPECT_EQ(SVN_ERR_CANCELLED, tml[7].code());
127
EXPECT_EQ(3, tml.size());
128
EXPECT_EQ(SVN_ERR_BASE, tml[0].code());
129
EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[1].code());
130
EXPECT_EQ(SVN_ERR_CANCELLED, tml[2].code());