Comments (4)
It is not currently possible, no.
A possible work around is:
template <typename T>
auto needsUpdate(T& t)
{
return NAMED_REQUIRE_CALL(t, NeedAnyUpdates()).RETURN(true);
}
template <typename ... T>
auto theseNeedUpdates(T& ... t)
{
std::vector<std::unique_ptr<trompeloeil::expectation>> rv;
std::initializer_list<int>{(rv.push_back(needsUpdate(t)),0)...};
return rv;
}
The initializer_list<int>
thingie is an ugly work around for the lack of fold-expressions in C++14. It forces the calls to needsUpdate()
for each t
, and uses the comma operator to add a 0 to the initializer_list
.
Then, in your test, you write:
auto needsUpdates = theeseNeedsUpdates(m1, m2); // vector of expectations
... // things that may call NeedAnyUpdates()...
Is a smoother work solution very important for you? I do currently not have any idea how to implement it, so a smooth solution may take a while to get in place.
from trompeloeil.
That feels very over-engineered. I didn't mean to imply that initializer lists were required. I'd be fine with something like this (if it makes it cleaner):
auto& um = CUpdateManager::Instance();
std::vector<MockUpdateReceiver> receivers(2);
um.AddReceiver(&receivers[0]);
um.AddReceiver(&receivers[1]);
REQUIRE_CALL(receivers, NeedAnyUpdates()).RETURN(true);
REQUIRE_CALL(receivers, Update(0.f));
um.Update(0.f);
And internally you can have special overloads for std::vector<T>
and just run a loop that forwards to the version taking a single mock (T
)
from trompeloeil.
I agree, but currently the presented work-around is the best I can offer. I'll try to figure out a better way.
from trompeloeil.
I'll go ahead and close this one, it's a bit of an edge case and likely not going to be a good ROI. I haven't run into this too often myself, even.
from trompeloeil.
Related Issues (20)
- How can i mock a member function of A class in a B class's function? HOT 3
- CMake version required not correct HOT 5
- Setting expectations in a function fails HOT 6
- how can I mock the static member function and non-virtual member fuctions? HOT 2
- Problematic traits for ``streamer`` primary template HOT 4
- Documentation, typo and missing bits and bobs HOT 3
- Compile error when returning values from a tl::expected with a void expected value HOT 5
- Refactoring with sequenced expectations HOT 2
- Build for QNX tests fail due to catch2 header file HOT 1
- Wrong Expectaition message HOT 1
- [Bug] Fails to run tests with catch 3.x HOT 4
- Tests fail to compile: error: 'ret_count' is an unsafe buffer that does not perform bounds checks HOT 4
- Expect call returning a reference HOT 2
- can this cppcheck inline suppression be added HOT 1
- unreal engine support & noreturn/std::abort HOT 3
- Setting side effects after creating expectactions (inside DOCTEST_SUBCASEs) HOT 5
- Feature Request: Allow specifying calling convention attributes to Mock methods HOT 12
- Spy some dependencies HOT 3
- ``trompeloeil_movable_mock`` only provides move-ctor HOT 3
- Warnings with gcc's -Weffc++ HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from trompeloeil.