#include "components/dom_distiller/content/browser/uma_helper.h"
#include <string>
#include "base/test/task_environment.h"
#include "base/time/time.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace dom_distiller {
class UMAHelperTest : public testing::Test {
public:
void FastForwardBy(int milliseconds) {
task_environment_.FastForwardBy(base::Milliseconds(milliseconds));
}
protected:
base::test::TaskEnvironment task_environment_{
base::test::TaskEnvironment::TimeSource::MOCK_TIME};
};
TEST_F(UMAHelperTest, TestTimerBasics) {
UMAHelper::DistillabilityDriverTimer timer;
ASSERT_FALSE(timer.HasStarted());
timer.Start(false);
ASSERT_TRUE(timer.HasStarted());
FastForwardBy(100);
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 100);
FastForwardBy(100);
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 200);
timer.Pause();
ASSERT_TRUE(timer.HasStarted());
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 200);
FastForwardBy(100);
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 200);
timer.Start(false);
ASSERT_TRUE(timer.HasStarted());
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 200);
FastForwardBy(100);
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 300);
timer.Pause();
FastForwardBy(100);
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 300);
timer.Resume();
FastForwardBy(100);
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 400);
timer.Start(false);
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 400);
FastForwardBy(100);
timer.Start(false);
timer.Start(false);
timer.Resume();
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 500);
timer.Pause();
timer.Pause();
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 500);
timer.Reset();
ASSERT_FALSE(timer.HasStarted());
}
TEST_F(UMAHelperTest, TestTimerForDistilledPage) {
UMAHelper::DistillabilityDriverTimer timer;
timer.Start(true);
ASSERT_TRUE(timer.HasStarted());
FastForwardBy(100);
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 100);
timer.Start(true);
ASSERT_EQ(timer.GetElapsedTime().InMilliseconds(), 100);
}
}