@@ -128,6 +128,39 @@ TEST(RHistEngine, Clear)
128
128
EXPECT_EQ (engine.GetBinContent (RBinIndex::Overflow ()), 0 );
129
129
}
130
130
131
+ TEST (RHistEngine, Clone)
132
+ {
133
+ static constexpr std::size_t Bins = 20 ;
134
+ const RRegularAxis axis (Bins, 0 , Bins);
135
+ RHistEngine<int > engineA ({axis});
136
+
137
+ engineA.Fill (-100 );
138
+ for (std::size_t i = 0 ; i < Bins; i++) {
139
+ engineA.Fill (i);
140
+ }
141
+ engineA.Fill (100 );
142
+
143
+ RHistEngine<int > engineB = engineA.Clone ();
144
+ ASSERT_EQ (engineB.GetNDimensions (), 1 );
145
+ ASSERT_EQ (engineB.GetTotalNBins (), Bins + 2 );
146
+
147
+ EXPECT_EQ (engineB.GetBinContent (RBinIndex::Underflow ()), 1 );
148
+ for (auto index : axis.GetNormalRange ()) {
149
+ EXPECT_EQ (engineB.GetBinContent (index), 1 );
150
+ }
151
+ EXPECT_EQ (engineB.GetBinContent (RBinIndex::Overflow ()), 1 );
152
+
153
+ // Check that we can continue filling the clone.
154
+ for (std::size_t i = 0 ; i < Bins; i++) {
155
+ engineB.Fill (i);
156
+ }
157
+
158
+ for (auto index : axis.GetNormalRange ()) {
159
+ EXPECT_EQ (engineA.GetBinContent (index), 1 );
160
+ EXPECT_EQ (engineB.GetBinContent (index), 2 );
161
+ }
162
+ }
163
+
131
164
TEST (RHistEngine, Fill)
132
165
{
133
166
static constexpr std::size_t Bins = 20 ;
0 commit comments