File tree Expand file tree Collapse file tree 4 files changed +27
-0
lines changed Expand file tree Collapse file tree 4 files changed +27
-0
lines changed Original file line number Diff line number Diff line change 3
3
#pragma once
4
4
5
5
#include " global.h"
6
+ #include " signal.h"
6
7
#include " spimpl.h"
7
8
8
9
namespace libscratchcpp
@@ -27,6 +28,7 @@ class LIBSCRATCHCPP_EXPORT Drawable
27
28
28
29
int layerOrder () const ;
29
30
virtual void setLayerOrder (int newLayerOrder);
31
+ sigslot::signal<int > &layerOrderChanged () const ;
30
32
31
33
IEngine *engine () const ;
32
34
virtual void setEngine (IEngine *engine);
Original file line number Diff line number Diff line change @@ -22,6 +22,13 @@ int Drawable::layerOrder() const
22
22
void Drawable::setLayerOrder (int newLayerOrder)
23
23
{
24
24
impl->layerOrder = newLayerOrder;
25
+ impl->layerOrderChanged (newLayerOrder);
26
+ }
27
+
28
+ /* ! Emits when the layer number changes. */
29
+ sigslot::signal<int > &Drawable::layerOrderChanged () const
30
+ {
31
+ return impl->layerOrderChanged ;
25
32
}
26
33
27
34
/* ! Returns the engine. */
Original file line number Diff line number Diff line change 2
2
3
3
#pragma once
4
4
5
+ #include < scratchcpp/signal.h>
6
+
5
7
namespace libscratchcpp
6
8
{
7
9
@@ -11,6 +13,7 @@ struct DrawablePrivate
11
13
{
12
14
int layerOrder = 0 ;
13
15
IEngine *engine = nullptr ;
16
+ mutable sigslot::signal<int > layerOrderChanged;
14
17
};
15
18
16
19
} // namespace libscratchcpp
Original file line number Diff line number Diff line change 5
5
6
6
using namespace libscratchcpp ;
7
7
8
+ class LayerOrderMock
9
+ {
10
+ public:
11
+ MOCK_METHOD (void , f, (int ));
12
+ };
13
+
8
14
TEST (DrawableTest, IsTarget)
9
15
{
10
16
Drawable drawable;
@@ -21,8 +27,17 @@ TEST(DrawableTest, LayerOrder)
21
27
{
22
28
Drawable drawable;
23
29
ASSERT_EQ (drawable.layerOrder (), 0 );
30
+
31
+ LayerOrderMock spy;
32
+ drawable.layerOrderChanged ().connect (&LayerOrderMock::f, &spy);
33
+
34
+ EXPECT_CALL (spy, f (2 ));
24
35
drawable.setLayerOrder (2 );
25
36
ASSERT_EQ (drawable.layerOrder (), 2 );
37
+
38
+ EXPECT_CALL (spy, f (0 ));
39
+ drawable.setLayerOrder (0 );
40
+ ASSERT_EQ (drawable.layerOrder (), 0 );
26
41
}
27
42
28
43
TEST (TargetTest, Engine)
You can’t perform that action at this time.
0 commit comments