Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
Actor Framework
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
Actor Framework
Commits
fe1fd167
Commit
fe1fd167
authored
Mar 17, 2022
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add regression test for #1321
parent
d55bfb0c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
57 additions
and
26 deletions
+57
-26
libcaf_core/test/message_builder.cpp
libcaf_core/test/message_builder.cpp
+57
-26
No files found.
libcaf_core/test/message_builder.cpp
View file @
fe1fd167
...
@@ -16,38 +16,69 @@
...
@@ -16,38 +16,69 @@
#include "caf/message.hpp"
#include "caf/message.hpp"
#include "caf/type_id_list.hpp"
#include "caf/type_id_list.hpp"
using
namespace
std
::
literals
;
using
namespace
caf
;
using
namespace
caf
;
#define STEP(message) \
#define STEP(message) \
MESSAGE(message); \
MESSAGE(message); \
if (true)
if (true)
CAF_TEST
(
message
builder
can
build
messages
incrermenetally
)
{
SCENARIO
(
"message builders can build messages incrementally"
)
{
message_builder
builder
;
GIVEN
(
"a default-constructed message builder"
)
{
CHECK
(
builder
.
empty
());
WHEN
(
"calling append and to_message multiple times"
)
{
CHECK
(
builder
.
to_message
().
empty
());
THEN
(
"each message contains the values added so far"
)
{
CHECK_EQ
(
builder
.
size
(),
0u
);
message_builder
builder
;
STEP
(
"after adding 1, the message is (1)"
)
{
CHECK
(
builder
.
empty
());
builder
.
append
(
int32_t
{
1
});
CHECK
(
builder
.
to_message
().
empty
());
auto
msg
=
builder
.
to_message
();
CHECK_EQ
(
builder
.
size
(),
0u
);
CHECK_EQ
(
builder
.
size
(),
1u
);
STEP
(
"after adding 1, the message is (1)"
)
{
CHECK_EQ
(
msg
.
types
(),
make_type_id_list
<
int32_t
>
());
builder
.
append
(
int32_t
{
1
});
CHECK_EQ
(
to_string
(
msg
.
types
()),
"[int32_t]"
);
auto
msg
=
builder
.
to_message
();
CHECK_EQ
(
to_string
(
msg
),
"message(1)"
);
CHECK_EQ
(
builder
.
size
(),
1u
);
}
CHECK_EQ
(
msg
.
types
(),
make_type_id_list
<
int32_t
>
());
STEP
(
"after adding [2, 3], the message is (1, 2, 3)"
)
{
CHECK_EQ
(
to_string
(
msg
.
types
()),
"[int32_t]"
);
std
::
vector
<
int32_t
>
xs
{
2
,
3
};
CHECK_EQ
(
to_string
(
msg
),
"message(1)"
);
builder
.
append
(
xs
.
begin
(),
xs
.
end
());
}
CHECK_EQ
(
builder
.
size
(),
3u
);
STEP
(
"after adding [2, 3], the message is (1, 2, 3)"
)
{
auto
msg
=
builder
.
to_message
();
std
::
vector
<
int32_t
>
xs
{
2
,
3
};
CHECK_EQ
(
msg
.
types
(),
(
make_type_id_list
<
int32_t
,
int32_t
,
int32_t
>
()));
builder
.
append
(
xs
.
begin
(),
xs
.
end
());
CHECK_EQ
(
to_string
(
msg
.
types
()),
"[int32_t, int32_t, int32_t]"
);
CHECK_EQ
(
builder
.
size
(),
3u
);
CHECK_EQ
(
to_string
(
msg
),
"message(1, 2, 3)"
);
auto
msg
=
builder
.
to_message
();
CHECK_EQ
(
msg
.
types
(),
(
make_type_id_list
<
int32_t
,
int32_t
,
int32_t
>
()));
CHECK_EQ
(
to_string
(
msg
.
types
()),
"[int32_t, int32_t, int32_t]"
);
CHECK_EQ
(
to_string
(
msg
),
"message(1, 2, 3)"
);
}
STEP
(
"moving the content to a message produces the same message again"
)
{
auto
msg
=
builder
.
move_to_message
();
CHECK_EQ
(
msg
.
types
(),
(
make_type_id_list
<
int32_t
,
int32_t
,
int32_t
>
()));
CHECK_EQ
(
to_string
(
msg
.
types
()),
"[int32_t, int32_t, int32_t]"
);
CHECK_EQ
(
to_string
(
msg
),
"message(1, 2, 3)"
);
}
}
}
}
}
STEP
(
"moving the content to a message produces the same message again"
)
{
}
auto
msg
=
builder
.
move_to_message
();
CHECK_EQ
(
msg
.
types
(),
(
make_type_id_list
<
int32_t
,
int32_t
,
int32_t
>
()));
SCENARIO
(
"message builders allows RAII types"
)
{
CHECK_EQ
(
to_string
(
msg
.
types
()),
"[int32_t, int32_t, int32_t]"
);
GIVEN
(
"a default-constructed message builder"
)
{
CHECK_EQ
(
to_string
(
msg
),
"message(1, 2, 3)"
);
WHEN
(
"calling append with a string"
)
{
THEN
(
"to_message copies the string content into a message"
)
{
message_builder
builder
;
std
::
string
quote
=
"He who laughs at himself "
"never runs out of things to laugh at."
;
builder
.
append
(
quote
);
auto
msg
=
builder
.
to_message
();
CHECK_EQ
(
msg
.
types
(),
(
make_type_id_list
<
std
::
string
>
()));
CHECK_EQ
(
to_string
(
msg
.
types
()),
"[std::string]"
);
using
view_t
=
const_typed_message_view
<
std
::
string
>
;
if
(
auto
tup
=
view_t
(
msg
);
CHECK
(
tup
))
{
auto
&
str
=
get
<
0
>
(
tup
);
MESSAGE
(
"str: "
<<
str
);
MESSAGE
(
"quote: "
<<
quote
);
CHECK_EQ
(
str
,
quote
);
}
}
}
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment