blob: 9c02f3e6acdfce769cbf7a9ec2daab00bb7a653d [file] [log] [blame]
// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <gtest/gtest.h>
#include "gestures/include/gestures.h"
#include "gestures/include/timestamp_filter_interpreter.h"
#include "gestures/include/unittest_util.h"
namespace gestures {
class TimestampFilterInterpreterTest : public ::testing::Test {};
class TimestampFilterInterpreterTestInterpreter : public Interpreter {
public:
TimestampFilterInterpreterTestInterpreter()
: Interpreter(NULL, NULL, false) {}
};
TEST(TimestampFilterInterpreterTest, SimpleTest) {
TimestampFilterInterpreterTestInterpreter* base_interpreter =
new TimestampFilterInterpreterTestInterpreter;
TimestampFilterInterpreter interpreter(base_interpreter, NULL);
TestInterpreterWrapper wrapper(&interpreter);
HardwareState hs[] = {
{ 1.000, 0, 1, 1, NULL, 0, 0, 0, 0, 0.000 },
{ 1.010, 0, 1, 1, NULL, 0, 0, 0, 0, 0.012 },
{ 1.020, 0, 1, 1, NULL, 0, 0, 0, 0, 0.018 },
{ 1.030, 0, 1, 1, NULL, 0, 0, 0, 0, 0.031 }
};
stime_t expected_timestamps[] = { 1.000, 1.012, 1.018, 1.031 };
for (size_t i = 0; i < arraysize(hs); i++) {
wrapper.SyncInterpret(&hs[i], NULL);
EXPECT_EQ(hs[i].timestamp, expected_timestamps[i]);
}
}
TEST(TimestampFilterInterpreterTest, NoMscTimestampTest) {
TimestampFilterInterpreterTestInterpreter* base_interpreter =
new TimestampFilterInterpreterTestInterpreter;
TimestampFilterInterpreter interpreter(base_interpreter, NULL);
TestInterpreterWrapper wrapper(&interpreter);
HardwareState hs[] = {
{ 1.000, 0, 1, 1, NULL, 0, 0, 0, 0, 0.000 },
{ 1.010, 0, 1, 1, NULL, 0, 0, 0, 0, 0.000 },
{ 1.020, 0, 1, 1, NULL, 0, 0, 0, 0, 0.000 },
{ 1.030, 0, 1, 1, NULL, 0, 0, 0, 0, 0.000 }
};
for (size_t i = 0; i < arraysize(hs); i++) {
stime_t expected_timestamp = hs[i].timestamp;
wrapper.SyncInterpret(&hs[i], NULL);
EXPECT_EQ(hs[i].timestamp, expected_timestamp);
}
}
TEST(TimestampFilterInterpreterTest, MscTimestampResetTest) {
TimestampFilterInterpreterTestInterpreter* base_interpreter =
new TimestampFilterInterpreterTestInterpreter;
TimestampFilterInterpreter interpreter(base_interpreter, NULL);
TestInterpreterWrapper wrapper(&interpreter);
HardwareState hs[] = {
{ 1.000, 0, 1, 1, NULL, 0, 0, 0, 0, 0.000 },
{ 1.010, 0, 1, 1, NULL, 0, 0, 0, 0, 0.012 },
{ 1.020, 0, 1, 1, NULL, 0, 0, 0, 0, 0.018 },
{ 1.030, 0, 1, 1, NULL, 0, 0, 0, 0, 0.031 },
{ 3.000, 0, 1, 1, NULL, 0, 0, 0, 0, 0.000 }, //msc_timestamp reset to 0
{ 3.010, 0, 1, 1, NULL, 0, 0, 0, 0, 0.008 },
{ 3.020, 0, 1, 1, NULL, 0, 0, 0, 0, 0.020 },
{ 3.030, 0, 1, 1, NULL, 0, 0, 0, 0, 0.035 }
};
stime_t expected_timestamps[] = {
1.000, 1.012, 1.018, 1.031,
3.000, 3.008, 3.020, 3.035
};
for (size_t i = 0; i < arraysize(hs); i++) {
wrapper.SyncInterpret(&hs[i], NULL);
EXPECT_EQ(hs[i].timestamp, expected_timestamps[i]);
}
}
} // namespace gestures