interpreter_unittest: fix memory leaks
Except for a few manual changes in SimpleTest around base_interpreter2,
this CL was is the result of the following Vim substitutions:
%s/\([a-zA-Z]\+\)\* base_interpreter =\n\?\s*new \1(/\1 base_interpreter(
%s/base_interpreter();/base_interpreter;
%s/base_interpreter->/base_interpreter./g
%s/TestInterpreterWrapper wrapper(base_interpreter);/TestInterpreterWrapper wrapper(\&base_interpreter);
BUG=b:318520168
TEST=add -fsanitize=address to compiler flags, run unit tests [0], and
check no address sanitization failures are reported from
interpreter_unittest.cc
[0]: cros_sdk env FEATURES="test" emerge-${BOARD} chromeos-base/gestures
Change-Id: Id4148d8264e6260bce4b0d16c15d5f54ed944ea6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/gestures/+/5318356
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Henry Barnor <hbarnor@chromium.org>
Reviewed-by: Kenneth Albanowski <kenalba@google.com>
Code-Coverage: Henry Barnor <hbarnor@chromium.org>
Commit-Queue: Harry Cutts <hcutts@chromium.org>
diff --git a/src/interpreter_unittest.cc b/src/interpreter_unittest.cc
index e0d1cff..ff5e785 100644
--- a/src/interpreter_unittest.cc
+++ b/src/interpreter_unittest.cc
@@ -75,9 +75,8 @@
TEST(InterpreterTest, SimpleTest) {
PropRegistry prop_reg;
- InterpreterTestInterpreter* base_interpreter =
- new InterpreterTestInterpreter(&prop_reg);
- base_interpreter->SetEventLoggingEnabled(true);
+ InterpreterTestInterpreter base_interpreter(&prop_reg);
+ base_interpreter.SetEventLoggingEnabled(true);
MetricsProperties mprops(&prop_reg);
HardwareProperties hwprops = {
@@ -94,19 +93,19 @@
.is_haptic_pad = 0,
};
- TestInterpreterWrapper wrapper(base_interpreter, &hwprops);
+ TestInterpreterWrapper wrapper(&base_interpreter, &hwprops);
- base_interpreter->bool_prop_.val_ = 1;
- base_interpreter->double_prop_.val_ = 1;
- base_interpreter->int_prop_.val_ = 1;
- base_interpreter->string_prop_.val_ = "x";
+ base_interpreter.bool_prop_.val_ = 1;
+ base_interpreter.double_prop_.val_ = 1;
+ base_interpreter.int_prop_.val_ = 1;
+ base_interpreter.string_prop_.val_ = "x";
//if (prop_reg)
- // prop_reg->set_activity_log(&(base_interpreter->log_));
+ // prop_reg->set_activity_log(&(base_interpreter.log_));
char interpreter_name[] = "InterpreterTestInterpreter";
- base_interpreter->expected_interpreter_name_ = interpreter_name;
- base_interpreter->return_value_ = Gesture(kGestureMove,
+ base_interpreter.expected_interpreter_name_ = interpreter_name;
+ base_interpreter.return_value_ = Gesture(kGestureMove,
0, // start time
1, // end time
-4, // dx
@@ -119,39 +118,38 @@
HardwareState hardware_state = make_hwstate(200000, 0, 1, 1, &finger_state);
stime_t timeout = NO_DEADLINE;
- base_interpreter->expected_hwstate_ = &hardware_state;
+ base_interpreter.expected_hwstate_ = &hardware_state;
Gesture* result = wrapper.SyncInterpret(hardware_state, &timeout);
- EXPECT_TRUE(base_interpreter->return_value_ == *result);
+ EXPECT_TRUE(base_interpreter.return_value_ == *result);
ASSERT_GT(timeout, 0);
stime_t now = hardware_state.timestamp + timeout;
timeout = NO_DEADLINE;
result = wrapper.HandleTimer(now, &timeout);
- EXPECT_TRUE(base_interpreter->return_value_ == *result);
+ EXPECT_TRUE(base_interpreter.return_value_ == *result);
ASSERT_LT(timeout, 0);
- EXPECT_EQ(1, base_interpreter->interpret_call_count_);
- EXPECT_EQ(1, base_interpreter->handle_timer_call_count_);
+ EXPECT_EQ(1, base_interpreter.interpret_call_count_);
+ EXPECT_EQ(1, base_interpreter.handle_timer_call_count_);
// Now, get the log
- string initial_log = base_interpreter->Encode();
+ string initial_log = base_interpreter.Encode();
// Make a new interpreter and push the log through it
PropRegistry prop_reg2;
- InterpreterTestInterpreter* base_interpreter2 =
- new InterpreterTestInterpreter(&prop_reg2);
- base_interpreter2->SetEventLoggingEnabled(true);
- base_interpreter2->return_value_ = base_interpreter->return_value_;
- base_interpreter2->expected_interpreter_name_ = interpreter_name;
+ InterpreterTestInterpreter base_interpreter2(&prop_reg2);
+ base_interpreter2.SetEventLoggingEnabled(true);
+ base_interpreter2.return_value_ = base_interpreter.return_value_;
+ base_interpreter2.expected_interpreter_name_ = interpreter_name;
MetricsProperties mprops2(&prop_reg2);
ActivityReplay replay(&prop_reg2);
replay.Parse(initial_log);
- base_interpreter2->expected_hwstate_ = &hardware_state;
+ base_interpreter2.expected_hwstate_ = &hardware_state;
- replay.Replay(base_interpreter2, &mprops2);
- string final_log = base_interpreter2->Encode();
+ replay.Replay(&base_interpreter2, &mprops2);
+ string final_log = base_interpreter2.Encode();
EXPECT_EQ(initial_log, final_log);
- EXPECT_EQ(1, base_interpreter2->interpret_call_count_);
- EXPECT_EQ(1, base_interpreter2->handle_timer_call_count_);
+ EXPECT_EQ(1, base_interpreter2.interpret_call_count_);
+ EXPECT_EQ(1, base_interpreter2.handle_timer_call_count_);
}
class InterpreterResetLogTestInterpreter : public Interpreter {
@@ -168,10 +166,9 @@
TEST(InterpreterTest, ResetLogTest) {
PropRegistry prop_reg;
- InterpreterResetLogTestInterpreter* base_interpreter =
- new InterpreterResetLogTestInterpreter();
- base_interpreter->SetEventLoggingEnabled(true);
- TestInterpreterWrapper wrapper(base_interpreter);
+ InterpreterResetLogTestInterpreter base_interpreter;
+ base_interpreter.SetEventLoggingEnabled(true);
+ TestInterpreterWrapper wrapper(&base_interpreter);
FingerState finger_state = {
// TM, Tm, WM, Wm, Press, Orientation, X, Y, TrID
@@ -180,24 +177,23 @@
HardwareState hardware_state = make_hwstate(200000, 0, 1, 1, &finger_state);
stime_t timeout = NO_DEADLINE;
wrapper.SyncInterpret(hardware_state, &timeout);
- EXPECT_EQ(base_interpreter->log_->size(), 1);
+ EXPECT_EQ(base_interpreter.log_->size(), 1);
wrapper.SyncInterpret(hardware_state, &timeout);
- EXPECT_EQ(base_interpreter->log_->size(), 2);
+ EXPECT_EQ(base_interpreter.log_->size(), 2);
// Assume the ResetLog property is set.
- base_interpreter->Clear();
- EXPECT_EQ(base_interpreter->log_->size(), 0);
+ base_interpreter.Clear();
+ EXPECT_EQ(base_interpreter.log_->size(), 0);
wrapper.SyncInterpret(hardware_state, &timeout);
- EXPECT_EQ(base_interpreter->log_->size(), 1);
+ EXPECT_EQ(base_interpreter.log_->size(), 1);
}
TEST(InterpreterTest, LoggingDisabledByDefault) {
PropRegistry prop_reg;
- InterpreterResetLogTestInterpreter* base_interpreter =
- new InterpreterResetLogTestInterpreter();
- TestInterpreterWrapper wrapper(base_interpreter);
+ InterpreterResetLogTestInterpreter base_interpreter;
+ TestInterpreterWrapper wrapper(&base_interpreter);
FingerState finger_state = {
// TM, Tm, WM, Wm, Press, Orientation, X, Y, TrID
@@ -206,102 +202,98 @@
HardwareState hardware_state = make_hwstate(200000, 0, 1, 1, &finger_state);
stime_t timeout = NO_DEADLINE;
wrapper.SyncInterpret(hardware_state, &timeout);
- EXPECT_EQ(base_interpreter->log_->size(), 0);
+ EXPECT_EQ(base_interpreter.log_->size(), 0);
wrapper.SyncInterpret(hardware_state, &timeout);
- EXPECT_EQ(base_interpreter->log_->size(), 0);
+ EXPECT_EQ(base_interpreter.log_->size(), 0);
}
TEST(InterpreterTest, EventDebugLoggingEnableTest) {
- InterpreterResetLogTestInterpreter* base_interpreter =
- new InterpreterResetLogTestInterpreter();
+ InterpreterResetLogTestInterpreter base_interpreter;
- base_interpreter->SetEventDebugLoggingEnabled(0);
- EXPECT_EQ(base_interpreter->GetEventDebugLoggingEnabled(), 0);
+ base_interpreter.SetEventDebugLoggingEnabled(0);
+ EXPECT_EQ(base_interpreter.GetEventDebugLoggingEnabled(), 0);
using EventDebug = ActivityLog::EventDebug;
- base_interpreter->EventDebugLoggingEnable(EventDebug::HardwareState);
- EXPECT_EQ(base_interpreter->GetEventDebugLoggingEnabled(),
+ base_interpreter.EventDebugLoggingEnable(EventDebug::HardwareState);
+ EXPECT_EQ(base_interpreter.GetEventDebugLoggingEnabled(),
1 << static_cast<int>(EventDebug::HardwareState));
- base_interpreter->EventDebugLoggingDisable(EventDebug::HardwareState);
- EXPECT_EQ(base_interpreter->GetEventDebugLoggingEnabled(), 0);
+ base_interpreter.EventDebugLoggingDisable(EventDebug::HardwareState);
+ EXPECT_EQ(base_interpreter.GetEventDebugLoggingEnabled(), 0);
}
TEST(InterpreterTest, LogHardwareStateTest) {
PropRegistry prop_reg;
- InterpreterResetLogTestInterpreter* base_interpreter =
- new InterpreterResetLogTestInterpreter();
+ InterpreterResetLogTestInterpreter base_interpreter;
FingerState fs = { 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 3.0, 4.0, 22, 0 };
HardwareState hs = make_hwstate(1.0, 0, 1, 1, &fs);
- base_interpreter->SetEventLoggingEnabled(false);
- base_interpreter->SetEventDebugLoggingEnabled(0);
+ base_interpreter.SetEventLoggingEnabled(false);
+ base_interpreter.SetEventDebugLoggingEnabled(0);
- base_interpreter->LogHardwareStatePre(
+ base_interpreter.LogHardwareStatePre(
"InterpreterTest_LogHardwareStateTest", hs);
- EXPECT_EQ(base_interpreter->log_->size(), 0);
+ EXPECT_EQ(base_interpreter.log_->size(), 0);
- base_interpreter->LogHardwareStatePost(
+ base_interpreter.LogHardwareStatePost(
"InterpreterTest_LogHardwareStateTest", hs);
- EXPECT_EQ(base_interpreter->log_->size(), 0);
+ EXPECT_EQ(base_interpreter.log_->size(), 0);
using EventDebug = ActivityLog::EventDebug;
- base_interpreter->SetEventLoggingEnabled(true);
- base_interpreter->EventDebugLoggingEnable(EventDebug::HardwareState);
+ base_interpreter.SetEventLoggingEnabled(true);
+ base_interpreter.EventDebugLoggingEnable(EventDebug::HardwareState);
- base_interpreter->LogHardwareStatePre(
+ base_interpreter.LogHardwareStatePre(
"InterpreterTest_LogHardwareStateTest", hs);
- EXPECT_EQ(base_interpreter->log_->size(), 1);
+ EXPECT_EQ(base_interpreter.log_->size(), 1);
- base_interpreter->LogHardwareStatePost(
+ base_interpreter.LogHardwareStatePost(
"InterpreterTest_LogHardwareStateTest", hs);
- EXPECT_EQ(base_interpreter->log_->size(), 2);
+ EXPECT_EQ(base_interpreter.log_->size(), 2);
}
TEST(InterpreterTest, LogGestureTest) {
PropRegistry prop_reg;
- InterpreterResetLogTestInterpreter* base_interpreter =
- new InterpreterResetLogTestInterpreter();
+ InterpreterResetLogTestInterpreter base_interpreter;
Gesture move(kGestureMove, 1.0, 2.0, 773, 4.0);
- base_interpreter->SetEventLoggingEnabled(false);
- base_interpreter->SetEventDebugLoggingEnabled(0);
- base_interpreter->LogGestureConsume("InterpreterTest_LogGestureTest", move);
- EXPECT_EQ(base_interpreter->log_->size(), 0);
- base_interpreter->LogGestureProduce("InterpreterTest_LogGestureTest", move);
- EXPECT_EQ(base_interpreter->log_->size(), 0);
+ base_interpreter.SetEventLoggingEnabled(false);
+ base_interpreter.SetEventDebugLoggingEnabled(0);
+ base_interpreter.LogGestureConsume("InterpreterTest_LogGestureTest", move);
+ EXPECT_EQ(base_interpreter.log_->size(), 0);
+ base_interpreter.LogGestureProduce("InterpreterTest_LogGestureTest", move);
+ EXPECT_EQ(base_interpreter.log_->size(), 0);
using EventDebug = ActivityLog::EventDebug;
- base_interpreter->SetEventLoggingEnabled(true);
- base_interpreter->EventDebugLoggingEnable(EventDebug::Gesture);
- base_interpreter->LogGestureConsume("InterpreterTest_LogGestureTest", move);
- EXPECT_EQ(base_interpreter->log_->size(), 1);
- base_interpreter->LogGestureProduce("InterpreterTest_LogGestureTest", move);
- EXPECT_EQ(base_interpreter->log_->size(), 2);
+ base_interpreter.SetEventLoggingEnabled(true);
+ base_interpreter.EventDebugLoggingEnable(EventDebug::Gesture);
+ base_interpreter.LogGestureConsume("InterpreterTest_LogGestureTest", move);
+ EXPECT_EQ(base_interpreter.log_->size(), 1);
+ base_interpreter.LogGestureProduce("InterpreterTest_LogGestureTest", move);
+ EXPECT_EQ(base_interpreter.log_->size(), 2);
}
TEST(InterpreterTest, LogHandleTimerTest) {
PropRegistry prop_reg;
- InterpreterResetLogTestInterpreter* base_interpreter =
- new InterpreterResetLogTestInterpreter();
+ InterpreterResetLogTestInterpreter base_interpreter;
using EventDebug = ActivityLog::EventDebug;
- base_interpreter->SetEventLoggingEnabled(true);
- base_interpreter->EventDebugLoggingEnable(EventDebug::HandleTimer);
+ base_interpreter.SetEventLoggingEnabled(true);
+ base_interpreter.EventDebugLoggingEnable(EventDebug::HandleTimer);
stime_t timeout = 10;
- base_interpreter->LogHandleTimerPre("InterpreterTest_LogHandleTimerTest",
+ base_interpreter.LogHandleTimerPre("InterpreterTest_LogHandleTimerTest",
0, &timeout);
- EXPECT_EQ(base_interpreter->log_->size(), 1);
+ EXPECT_EQ(base_interpreter.log_->size(), 1);
- base_interpreter->LogHandleTimerPost("InterpreterTest_LogHandleTimerTest",
+ base_interpreter.LogHandleTimerPost("InterpreterTest_LogHandleTimerTest",
0, &timeout);
- EXPECT_EQ(base_interpreter->log_->size(), 2);
+ EXPECT_EQ(base_interpreter.log_->size(), 2);
}
} // namespace gestures