@@ -136,6 +136,37 @@ TEST_F(StatsManagerTest, Distribution) {
136136 ::testing::ElementsAre (1 , 0 ));
137137}
138138
139+ TEST_F (StatsManagerTest, Delta) {
140+ ViewDescriptor view_descriptor = ViewDescriptor ()
141+ .set_measure (kFirstMeasureId )
142+ .set_name (" delta" )
143+ .set_aggregation (Aggregation::Count ())
144+ .add_column (key1_)
145+ .add_column (key2_);
146+ SetAggregationWindow (AggregationWindow::Delta (), &view_descriptor);
147+ View view (view_descriptor);
148+ ASSERT_EQ (ViewData::Type::kInt64 , view.GetData ().type ());
149+ EXPECT_TRUE (view.GetData ().int_data ().empty ());
150+ // Stats under a different measure should be ignored.
151+ Record ({{SecondMeasure (), 1 }}, {});
152+ EXPECT_TRUE (view.GetData ().int_data ().empty ());
153+
154+ Record ({{FirstMeasure (), 2.0 }}, {});
155+ Record ({{FirstMeasure (), 3.0 }}, {});
156+ Record ({{FirstMeasure (), 4.0 }},
157+ {{key1_, " value1" }, {key2_, " value2" }, {key3_, " value3" }});
158+ EXPECT_THAT (
159+ view.GetData ().int_data (),
160+ ::testing::UnorderedElementsAre (
161+ ::testing::Pair (::testing::ElementsAre(" " , " " ), 2),
162+ ::testing::Pair(::testing::ElementsAre(" value1" , " value2" ), 1)));
163+
164+ Record ({{FirstMeasure (), 4.0 }}, {{key1_, " new_value" }});
165+ EXPECT_THAT (view.GetData().int_data(),
166+ ::testing::UnorderedElementsAre(
167+ ::testing::Pair (::testing::ElementsAre(" new_value" , " " ), 1)));
168+ }
169+
139170// TODO: Test window expiration if we add a simulated clock.
140171TEST_F (StatsManagerTest, IntervalCount) {
141172 ViewDescriptor view_descriptor = ViewDescriptor ()
0 commit comments